Minecraft BEサーバーのサバイバル・クリエイティブモードを切り替えるシェルスクリプト

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-nameWORLD_Sに変更され、サーバーがサバイバルモードで再起動されます。

クリエイティブモードに切り替える

クリエイティブモードに切り替えるには、以下のコマンドを実行します。

/home/ubuntu/switch_mode.sh creative

このコマンドにより、level-nameWORLD_Cに変更され、サーバーがクリエイティブモードで再起動されます。

現在のモードを確認する

サーバーが現在どのモードで動作しているかを確認するには、次のコマンドを使用します。

/home/ubuntu/switch_mode.sh status

このコマンドを実行すると、現在のlevel-namegamemodeの値に基づいて、サーバーがサバイバルモードかクリエイティブモードかを表示します。

  • サバイバルモードの場合:Current mode: Survival (level-name: WORLD_S)
  • クリエイティブモードの場合:Current mode: Creative (level-name: WORLD_C)
Visited 1 times, 1 visit(s) today

投稿者 root

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です