Minecraftで統合版からも参加できるJava版鯖を建てる

みなさまこんにちは、今回は統合版からも参加が可能なJava版のプラグインサーバーを建ててみます。通常Java版はJava版、統合版は統合版のサーバーにしか入ることができませんが、プラグインを使用すれば統合版とJava版のクロスプレイを行うことができるのです。

環境

解説に使用する環境はUbuntu22.04.4LTSでOpenJDK19のインストールが既に完了しているものとします。

導入手順

まず最初に一つのサーバー単体に導入する場合はJava版のプラグインサーバー(SpigotMC、PaperMC等)を用意します。
プロキシサーバー(BungeeCord、Velocity等)に導入する場合はプロキシサーバーを用意しバックエンドのサーバーには今回使用するプラグインを導入はせず、プロキシのみに導入するものとします。

サーバーの構築ができたら今回の要でもあるプラグインGeyserFloodgateをダウンロードします。
Paper/Spigotサーバーの場合はGeyser-SpigotとFloodgate-Spigotを、
プロキシサーバーでBungeeCord/Waterfallの場合はGeyser-BungeeCordとFloodgate-Bungee、Velocityの場合はGeyser-VelocityとFloodgate-Velocityをダウンロードしてください。

ダウンロードできたら
Paper/SpigotサーバーはPluginsフォルダーにダウンロードしたGeyser-SpigotとFloodgate-Spigotを入れて起動
プロキシサーバーはプロキシのPluginsフォルダーにのみダウンロードしたGeyser-BungeeCord/Geyser-VelocityとFloodgate-Bungee/Floodgate-Velocityを入れて起動します。

起動後Geyserのconfig.ymlが生成されたらそのファイルを編集します。

Geyserのconfig.ymlの解説

bedrock項目

設定の名前デフォルト備考
address0.0.0.0使用するIPアドレス。特に変更は必要ない。
port19132使用するポート。通常はデフォルトの統合版ポートの19132でよい。
clone-remote-portfalseJava版で使用するポートと同じポートで統合版接続を行うかの設定。通常はfalseで構わない。
motd1“Geyser”Motd(サーバーリストに表示される文字列)の一列目。
passthrough-motdがtrueに設定されてるときは設定しても反映されない。
motd2“Another Geyser server.”motdの二列目。同じくpassthrough-motdがtrueの場合は反映されない。
server-name“Geyser”サーバーリストに表示されるときのサーバー名。
compression-level6圧縮レベル。
enable-proxy-protocolfalseproxy-protocolを使用するときの設定。通常時はfalseに設定しておく。
proxy-protocol-whitelisted-ips[ “127.0.0.1”, “172.18.0.0/16”, “https://example.com/whitelist.txt” ]proxy-protocolを使用しているときに許可するIPアドレスを定義。デフォルトではコメントアウトされている。

remote項目

設定の名前デフォルト備考
addressautoJava版サーバーのアドレスを定義。autoは自動で設定してくれる。
port25565Java版のサーバーのポート。デフォルトポート以外で設定している場合はそのポートに変更。
auth-typeonlineoffline, online, floodgateの3つの設定候補から適した設定を選ぶ。ただし、offlineはアカウント認証が行われないため危険である。onlineの場合はJava版のアカウント認証が必要となるため、この解説では必然的にfloodgateに変更すべきである。
allow-password-authenticationtrueパスワード認証を使用するかの設定。auth-typeがonlineの場合にのみ有効。
use-proxy-protocolfalse導入しているサーバーでproxy-protocolを設定している場合にのみtrueに設定。
forward-hostnamefalseプロキシに導入していてかつforced hostsを使用している場合にのみ設定が反映される。

その他の設定

設定の名前デフォルト備考
floodgate-key-filekey.pemfloodgateを使用時に秘密鍵のファイル名を定義。通常は変更しない。
saved-user-logins– ThisExampleUsernameShouldBeLongEnoughToNeverBeAnXboxUsername
– ThisOtherExampleUsernameShouldAlsoBeLongEnough
auth-typeがonlineのときのみ有効
Java版アカウント認証を保存する必要のある統合版プレイヤーのリストを保存。
pending-authentication-timeout120認証のタイムアウト(秒)を設定。
command-suggestionstrueコマンド候補を有効にするかの設定。
passthrough-motdtrue統合版のサーバーリストにJava版サーバーのmotdを転送するかの設定。
passthrough-player-countstrue統合版のサーバーリストにJava版サーバーのプレイヤー人数を転送するかの設定。
legacy-ping-passthroughfalseLEGACY pingを使用するかの設定。
ping-passthrough-interval3ping passthroughの間隔を指定。
forward-player-pingfalseプレイヤーのpingをサーバーに転送するかの設定。
有効にすると統合版ユーザーのpingはより正確になるが、タイムアウトしやすくなる可能性もある。
max-players100サーバーへ接続可能な最大ユーザー数を定義。
debug-modefalseコンソールへデバッグメッセージを送信するかの設定。
通常時はfalseで問題ない。
show-cooldowntitleクールダウンの表示をどうするかの設定。
title, actionbar, falseの3つのうちから設定可能。
show-coordinatestrue統合版プレイヤーに座標を表示するかの設定。
disable-bedrock-scaffoldingfalse統合版プレイヤーが足場スタイルのブリッジングを無効化するかの設定。
emote-offhand-workaround“disabled”設定をしている場合は統合版ユーザーがエモートを実行するとJava版のオフハンド機能と同様にオフハンドとメインハンドのアイテムが入れ替わる。disabledで無効、no-emotesでエモートを表示せずにアイテムの入れ替えを行う。emotes-and-offhandでエモートを表示と同時にアイテムの入れ替えを行う。
default-locateen_us言語を設定。デフォルトでコメントアウトされている。
cache-images0インターネットからのダウンロードをする手間を省略するために画像をディスクにキャッシュする日数を定義。0で無効。
allow-custom-skullstrueカスタムスカルを表示するかの設定。
max-visible-custom-skulls128プレイヤーごとに表示されるカスタムスカルの最大数。値を増やすと性能の低いデバイスでパフォーマンスが低下する恐れがある。-1に設定することですべてのカスタムスカルが表示される。
custom-skull-render-distance32カスタムスカルが表示されるプレイヤーのブロック単位での半径を定義。
add-non-bedrock-itemstrue統合版に存在しないJava版アイテムを追加するかの設定。
above-bedrock-nether-buildingfalse統合版にてネザーのY座標127以上に建築できない仕様をJava版の仕様に合わせ、Y座標127以上でも建築できるようにする設定。
force-resource-packstrueユーザーにリソースパックの適応を強制するかの設定。
xbox-achievements-enabledfalseXboxの実績のロックの解除をする。有効にするとサーバー内で統合版ユーザーはコマンドを使用できなくなる。
log-player-ip-addressestrue統合版ユーザーがサーバーにログインしたときにIPアドレスをログに出力するかの設定。
notify-on-new-bedrock-updatetrueGeyserサポートしていない新しいバージョンに対応したときにコンソールとオペレーターに通知するかの設定。
unusable-space-blockminecraft:barrier統合版ユーザーがインベントリで使用できないスロットをマークするために使用するアイテム。
metricsenabled: true
uuid: generateduuid
bStatsで統計データを追跡するかの設定。

高度な設定

設定の名前デフォルト備考
scoreboard-packet-threshold201秒あたりに何個のスコアボードパケットを処理するかの設定。
enable-proxy-connectionsfalseProxyPassとWaterdogからの接続を許可するかの設定。
mtu1400MTUの設定。
use-direct-connectiontrueTCP接続を作成せずにJava版サーバーに直接接続するかどうかの設定。
disable-compressiontrueGeyserが統合版ユーザーの圧縮を無効化するかどうかの設定。
config-version4設定ファイルのバージョン。絶対に変更してはいけない。

※主による独自の解釈及び翻訳のため正確ではない可能性があります。あらかじめご了承ください。

今回編集する部分はauth-typeという項目で、onlineからfloodgateに変更します。
変更後サーバーの再起動を行ってください。

以上で統合版ユーザーがJava版サーバーに接続するための準備が整いました。
最後にファイアウォールでUDPの19132(デフォルト、Geyserのconfig.ymlで使用ポートを変更した場合はそのポート番号)を許可し、また外部からの接続に対応させる場合はそのポートを開放してください。

Geyserとは…

A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition.

GitHub – GeyserMC/Geyser

上記のように、Minecraft: Bedrock EditionがMinecraft: Java Edition サーバーに参加できるようにするブリッジ/プロキシです。

スキンの反映

Geyserで接続してきたプレイヤーのスキンが反映されない場合の対処法はGeyserSkinManagerを使用することです。
Spigot/Paperサーバーの場合はGeyserSkinManager-Spigotをプラグインフォルダーに入れ、config.ymlのforce-show-skinsをtrueに設定してください。
BungeeCord/Velocityの場合はGeyserSkinManager-BungeeCordをプロキシサーバーと配下のサーバーに導入してconfig.ymlのforce-show-skinsをtrueに設定してください。

Tags:

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です