Minecraftのサーバを某所LAN内に立ててみている (関連記事: Minecraft: マイクラサーバを多拠点利用するためのUDPポートフォワーディング [2022-11-04])。こどもが扱うNintendo Switchから接続するためにサーバの種類としては当初「Bedrock版」を選択したものの、自分のLinuxやmacOS環境から接続して遊べないことが致命的で悲しい。
良い解決方法はないのかと調べてみると、「Java版」サーバならば、パソコン (Linux, Mac, Windows) のJava版クライアントに加えて、Switchなどの統合版クライアントの両方から接続できるように実は拡張できるらしい。そこでごにょごにょやってみた。
今回行ったサーバ構築作業などを自分が後日思い出せるように、内容を簡単にメモしておきます。説明も簡素ですが、「こういうソフトウェアを使えばできるんだ」程度の情報として参考にはなるかと思います。
種別 | 名称 | 役割 |
---|---|---|
サーバの本体 | PaperMC | Minecraft Java版サーバの一種 |
サーバのplugin | Geyser | プロトコル変換を行ってJava版サーバへ統合版クライアントを接続可能にする |
サーバのplugin | Floodgate | Java版サーバへJava版アカウント無しで接続可能にする |
Minecraftサーバとしてここでは「PaperMC」を選択する。PaperMCの次のドキュメントの手順に沿って、Java版・統合版を跨ぐクロスプレイを可能にするサーバの構築作業を進める。
作業の見通しを良くするために、導入時に展開される全てのファイルではなく、以降の説明で操作対象になるファイルのみの階層構造を先に抜き出して書いておくと次の通り。
~/PaperMC/
+-- eula.txt
+-- paper.jar
+-- plugins/
+-- Geyser-Spigot.jar
+-- floodgate-spigot.jar
+-- server.properties
+-- world/
+-- datapacks/
+-- coordinates hud v1.2.3.zip (後述)
paper-1.19.2-270.jar
)paper.jar
に改名し、サーバ内の適当な新規ディレクトリに入れる (例: ~/PaperMC/
)$ cd ~/PaperMC/
$ java -Xms2G -Xmx2G -jar paper.jar --nogui
(snip)
You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
eula.txt
の内容を確認した後に、ファイルを編集して「eula=false」を「eula=true」へ変更する$ java -Xms2G -Xmx2G -jar paper.jar --nogui
(snip)
[XX:XX:XX INFO]: Done (11.157s)! For help, type "help"
[XX:XX:XX INFO]: Timings Reset
>
> stop
[XX:XX:XX INFO]: Stopping the server
(snip)
[XX:XX:XX INFO]: Closing Server
$
server.properties
やディレクトリplugins
などが自動生成されているplugins
内に保存する (SpigotはPaperMCと互換性があるマイクラサーバの一種)Geyser-Spigot.jar
: https://geysermc.org/ > 右上の「Download」 > 「Geyser-Spigot.jar」のリンク先floodgate-spigot.jar
: https://geysermc.org/ > 右上の「Floodgate」 > README.md本文中の「Download」 > 「floodgate-spigot.jar」のリンク先server.properties
を編集して「enforce-secure-profile=true」を「enforce-secure-profile=false」へ変更する$ java -Xms2G -Xmx2G -jar paper.jar --nogui
(snip)
[XX:XX:XX INFO]: Starting Minecraft server on *:25565
(snip)
[XX:XX:XX INFO]: [floodgate] Loading floodgate v2.2.0-SNAPSHOT (b73-4f36112)
[XX:XX:XX INFO]: [floodgate] Floodgateの起動に 357ms かかりました。
(snip)
[XX:XX:XX INFO]: [Geyser-Spigot] Geyser を 0.0.0.0 で開始しました: 19132
(snip)
>
この段階まで進めば、PaperMCで構築した今回のMinecraftサーバへ、次の2種類の接続が可能になっているはず。Java版・統合版のそれぞれのクライアントから、「マルチプレイ」でのサーバ接続が行えるかを確認してみよう。
サーバ側のポート | 説明 |
---|---|
Java版サーバとしてのポート「25565/tcp」 | パソコン (Linux, Mac, Windows) のJava版クライアントがサーバ接続に使用 |
Bedrock版サーバとしてのポート「19132/udp」 | Nintendo Switchなどの統合版クライアントがサーバ接続に使用 |
なお、下記の写真のように、プレイヤー画面に現れる「チャットメッセージの安全性の確認ができません / このサーバーで送信されたメッセージは変更される場合があり、元のメッセージを反映していない可能性があります。」という警告表示は、PaperMCのサーバ設定を「enforce-secure-profile=false」と変更したことによるものだ。
種別 | 名称 | 役割 |
---|---|---|
サーバのdatapack | Coordinates HUD | Java版ワールドで座標等を常時表示する |
Redrock版サーバではプレイヤー画面に現在位置の座標を簡素なフォーマットで表示できていたが (コマンド: /gamerule showcoordinates true
)、Java版サーバにおいては標準状態では表示できないらしい。そこで「Coordinates HUD」というdatapackを導入する。手順は次の通り。
VanillaTweaks_d765342_UNZIP_ME.zip
coordinates hud v1.2.3.zip
) をPaperMCサーバの~/PaperMC/world/datapacks/
に置く[XX:XX:XX INFO]: Found new data pack file/coordinates hud v1.2.3.zip, loading it automatically
/trigger ch_toggle
を入力するIoT絡みの一種のお遊びとして、某氏と共作して、某所LAN内のMinecraftサーバにログイン中のプレイヤーが1名以上になっている間は、某所にある上記写真の「ON AIR」ランプが点灯するようにした。
どのような仕組みを使っているかというと、下記1のツール「itzg/mc-monitor」にてオンラインのプレイヤー数をMinecraftサーバから定期的に読み取り、その数値変化に応じて、改造した「ON AIR」ランプの中に仕込まれた下記2の「M5Stack ATOM Lite」をクラウド経由で制御し、ランプを点灯・消灯する流れとなっている。ATOM Liteを仕込む改造の部分は自分はまだよく把握しておらず、今後の研究課題だ。
ALFOTO フロムシード(fromseed) LED アルフォト オンエアー ライト ネオンライト アメリカン 雑貨 インテリア ネオンサイン おしゃれ
フロムシード(fromseed)