家族で一緒にMinecraftをプレイするため、自宅に「Java版」と「統合版」でマルチプレイできるMinecraftサーバを立てました。
マルチプレイ可能なMinecraftサーバの概要
「Java版」と「統合版」は本来マルチプレイはできません。
サーバは「Java版」で作成します。
公式のサーバソフトではなく、より高性能でプラグインを使って機能を拡張できる「Spigot」というサーバソフトを使います。
ただ、こののままでは「統合版」から接続できないので、サーバに以下のプラグインを導入し統合版から接続できるようにしました。
統合版パケットとJava版パケットを相互に変換するプラグインです。
統合版からJava版に接続しようとすると、Java版アカウントがないため接続できません。
このプラグインは、Java版アカウントなしでJava版サーバへ接続できるようにします。
統合版から接続すると、スキンが反映されません。
そのため、みんな初期キャラの「スティーブ」で表示されてしまい、誰が誰かわかりづらくなってしまいます。
このプラグインを使うと、統合版で設定したスキンを反映できます。
Minecraftサーバの動作環境
私は、以下のサーバにMinecraftサーバを構築しました。
マシン | HP Z230 SFF Workstation |
OS | Ubuntu Server 20.0.4 |
CPU | Intel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz(4コア8スレッド) |
メモリ | 8GB |
ストレージ | 64GB(SSD) |
Java | openjdk-8-jdk(1.8.0_292) |
自宅のLANからのみ接続可能で、外部公開はしていません。
Minecraftサーバの構築方法
Minecraftサーバの構築方法を紹介します。
今回は、サーバ起動時に自動でMinecraftが立ち上がるようにするため、サービスとして起動するように設定します。
Javaインストール
以下のコマンドで、Javaがインストールされているかを確認します。
java -version
Javaがインストールされている場合、以下のように表示されます。
Javaがインストールされていない場合、以下のように表示されます。
Javaがインストールされていなかった場合、Javaをインストールします。
sudo apt install openjdk-8-jdk
Minecraftユーザーを作成する
Minecraftのサーバプログラムを実行する専用ユーザーを作成します。
sudo useradd -m -r -d /opt/minecraft minecraft
-m:create the user’s home directory
-r:create a system account
-d:home directory of the new account ※「/opt/minecraft」配下にminecraftのサーバープログラムを入れます。
Spigotのビルド
Minecraftのサーバソフトである「Spigot」は、著作権の問題から直接ダウンロードができず、BuildToolsを使って自分でビルドしなければなりません。
BuildToolsを格納するディレクトリを作成します。
sudo mkdir /opt/minecraft/BuildTools
「BuildTools」ディレクトリに移動します。
cd /opt/minecraft/BuildTools
最新のBuildToolsをダウンロードします。(ダウンロードページ)
sudo wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastStableBuild/artifact/target/BuildTools.jar
以下のコマンドで「BuildTools.jar」を作成します。
※「–rev」には、Minecraftのバージョンを指定します。
sudo java -Xmx1024M -jar BuildTools.jar --rev 1.16.5
正常にビルドされると、以下のように表示されます。
Minecraftのインストール
minecraftをインストールするディレクトリを作成します。
※今回は、「/opt/minecraft」の下に「survival」というディレクトリを作成しました。
sudo mkdir /opt/minecraft/survival
「survival」ディレクトリに移動します。
cd /opt/minecraft/survival/
BuildToolsで作成したjarファイルを「survival」ディレクトリにコピーします。
※コピーする際にファイル名を「spigot.jar」に変更しています。
sudo cp /opt/minecraft/BuildTools/spigot-1.16.5.jar /opt/minecraft/survival/spigot.jar
Minecraftを実行するためには、使用許諾に同意する必要があります。
使用許諾は、eula.txtが必要なため作成します。
sudo vi eula.txt
eula.txtに以下の一文を書き込みます。
eula=true
「minecraft」ユーザーで実行するため、「survival」ディレクトリの所有者を「minecraft」に変更します。
sudo chown -R minecraft /opt/minecraft/survival/
Minecraft systemd起動スクリプトの作成
minecraftをサービスとして起動するため、systemdの定義ファイルを作成します。
sudo vi /etc/systemd/system/minecraft@.service
以下の内容を書き込みます。
※「#」から始まる行はコメントです。なくても問題ありません。
[Unit] #ユニットの説明 Description=Minecraft Server: %i #ユニットが開始する順序を定義 #ネットワークが立ち上がった後に開始 After=network.target [Service] #作業ディレクトリを指定 WorkingDirectory=/opt/minecraft/%i #実行ユーザーを指定 User=minecraft Group=minecraft #プロセスが落ちたとき自動的に再起動 Restart=always #ユニット開始時のコマンド #マインクラフトを起動(割当メモリ2GB) ExecStart=/usr/bin/screen -DmS mc-%i /usr/bin/java -Xmx2G -jar spigot.jar nogui #ユニット終了時のコマンド #クライアントへメッセージ表示「SERVER SHUTTING DOWN IN 10 SECONDS. SAVING ALL MAPS...」 ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. SAVING ALL MAPS...\015"' #10秒待機 ExecStop=/bin/sleep 10 #save-all(サーバのデータを保存) ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "save-all"\015' #stop(サーバの停止) ExecStop=/usr/bin/screen -p 0 -S mc-%i -X eval 'stuff "stop"\015' [Install] #マルチユーザモード(コンソールログイン) WantedBy=multi-user.target
サービスを起動します。
sudo systemctl start minecraft@survival
起動したサービスのステータスを確認します。
⇒「active(running)」と表示されればOKです。
sudo systemctl status minecraft@survival
Minecraftのポートが開いていることを確認するため、nmapをインストールします。
sudo apt install nmap
Minecraftはデフォルトで「25565」ポートを使用します。
25565のポートが開いていることを確認します。
⇒以下の画像のように表示されればOKです。
nmap -p 25565 localhost
サーバを起動した際に、Minecraftサービスが自動起動するようにします。
⇒サーバを再起動して、minecraftサービスが自動で起動することを確認して下さい。
sudo systemctl enable minecraft@survival
クロスプレイ用プラグインのインストール
「Minecraftサーバ(Java版)」へ統合版から接続するため、以下のpluginをインストールします。
pluginsディレクトリに移動します。
cd /opt/minecraft/survival/plugins
「Geyser-Spigot.jar」をwgetコマンドでダウンロードします。
sudo wget https://ci.opencollab.dev/job/GeyserMC/job/Geyser/job/master/lastSuccessfulBuild/artifact/bootstrap/spigot/target/Geyser-Spigot.jar
「floodgate-bukkit.jar」をwgetコマンドでダウンロードします。
sudo wget https://ci.opencollab.dev/job/GeyserMC/job/Floodgate/job/master/lastSuccessfulBuild/artifact/bukkit/target/floodgate-bukkit.jar
「GeyserSkinManager-Spigot.jar」をwgetコマンドでダウンロードします。
sudo wget https://github.com/Camotoy/GeyserSkinManager/releases/download/1.4-SNAPSHOT/GeyserSkinManager-Spigot.jar
設定ファイル、ログ
Minecraftサーバの設定ファイル、ログは以下にあります。
設定変更やログを確認する場合は、以下を参照して下さい。
Minecraftサーバの設定ファイル | /opt/minecraft/survival/server.properties |
Geyser-Spigotの設定ファイル | /opt/minecraft/survival/plugins/Geyser-Spigot/config.yml |
floodgate-bukkitの設定ファイル | /opt/minecraft/survival/plugins/floodgate-bukkit/config.yml |
GeyserSkinManagerの設定ファイル | /opt/minecraft/survival/plugins/GeyserSkinManager/config.yml |
ログ | /opt/minecraft/survival/logs/latest.log |
クライアントからの接続方法
パソコンからマインクラフトサーバへ接続
「パソコン(Minecraft Java版)」からMinecraftサーバに接続します。
「マルチプレイ」をクリックします。
「サーバを追加」をクリックします。
以下を入力して、「完了」をクリックします。
サーバ名 | 任意の名前 |
サーバアドレス | サーバのIPアドレス |
表示されたサーバをクリックします。
Minecraftサーバに接続できました。
Androidからマインクラフトサーバへ接続
「Android(統合版)」からMinecraftサーバに接続します。
AndroidのMinecraftアプリを起動し、「遊ぶ」をタップします。
「フレンド」をタップすると、「Geyser」という名称が表示されるのでタップします。
Minecraftサーバに接続できました。
参考にさせていただいたサイト
この記事は、以下のサイトを参考にさせていただきました。
まとめ
「Java版」と「統合版」をマルチプレイできるMinecraftサーバの立て方を紹介しました。
サーバ側は「Java版」なので、「Java版」で使えるさまざまなプラグインを導入できます。
パソコン、スマホ、タブレットなどさまざまな端末から接続できるので、家族みんなでMinecraftをプレイできます。
このサーバのワールドをマイペースに開拓していこうと思います。
コメント
sudo java -Xmx1024M -jar BuildTools.jar –rev 1.16.5の
-Xmx1024M ってどういう意味なんでしょうか?
「-Xmx」は、ビルドする際に使用するメモリ量の最大値を「1024MB」に制限するオプションです。
ビルド時に、メモリ不足などのエラーにならなければ、指定しなくても大丈夫です。
サーバーに使用するメモリのことです