androidのマイクラワールドをサーバーに移行する

マイクラのワールドをandroidからサーバーに移行したときのメモです。とりあえずやってみてうまく行ったのでメモしておきます。

以下の方法はユーザーのデータまで移行することはできません。そのため、移行前に持ち物やエンダーチェストの中身を通常のチェストに入れるなどして、ユーザーに紐付いているデータをできるだけワールドに紐付けてください。(経験値などは引き継げない可能性が高いです)

サーバーを構築

以下はdockerで立てていますが、コンテナを導入せずにサーバーに直接インストールしてももちろん構いません。その場合はこのセクションは読み飛ばしてください。

以下はdocker-compose.ymlの一例。

version: "3"

services:
  minecraft:
    image: itzg/minecraft-bedrock-server
    restart: always
    ports:
      - "19132:19132/udp"
    environment:
      EULA: "TRUE"
    volumes:
      - ./data:/data

必要に応じて19132/udpポートを開放して下さい。ここで一度ワールドを起動(docker-compose up -d)すると./data以下にファイルが作成されます。

ワールドをコピー

androidで保存先を外部にするとgames/com.mojangディレクトリにあらゆるデータが保存されます。この設定を行わないと、ワールドデータを抜き出すことができないので予め行ってください。

保存先を外部に設定すると、以下のようなディレクトリがホームディレクトリ?に作成されます。

games/com.mojang/minecraftWorlds/{ハッシュ値}/

(自動的にすべてのセーブデータがここに書き込まれます。)この中にある、db/,level.datをサーバーの

worlds/{server.propertiesで指定されるlevel-name}/

に移動させます。(元々サーバー内にあったdb/,level.datは削除します。現在のサーバーのワールドは消失するので注意してください。)

これでサーバーのワールドを移行することができたはずです。サーバーを再起動してログインしてみてください。

(2021/11/24 追記) Minecraft Worlds Lost When Using External Storage on Android Devicesによればandroidでは保存先が変更になるようです。たまたま見つけたので貼っておきます。

その他設定

テレポート

ユーザーのデータが移動できていないので、おかしな場所でリスポーンする可能性があります。その場合チートを許可し、ユーザーの座標を任意に設定することが可能です。

チートを許可するにはserver.propertiesallow-cheats=trueを設定します。

その後、ユーザーのチャットからコマンドを入力することで設定が可能です。

管理者権限を付与

サーバーでpermissions.jsonを開き、自身を管理者に設定します。

[
  {
    "xuid": "{YOUR_XUID}",
    "permission": "operator"
  }
]

自身のxuidはサーバーに接続した際のログ(上記docker-composeではdocker-compose logs)を見ると簡単に入手することができます。

バックアップ

サーバーを外部に公開する場合、バックアップは重要です。定期的にワールドのスナップショットはとっておきましょう。こちらで簡易的なバックアップの方法について解説していますのでよろしければ参考にしてみて下さい。(バックアップスクリプトを実行する前にdocker-compose downで一度サーバーを停止するのを忘れないでください。)

サーバーの再起動

定期的に再起動しておくことを推奨します。

$ sudo crontab -e

以下を追記。

30 5 * * * /usr/sbin/shutdown -r now

これで毎朝5時半にサーバーが自動的に再起動されます。docker-compose.ymlrestart: alwaysを指定していれば再起動後、自動でminecraftが立ち上がります。

参考

Built with Hugo
Theme Stack designed by Jimmy