マイクラ鯖のロビーが、ただの平らな場所だったので作り直した。
配布ワールドを使う
「ゲートが4つあって、開けた感じ」のロビーを探して、Planet Minecraftで配布されている Glorious Downfall(作者:Springstof)にした。空に浮かぶ島がいくつもあって、ゲートは4つ。サーバーで使ってよく、条件は作者のクレジットを消さないこと、再配布しないこと。
ワールドフォルダごと配られているので、ロビーの world を丸ごと入れ替えた。
docker compose stop lobby
mv lobby/world lobby/world.old
mv /tmp/lobby-new lobby/world
chown -R 1000:1000 lobby/world
2016年のワールドなので、初回の起動で新しい形式への変換が走る。少し待てば普通に入れた。
難易度がピースフルにならない
compose.yml に DIFFICULTY: peaceful を書いたのに、モンスターが出る設定のままだった。難易度はワールドのデータ(level.dat)にも保存されていて、配布ワールドの設定が優先されていたのが原因。コマンドで変えれば、ワールドに保存される。
docker exec lobby rcon-cli difficulty peaceful
ゲートからサバイバルへ
ゲートは Advanced Portals というプラグインで、Velocity経由でほかのサーバーに飛ばすようにした。itzgのイメージなら、環境変数に書くだけで入る。
MODRINTH_PROJECTS: advanced-portals
ゲームの中で範囲を選んで、行き先のサーバー名を指定する。
/portal wand
/portal create name:survival bungee:survival
残りの3つのゲートは、新しいサーバーができたらつなぐ。
統合版はフレンド一覧から
Geyserを入れているので統合版でも入れるけど、Xbox・Switch・PSの統合版は、アドレスを入れてサーバーに入る画面が使えないことが多い。
そこで MCXboxBroadcast を入れた。サーバー専用のMicrosoftアカウントがオンラインのフレンドとして見えるようになり、そのアカウントをフレンドに追加すると「参加可能なフレンド」からサーバーに入れる。Geyserの拡張機能(extension)として入れるので、Velocityに入っているGeyserの extensions フォルダにjarを置くだけ。
設定でハマりやすいのは、配信するアドレス。auto のままだとDockerの中のアドレスが配信されて、外のフレンドが入れない。
session:
remote-address: mc.ch1w4.com
remote-port: 19132
配信用のアカウントは24時間オンラインになるうえ、規約的にグレーな動きをするので、メインとは別のアカウントを作って使っている。ログインが切れたらDiscordに通知が来るようにもした。