【Minecraft服务器】由初学者创建的半自动世界切换
使用Shell切换世界
サーバーでワールドの切り替えを手動でするのが面倒なので作ろうと思いました。
いろいろ引用して作ってるのと、最近勉強し始めたばかりなのでスマートじゃないところがありますが、ご了承ください。
这是在操作系统上而非Minecraft游戏内部可以实现的切换方式。
Minecraft服务器环境
Ubuntu 服务器 20.04 LTS
Minecraft全版本
事前准备
为了方便地运行Shell等程序,我会使用screen来运行服务器。安装screen软件。
$ sudo apt-get install screen
在停止运行世界之前,我会创建一个文件来进行一份备份。
※这并非是必须操作,但推荐执行。
$ mkdir BU
执行脚本
请先在你喜欢的地方创建一个shell,这是本次的主要程序。
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'`
可以通过将另一个World的.jar文件存放在相同的目录名和worldname下来进行更改。请根据自己的环境进行调整。
将权限授予Shell。
$ chmod 777 change.sh
Minecraftの起動方法
screenで起動しますが、screenの名前がminecraftじゃないとダメですのでminecraftでscreenを起動してください。
screen -S minecraft
アタッチの場合は
screen -r minecraft
我会在屏幕上启动第一个世界。
$ cd マイクラサーバのパス
$ java -Xmx4G -Xms4G -jar server.jar
试着实际操作一下。
当第一个世界启动时,尝试实际运行外壳。
$ ./backup.sh


基本上就是这样了。
非常易懂,我参考了下面的内容。