MinecraftのBedrock Edition(BE)サーバーにてサバイバル・クリエイティブモードを切り替えるにはserver.properties
を編集する必要性があり、サーバの停止起動も同時に必要になります。
それをシェルスクリプトにて実現します。また同時にセーブデータの切り替えを行います。
1. 前提条件
このスクリプトを利用するために、以下の環境が整っている必要があります。
- Minecraft BEサーバーが動作している
- サーバーの設定ファイル(
server.properties
)が存在している - サーバーの停止および起動用のスクリプト(例:
/home/ubuntu/server1/stop.sh
と/home/ubuntu/server1/start.sh
)がある
start.shとstop.shスクリプトはこちらは参考にしてください
また、このスクリプトではサバイバルモードとクリエイティブモードに応じてlevel-name
も自動的にそれぞれ以下のように設定します。
※level-name
はセーブデータの名前です。
- サバイバルモード:
level-name=WORLD_S
- クリエイティブモード:
level-name=_WORLD_C
2. シェルスクリプトの準備
以下が実際に使用するシェルスクリプトの内容です。
#!/bin/bash
# モードに応じてlevel-nameを設定するファイル
SERVER_PROPERTIES="/home/ubuntu/server1/server.properties"
# 起動・停止スクリプトのパス
START_SCRIPT="/home/ubuntu/server1/start.sh"
STOP_SCRIPT="/home/ubuntu/server1/stop.sh"
# 第一引数に指定されたモードを取得
MODE=$1
# 現在のモードを表示する機能
if [ "$MODE" == "status" ]; then
# server.propertiesからlevel-nameとgamemodeを取得
CURRENT_LEVEL_NAME=$(grep "^level-name=" $SERVER_PROPERTIES | cut -d'=' -f2)
CURRENT_GAME_MODE=$(grep "^gamemode=" $SERVER_PROPERTIES | cut -d'=' -f2)
if [ "$CURRENT_LEVEL_NAME" == "WORLD_S" ] && [ "$CURRENT_GAME_MODE" == "0" ]; then
echo "Current mode: Survival (level-name: WORLD_S)"
elif [ "$CURRENT_LEVEL_NAME" == "WORLD_C" ] && [ "$CURRENT_GAME_MODE" == "1" ]; then
echo "Current mode: Creative (level-name: WORLD_C)"
else
echo "Unknown mode. Please check your server.properties file."
fi
exit 0
fi
# モードの切り替え機能
if [ "$MODE" == "survival" ]; then
LEVEL_NAME="WORLD_S"
GAME_MODE=0 # 0 = サバイバル
echo "Switching to Survival mode..."
elif [ "$MODE" == "creative" ]; then
LEVEL_NAME="WORLD_C"
GAME_MODE=1 # 1 = クリエイティブ
echo "Switching to Creative mode..."
else
echo "Usage: $0 [survival|creative|status]"
exit 1
fi
# サーバーを停止
echo "Stopping server..."
$STOP_SCRIPT
# level-nameとgame-modeを更新
echo "Updating server.properties..."
sed -i "s/^level-name=.*/level-name=$LEVEL_NAME/" $SERVER_PROPERTIES
sed -i "s/^gamemode=.*/gamemode=$GAME_MODE/" $SERVER_PROPERTIES
# サーバーを再起動
echo "Starting server..."
$START_SCRIPT
echo "Server is now running in $MODE mode with level-name $LEVEL_NAME."
3. 使用例
サバイバルモードに切り替える
サバイバルモードに切り替えるには、以下のコマンドを実行します。
/home/ubuntu/switch_mode.sh survival
このコマンドにより、level-name
がWORLD_S
に変更され、サーバーがサバイバルモードで再起動されます。
クリエイティブモードに切り替える
クリエイティブモードに切り替えるには、以下のコマンドを実行します。
/home/ubuntu/switch_mode.sh creative
このコマンドにより、level-name
がWORLD_C
に変更され、サーバーがクリエイティブモードで再起動されます。
現在のモードを確認する
サーバーが現在どのモードで動作しているかを確認するには、次のコマンドを使用します。
/home/ubuntu/switch_mode.sh status
このコマンドを実行すると、現在のlevel-name
とgamemode
の値に基づいて、サーバーがサバイバルモードかクリエイティブモードかを表示します。
- サバイバルモードの場合:
Current mode: Survival (level-name: WORLD_S)
- クリエイティブモードの場合:
Current mode: Creative (level-name: WORLD_C)
Visited 1 times, 1 visit(s) today