ゲームの「今」を 1 行の JSON に。統合版 BDS 専用アドオン「Bedrock Observer」を紹介します

公開
  • 技術
  • 便利
草原の丘にいるヒツジ・ウシ・ブタと光るダイヤのようなブロックが、それぞれ色の枠で囲まれ、右側の JSON のパネルに線でつながっているイメージイラスト(ゲーム画面ではありません)

Minecraft の世界で何が起きているかを、プログラムから知りたい。たとえば、アドオンの動きを確かめたいとき、試験を自動で回したいとき、AI エージェントに統合版を遊ばせたいとき。ゲームの画面は人の目のためのものなので、そのままではツールが読めません。

Bedrock Observer は、この「今の状態」を 1 行の JSON にして返す、統合版の専用サーバー(Bedrock Dedicated Server、BDS)専用のアドオンです。作者は to3izo、この記事で紹介するバージョンは 1.0.1 です。

先に知っておいてほしいこと

遊ぶためのアドオンではありません。BDS で動かして、外部のツールから使うためのものです。クライアントで開いたワールドと Realms には対応しません。観測の結果にはプレイヤー名・位置・インベントリが含まれます(詳しくは「注意事項」)。

どんなアドオン?

外部のツールが、BDS のコンソールに JSON の要求を送ります。アドオンは、サーバーの標準出力に 1 行の JSON で答えます。ワールドは変えず、読むだけです。

  1. 読み取り専用。 コマンドの実行も、値の書き込みも、チャンクの読み込みもしません。
  2. ツールに依存しない。 入力は /scriptevent、出力はログの行だけです。AI のモデル、MCP、HTTP を前提にしません。
  3. 上限つき。 要求ごとに、大きさ・件数・半径・距離の上限があります。
  4. 安定版の API だけ。 実験的機能もベータ版の API も使いません。

ブタ・ヒツジ・ウシ・ダイヤモンドブロックが映るゲーム画面と、同じ瞬間の snapshot の応答。それぞれのモブと、見ているブロックが JSON の typeId に対応している ゲーム画面と、同じ瞬間の snapshot の応答。モブと、見ているブロックが typeId になって返ります。

何が分かる?

要求の種類(メソッド)ごとに、次のことが分かります。

メソッド 返すもの
capabilities バージョン、メソッド、上限、既定値。最初に呼びます
players / player プレイヤーの一覧と、位置・向き・視線・速度・ゲームモード。体力・インベントリ・装備・効果も選べます
block / blocks / target 座標で指定したブロックと、プレイヤーが見ているブロック
entities / entity 周りのエンティティ。距離順で、種類・ファミリー・名前・タグで絞れます
top / tops 地面の高さ(列の一番上のブロック)
scoreboard objective とスコア
snapshot 1 人のプレイヤーについて、上のいくつかを 1 回の応答で
events 最近の出来事を取り直す

チャットとコマンドの使用、画面、入力は取れません。

使ってみる

BDS のコンソールで、要求を送ります(先頭の / は付けません)。

scriptevent to3izo_bo:query {"requestId":"c1","method":"capabilities"}
scriptevent to3izo_bo:query {"requestId":"p1","method":"player","params":{"player":{"name":"Steve"},"include":["health","effects"]}}

要求 1 つに、標準出力の 1 行が必ず返ります。

to3izo_bo.response {"protocol":1,"requestId":"p1","ok":true,"method":"player","tick":144897,"session":"rohuvqp7","seq":4,"time":1792311918513,"data":{"id":"-8589934591","name":"Steve",...}}

応答は requestId で要求と突き合わせます。失敗したときは "ok":false と、決まったエラーコードが返ります。

ゲーム内の出来事は、要求なしで届く

参加・退出・スポーン・プレイヤーに関わる死亡・ディメンションやゲームモードやゲームルールの変更は、要求がなくても to3izo_bo.event {...} の行で出ます。下の画像は、ゾンビに倒された瞬間の例です。cause は entityAttack、killer は minecraft:zombie と分かります。

ゾンビに倒されたあとのゲームオーバー画面と、その瞬間に出た entity_die イベントの行 倒された瞬間に出た entity_die イベント。

チャットや、別のマシンから使う

  • operator なら、チートを有効にしなくても、チャットから /to3izo_bo:query "{\"requestId\":\"p1\",\"method\":\"player\"}" の形で同じ要求を送れます。長いコマンドは、そのプレイヤーが切断されるので、約 448 文字以内にしてください。
  • ツールが BDS と別のマシンにあるとき(例: Mac のエージェントと、Windows の VM の BDS)は、VM の経路でコンソールに要求を送り、同じ経路でログを読みます。
  • アドオンにはネットワークで送る仕組みがありません。ネットワークで行を運ぶときは、Minecraft の外のプログラムで送ります。

導入方法

  1. 配布場所のページから .mcaddon ファイルをダウンロードし、zip として展開します。
  2. be-observer_BP を <BDS>/behavior_packs/ に、be-observer_RP を <BDS>/resource_packs/ にコピーします。
  3. ワールドの world_behavior_packs.json と world_resource_packs.json に、パックの UUID とバージョンを書きます(値はアドオンのページにあります)。
  4. server.properties を content-log-console-output-enabled=true にして、サーバーを起動します。これがないと、スクリプトの出力が標準出力に出ません。

ログに [Scripting] [be-observer] scripts loaded が出れば、準備完了です。

対応環境

  • Bedrock Dedicated Server(確認済み: Windows、1.26.52.3)・ゲームのバージョン 1.26.50 以降。
  • Linux 版の BDS でも動く見込みですが、未確認です。
  • 実験的機能は不要です。

注意事項

観測の結果には、プレイヤー名・位置・インベントリが含まれ、サーバーの標準出力に書かれます。サーバーのコンソールと operator は、すべてのプレイヤーを観測できます。ほかのプレイヤーは要求を送れません。ほかの人が参加するサーバーに入れるときは、参加者にその点を伝えてください。

配布場所とライセンス

  • 配布場所: このサイト(TO3iZO Crafters)です。Bedrock Observer のページから、.mcaddon ファイルを直接ダウンロードできます。
  • ライセンス: MIT

まとめ

Bedrock Observer は、ゲームの状態をプログラムで読みたい人のためのアドオンです。

  • 向いている人: アドオンのデバッグや試験をしたい人。AI エージェントに統合版を遊ばせたい人。
  • 注意してほしい人: 遊ぶためのアドオンではなく、BDS 専用です。クライアントで開いたワールドや Realms では使えません。