#シェルによるワールド切り替え
サーバーでワールドの切り替えを手動でするのが面倒なので作ろうと思いました。
いろいろ引用して作ってるのと、最近勉強し始めたばかりなのでスマートじゃないところがありますが、ご了承ください。
Minecraftのゲーム内の切り替えではなくOS上でできるものです。
##Minecraftサーバー環境
Ubuntu server 20.04 LTS
Minecraft全バージョン
#事前準備
・シェルなどを動かす際、便利なのでscreen
でサーバーを動かします。
screenのインストール
$ sudo apt-get install screen
・ファイルの作成
ワールドを止める際に一応バックアップをとるのでそのためのファイルを作成します。
※これは必須ではありません。推奨です。
$ mkdir BU
#シェルスプリクト
今回のメインのプログラムです。
まずは自分の好きな場所にシェルを作ってください。
vi change.sh
#!/bin/bash
#
#起動ワールドの切り替えスプリクト
########## ワールド内の通知 ###########
#worldname,gameversion変更可能
worldname=skyblock
gameversion=1.16.5
#起動中のワールド内のアナウンス
screen -S minecraft -X stuff 'say '$time1'秒後に再起動し、'$worldname'に切り替えます。'`echo -ne '\015'`
screen -S minecraft -X stuff 'say 次の'$worldname'のバージョンは'$gameversion''`echo -ne '\015'`
sleep '$time1'
screen -S minecraft -X stuff 'say 停止します。'`echo -ne '\015'`
sleep 5
screen -S minecraft -X stuff 'stop'`echo -ne '\015'`
########## minecarftが完全に終了するまで待機 ##########
#javaのプロセス数を数えてるため
#ほかにjavaを動かしていたら調整してください
count1=`ps -ef | grep java | grep -v grep | wc -l`
while :
do
if [ $count1 = 0 ] ; then
break
else
sleep 0.5
count1=`ps -ef | grep java | grep -v grep | wc -l`
fi
done
########## バックアップ開始 ##########
#Temporaryの作成
#仮のファイルです
mkdir ~/バックアップファイルの場所/Temporary
#world,world_nethr,world_the_end,logsのみコピー
cp -rf ~/マイクラサーバのパス/world ~/バックアップファイルの場所/Temporary
cp -rf ~/マイクラサーバのパス/world_nether ~/バックアップファイルの場所/Temporary
cp -rf ~/マイクラサーバのパス/world_the_end ~/バックアップファイルの場所/Temporary
cp -rf ~/マイクラサーバのパス/logs ~/バックアップファイルの場所/Temporary
#時間をつけてzip
zip -r ~/BU/`date "+%Y%m%d_%H%M"`.zip ~/BU/Temporary
##########切り替え##########
screen -S minecraft -X stuff 'cd ~/二個目のマイクラサーバのパス/'$worldname''`echo -ne '\015'`
sleep 5s
##########java起動#########
screen -S java -Xmx4G -Xms4G -jar server.jar '\015'`
もう一つのワールドの.jar
ファイルが入っているディレクトリ名とworldname
を共通にすることで変更することができます。自分の環境に合わせていじってください。
シェルに権限を渡します。
$ chmod 777 change.sh
#Minecraftの起動方法
screen
で起動しますが、screen
の名前がminecraft
じゃないとダメですのでminecraft
でscreen
を起動してください。
screen -S minecraft
アタッチの場合は
screen -r minecraft
screen
上で一つ目のワールドを起動しておきます。
$ cd マイクラサーバのパス
$ java -Xmx4G -Xms4G -jar server.jar
#実際に動かしてみる。
一つ目のワールドが起動しているときに、実際にシェルを動かしてみる。
$ ./backup.sh
すると、ワールド内に通知が飛びますので、それを確認してください。
ついでにバックアップも圧縮して作成されています。下記の写真は解凍後の写真です。
一応これで以上になります。
めちゃわかりやすくて下記を参考にしました。