[Ubuntu Server]マインクラフト サーバ構築(Java版と統合版でマルチプレイ)

家族で一緒にMinecraftをプレイするため、自宅に「Java版」と「統合版」でマルチプレイできるMinecraftサーバを立てました。

 

 

マルチプレイ可能なMinecraftサーバの概要

「Java版」と「統合版」は本来マルチプレイはできません。

 

サーバは「Java版」で作成します。

公式のサーバソフトではなく、より高性能でプラグインを使って機能を拡張できる「Spigot」というサーバソフトを使います。

 

ただ、こののままでは「統合版」から接続できないので、サーバに以下のプラグインを導入し統合版から接続できるようにしました。

Geyser-spigot

統合版パケットとJava版パケットを相互に変換するプラグインです。

Floodgate-bukkit

統合版からJava版に接続しようとすると、Java版アカウントがないため接続できません。

このプラグインは、Java版アカウントなしでJava版サーバへ接続できるようにします。

GyserSkinManager-Spigot

統合版から接続すると、スキンが反映されません。

そのため、みんな初期キャラの「スティーブ」で表示されてしまい、誰が誰かわかりづらくなってしまいます。

このプラグインを使うと、統合版で設定したスキンを反映できます。

 

 

 

Minecraftサーバの動作環境

私は、以下のサーバにMinecraftサーバを構築しました。

マシンHP Z230 SFF Workstation
OSUbuntu Server 20.0.4
CPUIntel(R) Xeon(R) CPU E3-1271 v3 @ 3.60GHz(4コア8スレッド)
メモリ8GB
ストレージ64GB(SSD)
Javaopenjdk-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サーバに接続できました。

 

 

参考にさせていただいたサイト

この記事は、以下のサイトを参考にさせていただきました。

 

https://goto-linux.com/ja/2019/10/18/ubuntu-20.04-minecraft%E3%82%B5%E3%83%BC%E3%83%8F%E3%83%BC%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%95/
Tutorials/Setting up a server
This tutorial takes you through the steps of setting up your own server using the default server software that Mojang Studios distributes free of charge. The so...
「Systemd」を理解する ーシステム起動編ー | ギークを目指して
Systemdは従来のinit/Upstartの代替であり、非常に高速なシステム起動・終了や、様々なシステム管理機能を提供する。当記事ではinit/Upstartから大きく変わったSystemdによるシステム起動プロセスを解説していく。

 

 

まとめ

「Java版」と「統合版」をマルチプレイできるMinecraftサーバの立て方を紹介しました。

サーバ側は「Java版」なので、「Java版」で使えるさまざまなプラグインを導入できます。

パソコン、スマホ、タブレットなどさまざまな端末から接続できるので、家族みんなでMinecraftをプレイできます。

このサーバのワールドをマイペースに開拓していこうと思います。

コメント

  1. Craft より:

    sudo java -Xmx1024M -jar BuildTools.jar –rev 1.16.5の
    -Xmx1024M ってどういう意味なんでしょうか?

    • TOSHIOTOSHIO より:

      「-Xmx」は、ビルドする際に使用するメモリ量の最大値を「1024MB」に制限するオプションです。

      ビルド時に、メモリ不足などのエラーにならなければ、指定しなくても大丈夫です。