Minecraft: Education の「ブロックコーディング×Agent(作業ロボ)」体験を Java版マイクラで再現 — Paperプラグイン「twbridge」試作
以前の記事「Minecraft: Education の「ブロックコーディング×Agent(作業ロボ)」体験を JAVA版マイクラで再現」では、Minecraft: Education Edition の「ブロックコーディング×エージェント」体験を、TurboWarp+WebSocket の構成で再現する構想をまとめました。
今回の記事では、その構想をもとに実際に Paperプラグインとして実装 してみました。
プラグイン名は twbridge(TurboWarp Bridge)。名前の通り、TurboWarpとPaperサーバのあいだをブリッジするプラグインとなります。
目指したのは「コードブロックでエージェントを操れるJava版」
目的は、子どもがEducationで楽しんでいた「ブロックコーディングで作業ロボ(Agent)を動かす」体験を、Java版(Paper) でも「無料」で再現することです。クライアント側にMODを入れずに使えるよう、TurboWarp(Scratch互換の高速環境) と WebSocket を採用しました。TurboWarpの拡張ブロックから命令を送り、サーバ側のプラグインが受け取って実行します。
今回実装したこと
現在のバージョンでは、以下のブロックを実装しました。
- WebSocket接続/切断
- Minecraftコマンド送信(例:/say など)
- エージェントのスポーン/デスポーン
これらはプラグイン内のウェブサーバから配布されるカスタム拡張(.js)としてTurboWarpに読み込めます。
Paperに twbridge.jar を入れて起動しますと、コンソールに拡張のURLが表示されます。TurboWarp側でそのURLを指定するとブロックが使えるようになります。/say Hello from twbridge! がサーバに反映されると、ブロックから操作できていることを体感できます。
PDCAを「ブロック」で回せる環境づくり
このプロジェクトの最終的な目標は、「Minecraft内でPDCAサイクルを学べる環境」を整えることです。
子どもたちは、ブロックを組んでエージェントに命令を出し、結果を見て修正します。
これがそのまま Plan → Do → Check → Act のサイクルに対応します。
- Plan:ブロックで行動計画を立てる
- Do:エージェントが実行する
- Check:ワールド上で結果を観察する
- Act:ブロックを修正して再挑戦する
「ブロックコーディング×Agent」を使って、この流れを短時間で何度も繰り返すことで、自然と改善の考え方を身につけていくことができると考えました。
今後の課題
実装してみて分かった課題も多いです。
- 複数プレイヤーの識別
同じサーバに複数人が接続している場合、どのプレイヤーのエージェントを操作するかを特定する必要があります。
現状は接続時にプレイヤー名を登録して識別していますが、より堅牢なUUID管理にしたいです。 - コマンドの実行タイミング
TurboWarpはブロックを一気に評価するため、Minecraft側でコマンドが詰まることがあります。
将来的には一定間隔でコマンドを実行するキュー処理を導入したいです。 - セキュリティと権限管理
WebSocketを開ける関係上、どの範囲まで許可するかは慎重に検討中です。
とりあえずは、ローカルネットワーク内の教室など閉じた環境での運用を前提としています。
すべてプラグイン側で完結
こうした課題を踏まえ、設計方針を「Paperプラグインだけで完結」にしています。
外部サーバやNode.jsを立てる必要はなく、twbridgeプラグイン1つを導入するだけで、次の要素がすべて揃うようにしています。
- WebSocketサーバ(TurboWarpからの命令受け口)
- 拡張(.js)ファイルのホスティング
- Paperサーバ内でのコマンド実行・エージェント管理
これにより、セットアップは最小限になったと思います。
Paperのplugins/にtwbridge.jarを入れて再起動すると、コンソールにTurboWarpの拡張用URLが表示され、そのURLをTurboWarpの「拡張を追加」から指定すれば準備完了です。
今後の拡張予定
次のステップとして、以下のブロックを追加する予定です。
- 移動(前進・後退・上下移動)
- 方向転換(右回転・左回転・180°回転)
- ブロック操作(設置/破壊)
- 条件分岐・繰り返し
- ブロック検知(前方・下方)
これらを段階的に実装し、最終的には MakeCodeのエージェント操作ブロックに近い操作感 を目指します。
さらに、エージェントの状態をWebSocket経由でTurboWarp側に返す「双方向通信」も構想中です。









ディスカッション
コメント一覧
まだ、コメントがありません