Minecraftのサーバーの建て方②
①の続き。だいぶ端折っている。
c.鯖の準備
まずJavaをインストールする。
遊ぶマイクラのバージョンによってインストールするバージョンが違う。
1.8〜1.16だとjava8かjava111.17だとjava161.18〜だとjava17が必要みたいです自分の環境では1.16.5の鯖にjava8、1.18.1の鯖にjava17を使用。共存する方法も後述します、かなり適当
sudo apt install openjdk-8-jre
自分の環境はOpenJDKを使ったので上記コマンド。8の所は任意のバージョン、
java -version
で一応バージョン確認。複数入れてる場合でも一つしか表示されないと思うけど多分ちゃんと入ってる。
上のコマンドを実行した結果。java17が入ってることが確認できた。
サーバーを準備する。Plugin鯖編
ここからLinuxはWinSCPで操作している。簡単なので。
今回はPaperMCを使用した。
PaperMCって何?って人はマイクラにプラグインを導入出来る用のサーバーソフトって考えとけばいい。
プラグインって何?って人はバニラのマイクラに色々機能を追加出来るやつって考えとけばいい。
PaperMC
ここに全部書いてある。
↓端折ったとりあえず使えるようにしたい方向け
Windows機で
ここからまずバニラ鯖をダウンロード。
ここからバニラ鯖と同じminecraftバージョンのPaperMCをダウンロード。
Linux側で"/opt/minecraft"ディレクトリを用意してあげる。
その階層下にダウンロードしたjarファイルを置く。ここで置いた"paper-x.xx.x-xxx.jar"の名前を"paper.jar"にしておく。このあとが楽になるので。使ってるバージョンが知りたいならテキストファイルなりを作ってメモっておく。
とりあえず起動したいのでWinSCPはそのまま、Tera Termを使って接続する
cd /opt/minecraft/
で階層を移動。
java -Xms2G -Xmx2G -jar server.jar --nogui
でサーバーを起動。
とか出て起動が止まるので、
eula.txtを開いて"false"を"true"に書き換えて再度起動。
起動してこのような文言が出たら起動完了。
コンソールに"stop"と入力して一旦閉じる。
次は
java -Xms2G -Xmx2G -jar paper.jar --nogui
と入力してpaperを起動。
先と同じような文言が出たら起動完了。これでひとまずは遊べるようになった。ポート開放は既にしてあるので、グローバルIPアドレスを教えたら他の人が入れると思います。自分が入れるか試したい場合はサーバーアドレスにLinux機のIPアドレスを入れたら入れます。"localhost"では入れないので注意。
起動設定(JVM)
このサイトにサーバーに割り当てたいメモリの量、使っているサーバーを入力したら自動でjvmを教えてくれる。
あとで使うのでコピーしておく。
d.JEとBE一緒に遊べるようにする(GeyserMC)
"Geyser-Spigot.jar"をダウンロード。
"floodgate-spigot.jar"をダウンロード。
どちらも"/opt/minecraft/plugins"の中に入れ、サーバーを起動。
起動が完了したあと、
"/opt/minecraft/plugins/Geyser-Spigot/config.yml"を開く。
50行あたりに"auth-type:"があるので後ろの文字を"floodgate"に書き換える。
書き換えたらサーバーを再起動。これで統合版と一緒に遊べるようになった。統合版から入る方法は省略。
基本的には"グローバルIPアドレス:19132"で入れるはず。
e.サーバーの定期再起動の設定
screenとcronを使います。
こちら様を参考に。というかほぼ丸コピ。
↓端折っているとりあえず動かしたい人向け。
"/opt/minecraft"の配下に"start.sh","restart.sh"を作成する。
自分が使っているstart.shの中身
#!/bin/bash
cd `dirname $0`
screen -UAmdS minecraft java -Xms8G -Xmx8G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar nogui
restart.shの中身
#!/bin/bash
WAIT=30
STARTSCRIPT=/opt/minecraft/start.sh
SCREEN_NAME='minecraft'
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say '${WAIT}'秒後にサーバーを再起動します。\015"'
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "say しばらくお待ち下さい。\015"'
sleep $WAIT
screen -p 0 -S ${SCREEN_NAME} -X eval 'stuff "stop\015"'
while [ -n "$(screen -list | grep -o "${SCREEN_NAME}")" ]
do
sleep 1
done
$STARTSCRIPT
cronのスケジュールを設定する
マイクラではなく、Linuxのコンソールで
crontab -e
と入力。
一番下まで行く。
0 7 * * * /opt/minecraft/restart.sh > /dev/null 2>&1
を入力。ctrl+x → y → enterキーで保存。とりあえずこれで毎日7時に再起動するようになった。