Jan 3, 2025
Jan 7, 2025
N/A Views
MD

Minecraft(Java Edition)の醍醐味であるMODを導入してみます。今回は定番のForgeを試します。

前回の記事同様に、Kubernetesクラスタにはkindを使用します。本記事は、前記事の作業を一通り行い、一旦Minecraft Serverをアンインストールした時点から作業を開始する前提です。

目次

Minecraft Serverのインストール

使いたいMODがMinecraft 1.21系未対応で、1.20.1まで対応しているものが多かったため、本記事ではMinecraftのバージョンは1.20.1にします。

次のhelm-values.yamlを用意します。

---
minecraftServer:
  eula: "TRUE"
  type: "FORGE"
  version: "1.20.1"
  difficulty: easy
  gameMode: creative
  overrideServerProperties: true
  serviceType: LoadBalancer
  loadBalancerIP: 192.168.107.222
  externalTrafficPolicy: Local
  motd: "Hello Minecraft on Kind!"
  memory: 4096M
  rcon:
    enabled: true
resources:
  requests:
    memory: 4.5Gi
persistence:
  dataDir:
    enabled: true
    Size: 8Gi
---

Note

loadBalancerIPは環境に合わせて変更してください。

次のコマンドでForgeインストール済みのMinecraft Serverをデプロイします。

helm upgrade --install \
  -n minecraft minecraft itzg/minecraft \
  -f helm-values.yaml \
  --create-namespace \
  --wait

クライアント側でForgeのインストール

https://files.minecraftforge.net/net/minecraftforge/forge/index_1.20.1.html

MC 1.20.1の"Download Recommended"の"Installer"をクリックします。

"SKIP"をクリックするとjarのダウンロードが始まります。

javaコマンドでインストーラーを起動します。

java -jar forge-1.20.1-47.3.0-installer.jar

Note

javaコマンドがない場合は、Javaのインストールが必要です。
どのディストリビューションでも良いですが、個人的にはBellsoft Liberica JDKがおすすめです。

インストーラーが起動したら、"Install client"を選択して、"OK"をクリック。

しばらくするとインストールが完了します。

MinecraftのLauncherを立ち上げると、起動構成が追加され"forge"が表示されるようになります。

"起動構成"タブに移動し、自動で追加された構成の名前を変えておきます。ここではforge 1.20.1とします。

"プレイ"タブに戻って、"プレイ"ボタンをクリックします。

ホーム画面に"Mod"ボタンが表示されます。

"Mod"ボタンをクリックすると、初期状態はMinecraft自体とMod LoaderであるForge自体が表示されます。

ホームに戻って、"マルチプレイ"をクリックし、kindのサーバーを選択します。

Note

サーバーの追加は前記事で実施済みです。

初期状態で特に問題なくServerに入れることを確認します。

Modの導入

Forgeの準備がサーバー、クライアントともにできたので、早速Modを導入します。

"Hostile Mobs and Girls" Modの導入

次の記事を参考に、Hostile Mobs and GirlsModを導入してみます。

https://games.xserver.ne.jp/minecraft-media/mod-server/

次のページから"hmag-forge-mc1.20.1-9.0.25"をダウンロードします。

https://www.curseforge.com/minecraft/mc-mods/hostile-mobs-and-girls/files/all?page=1&pageSize=20

"Download file"をクリックすると、hmag-forge-mc1.20.1-9.0.25.jarがダウンロードされます。

サーバー側の導入作業

ダウンロードしたjarファイルをサーバー側の/data/modsディレクトリ直下にコピーします。

次のように、今回はkubectl cpコマンドを使用します。

POD_NAME=$(kubectl get pod -n minecraft -l app.kubernetes.io/instance=minecraft-minecraft -ojsonpath='{.items[0].metadata.name}')
kubectl cp hmag-forge-mc1.20.1-9.0.25.jar minecraft/${POD_NAME}:/data/mods/

コピー後、次のコマンドでjarファイルが配置されていることを確認してください。

$ kubectl exec -n minecraft $POD_NAME -- ls -lah /data/mods/
total 1.9M
drwxrwxr-x 1 minecraft 3000   60 Jan  3 13:45 .
drwxrwxrwx 1 root      root  530 Jan  3 13:45 ..
-rw-r--r-- 1 minecraft 3000 1.9M Jan  3 13:45 hmag-forge-mc1.20.1-9.0.25.jar

サーバーを再起動します。

kubectl rollout restart deployment -n minecraft minecraft-minecraft 

これでサーバー側は準備完了です。

クライアント側の導入作業

クライアントにもjarファイルをコピーする必要があります。"起動構成"タブでforgeのインストールフォルダを確認します。その直下のmodsディレクトリにjarをコピーします。

デフォルトの設定では~/Library/Application\ Support/minecraft/modsになっているはずです。
その場合は、次のコマンドでjarをコピーしてください。

cp hmag-forge-mc1.20.1-9.0.25.jar ~/Library/Application\ Support/minecraft/mods/

MinecraftをLauncherから立ち上げ直し、再度"プレイ"ボタンをクリックし、"Mod"ボタンを押して、導入されたModを確認してください。
次の図のように"Hostile Mobs and Girls"が表示されればOKです。

では、マルチプレイでServerに接続します。インベントリを開くと、"Hostile Mobs and Girls"タブが増えていることがわかります。

このタブの中から何か一つスポーンエッグを選択します。ここでは"ジャイアントミイラ"を選択しました。

スポーンエッグを使用し、"ジャイアントミイラ"がスポーンされることを確認してください。

"Chucky" Mod

次はホラーモンスターのChuckyを登場させてみます。
次のModが見つかりました。ここでも1.20.1用のMod(chucky-1.0.1-forge-1.20.1.jar)をダウンロードします。

https://www.curseforge.com/minecraft/mc-mods/chucky/files/all?page=1&pageSize=20

このModはGeckoLibというMod共通のライブラリを使用しており、GeckoLib Modも合わせて導入しないとChuckyのロードに失敗します。
GeckoLibの1.20.1/Forge用のMod (geckolib-forge-1.20.1-4.7.jar)もダウンロードしてください。

https://www.curseforge.com/minecraft/mc-mods/geckolib/files/all?page=1&pageSize=20

Warning

GeckoLibを導入せずにChuckyだけを導入しようとすると次のようなエラーが表示されます。

java.lang.NoClassDefFoundError: software/bernie/geckolib/animatable/GeoEntity
サーバー側の導入作業

先程と同様にkubectl cpコマンドを使用して、ModのjarファイルをServer上の/data/modsディレクトリ直下にコピーします。

POD_NAME=$(kubectl get pod -n minecraft -l app.kubernetes.io/instance=minecraft-minecraft -ojsonpath='{.items[0].metadata.name}')
kubectl cp chucky-1.0.1-forge-1.20.1.jar minecraft/${POD_NAME}:/data/mods/
kubectl cp geckolib-forge-1.20.1-4.7.jar minecraft/${POD_NAME}:/data/mods/

コピー後、次のコマンドでjarファイルが配置されていることを確認してください。

$ kubectl exec -n minecraft $POD_NAME -- ls -lah /data/mods/
total 3.1M
drwxrwxr-x 1 minecraft 3000  176 Jan  3 14:18 .
drwxrwxrwx 1 root      root  556 Jan  3 14:18 ..
-rw-r--r-- 1 minecraft 3000 265K Jan  3 14:18 chucky-1.0.1-forge-1.20.1.jar
-rw-r--r-- 1 minecraft 3000 981K Jan  3 14:18 geckolib-forge-1.20.1-4.7.jar
-rw-r--r-- 1 minecraft 3000 1.9M Jan  3 13:45 hmag-forge-mc1.20.1-9.0.25.jar

サーバーを再起動します。

kubectl rollout restart deployment -n minecraft minecraft-minecraft 

これでサーバー側は準備完了です。

クライアント側の導入作業

クライアントにもjarファイルをコピーする必要があります。先程と同様にjarファイルをコピーします。

cp chucky-1.0.1-forge-1.20.1.jar ~/Library/Application\ Support/minecraft/mods/
cp geckolib-forge-1.20.1-4.7.jar ~/Library/Application\ Support/minecraft/mods/

MinecraftをLauncherから立ち上げ直し、再度"プレイ"ボタンをクリックしてください。

ホーム画面で"Mod"ボタンを押して、導入されたModを確認してください。 次の図のように"Chucky"と"GeckoLib 4"が表示されればOKです。

Chuckyのスポーンエッグが見当たらなかったので、summonコマンドでChuckyを召喚します。

Note

多分、"スポーンエッグ"タブの末尾にある

現在のユーザーがsummonコマンドを使えるようにするために、ユーザーにOperator権限を設定します。

ここでは、Server上のrcon-cliを使用して、op ユーザー名コマンドを実行します。ユーザー名を自分の名前に変え、次のコマンドを実行してください。

POD_NAME=$(kubectl get pod -n minecraft -l app.kubernetes.io/instance=minecraft-minecraft -ojsonpath='{.items[0].metadata.name}')
kubectl exec -n minecraft $POD_NAME -- rcon-cli op ユーザー名

Operator権限が付与されたら、Minecraftのプレイ画面で/summon chucky:chuckyコマンドを実行してください。

Chuckyが出現しました!


Forgeを使ったModサーバーをKubernetes上にインストールしました。他のModも試していきたいです。

ちなみにサーバー上へのModの配置はkubectl cpコマンドを使わないくて、ダウンロードリンクを次のようにhelm-value.yamlに記述しても良いです。
運用する際はこちらの方が便利でしょう。

---
minecraftServer:
  # ...
  modUrls:
  - https://mediafilez.forgecdn.net/files/6045/363/hmag-forge-mc1.20.1-9.0.25.jar
  - https://mediafilez.forgecdn.net/files/5834/748/chucky-1.0.1-forge-1.20.1.jar
  - https://mediafilez.forgecdn.net/files/6027/567/geckolib-forge-1.20.1-4.7.jar
# ...
---
Found a mistake? Update the entry.
Share this article: