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

Minecraft の世界で何が起きているかを、プログラムから知りたい。たとえば、アドオンの動きを確かめたいとき、試験を自動で回したいとき、AI エージェントに統合版を遊ばせたいとき。ゲームの画面は人の目のためのものなので、そのままではツールが読めません。
Bedrock Observer は、この「今の状態」を 1 行の JSON にして返す、統合版の専用サーバー(Bedrock Dedicated Server、BDS)専用のアドオンです。作者は to3izo、この記事で紹介するバージョンは 1.0.1 です。
先に知っておいてほしいこと
遊ぶためのアドオンではありません。BDS で動かして、外部のツールから使うためのものです。クライアントで開いたワールドと Realms には対応しません。観測の結果にはプレイヤー名・位置・インベントリが含まれます(詳しくは「注意事項」)。
どんなアドオン?
外部のツールが、BDS のコンソールに JSON の要求を送ります。アドオンは、サーバーの標準出力に 1 行の JSON で答えます。ワールドは変えず、読むだけです。
- 読み取り専用。 コマンドの実行も、値の書き込みも、チャンクの読み込みもしません。
- ツールに依存しない。 入力は
/scriptevent、出力はログの行だけです。AI のモデル、MCP、HTTP を前提にしません。 - 上限つき。 要求ごとに、大きさ・件数・半径・距離の上限があります。
- 安定版の API だけ。 実験的機能もベータ版の API も使いません。
ゲーム画面と、同じ瞬間の 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 イベント。
チャットや、別のマシンから使う
- operator なら、チートを有効にしなくても、チャットから
/to3izo_bo:query "{\"requestId\":\"p1\",\"method\":\"player\"}"の形で同じ要求を送れます。長いコマンドは、そのプレイヤーが切断されるので、約 448 文字以内にしてください。 - ツールが BDS と別のマシンにあるとき(例: Mac のエージェントと、Windows の VM の BDS)は、VM の経路でコンソールに要求を送り、同じ経路でログを読みます。
- アドオンにはネットワークで送る仕組みがありません。ネットワークで行を運ぶときは、Minecraft の外のプログラムで送ります。
導入方法
- 配布場所のページから
.mcaddonファイルをダウンロードし、zip として展開します。 be-observer_BPを<BDS>/behavior_packs/に、be-observer_RPを<BDS>/resource_packs/にコピーします。- ワールドの
world_behavior_packs.jsonとworld_resource_packs.jsonに、パックの UUID とバージョンを書きます(値はアドオンのページにあります)。 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 では使えません。