sashimi4’s diary

日々の雑多なメモを書きます

さくらのVPSで建てたMinecraftサーバでOneBlockマップを公開する

前置き

OneBlockマップ楽しいですよね.

マップ自体はこちらで配布されています. ijaminecraft.com

通常の Minecraft とは違いたった1つのブロックから始まり, 最初のブロックのギミックも通常のプレイとは異なる新鮮味があって, なかなか面白いですよね.

MOD無しで手軽に遊べる点も評価が高いですね.

最近は YouTuber たちにも OneBlock のマルチプレイ配信が行われていますね. 私もプライベートで構築して遊ぶ機会があったので, 今後需要があるかなと思い, ついでに手順を残しておきたいと思います.

前提条件

OneBlockマップの導入手順

SSH でサーバにログインします.

SSH に不慣れな場合の参考記事: knowledge.sakura.ad.jp

コントロールパネルのシリアルコンソール機能を使用しても問題ありません.

ubuntu ユーザでログインできたら, 下記コマンドを順にコピー&ペーストで入力します. (全てコピーしてシェルスクリプトとして実行してもOKです.)

# zipファイルを解凍するための unzip をインストールします
sudo apt -y install unzip

# サーバを停止します
sudo systemctl stop minecraft.service

# サーバファイル設置ディレクトリに移動します
cd /opt/minecraft

# OneBlock配布ワールドをダウンロードします
## 現在の最新バージョンは 1.16.4 でした. 異なるバージョンを利用する場合はバージョン番号を適宜書き換えてください.
curl -LOJ 'https://ijaminecraft.com/download/map/oneblock/IJAMinecrafts-OneBlock-1-16-4.zip'

# zipファイルを解凍します
## Windows環境で圧縮されているので CP932 の文字コードを指定する必要があります. 指定なしでも起動できますが, ゲーム内メッセージが正常に表示されません.
## 異なるバージョンを利用する場合はバージョン番号を適宜書き換えてください
unzip -Ocp932 ./IJAMinecrafts-OneBlock-1-16-4.zip

# 既存の world ディレクトリの名前を変更して退避します
mv world/ _world
# ディレクトリ名を変更してOneBlock配布ワールドを配置します
## 異なるバージョンを利用する場合はバージョン番号を適宜書き換えてください
mv OneBlock\ by\ IJAMinecraft\ \(1.16.4\)/ world
# FIXME: 実行権限の付与が必要かもしれない
#        Windows環境でunzipすると全てのファイルに実行権限が付き, 動作も正常であるため必要と考えられる.
chmod -R +x ./world


# サーババージョンを1.16.4で固定します
## vimなどのCUIエディタが使用できる場合は, 手動で編集しても構いません
## FIXED_VERSION=1.16.4 と記載すれば起動バージョンを固定できます
## 異なるバージョンを利用する場合はバージョン番号を適宜書き換えてください
sed -i 's/^FIXED_VERSION=.*$/FIXED_VERSION=1.16.4/' ./update_server.sh

# 1.18.1 未満のバージョンは log4j の脆弱性が含まれているため対策をします
## ここで記す手順は 1.16.4 用の対策です. 異なるバージョンの場合は下記リンク先の手順を参照し, 適応する対策を講じてください.)
## 対策方法の詳細: https://www.minecraft.net/ja-jp/article/important-message--security-vulnerability-java-edition-jp
# ファイルダウンロード
wget https://launcher.mojang.com/v1/objects/02937d122c86ce73319ef9975b58896fc1b491d1/log4j2_112-116.xml
# 起動設定変更
## vimなどのCUIエディタが使用できる場合は, 手動で編集しても構いません
## java の起動引数に -Dlog4j.configurationFile=log4j2_112-116.xml が追加されていれば良いです
sed -i 's/java/java -Dlog4j.configurationFile=log4j2_112-116.xml/' ./start_server.sh

# コマンドブロックを有効化します
## トラブルシューティングの項目に enable-command-block に true を設定するよう指示があります
## See: https://ijaminecraft.com/map/oneblock/how-to-install-oneblock-in-1.16.4
## (有効化しなくても動作するようです. 任意で有効化してください.)
sed -i 's/^enable-command-block=.*$/enable-command-block=true/' ./server.properties

# サーバを起動します
sudo systemctl start minecraft.service

これで以上です.

クライアントバージョンを合わせて接続

クライアントの起動バージョンを揃える

Minecraft Launcher でバージョン 1.16.4 を指定して起動すれば VPSIPアドレス指定で接続できると思います.

表示の不具合について

一度切断して再度接続するとステータスが出なかったり一部ゲーム内字幕の表示が出なかったりヘルプが出なかったりと細々不具合が出る.
(チュートリアルのメッセージが表示されないとか, Upradeのメッセージが出ずカウントダウン数値だけ表示されたりとか, 本当に細々)
/reload コマンドを打つと治ったり治らなかったりする.

/reloadコマンドで改善する例

毎度サーバのコンソールで /reload を打つのは大変なので /op で権限つけておいてクライアントのチャット欄からコマンド打てるようにしておいたほうが良いかも.
そもそも根本解決したいところではあるが.

ローカルでシングルプレイする分には問題ないがバニラのサーバだとこの症状が出る.
OneBlock のマルチサーバを建てるなら Spigot が王道なのだろうか?

Spigot の手順も別途記事にしたいと思います. 余裕があれば... とりあえず本記事は暫定手順的に御覧ください...