クロームブックのマインクラフト統合版でプログラミングをしてみる


Pythonでクロームブックのマインクラフト統合版を操作するための準備を行います。

操作するマインクラフトはGoogle Playで購入する有償版の方になりますので、今回の内容を試したい場合はマインクラフトを事前に購入してください。

Minecraft - Google Playのアプリ

※余談ですが、F310ゲームパッド - コンソールスタイル - ロジクールゲーミングをUSB接続するだけで、マインクラフトを操作することができました。

※もう一つ余談ですが、親のアカウントでライセンスを購入した場合、ファミリーリンクで登録している子のアカウント5名までマインクラフトをインストールすることができます。

Google ファミリー リンク - お子様のオンラインでの安全を守る保護者向け管理ツール


今回の内容を始める前に事前に下記の記事を参考にしてPythonを最新版にしておきましょう。

クロスティーニのPythonを最新版にする


最初にクロスティーニに振り当てられたIPアドレスを調べておきます。

クロスティーニを起動し、下記のコマンドを実行します。

$ hostname -I
100.115.92.205 240d:1e:3bb:5500:216:3eff:fe45:baf8

のような出力がされたら、100.115.92.205の方を記録しておきます。




続いて、マインクラフトとPythonを繋ぐ為のライブラリをインストールします。

今回はGitHub - HRTK92/py-mcws: Minecraft Bedrock WebSocketを利用します。


クロスティーニを開き、下記のコマンドを実行します。

$ cd ~
$ sudo apt install python3-pip
$ pip3 install --upgrade pip
$ pip install py-mcws



続いて、マインクラフトと接続するPythonのサーバを作成します。

今回はプロジェクト名をws-serverにして話を進めます。


下記のコマンドを実行します。

$ cd ~
$ mkdir workspace
$ cd workspace
$ mkdir ws-server

続いて下記のパスになるようにファイルを作成します。

/home/******(ユーザ名が入る)/workspace/ws-server/main.py

import py_mcws

server = py_mcws.WebsocketServer()

@server.event
async def on_ready(host, port):
    print(f"サーバーを起動しました。\n'/connect {host}:{port}'で接続できます")

@server.event
async def on_connect():
    print("接続しました")
    await server.command("say Hello") # メッセージを送信

@server.event
async def on_PlayerMessage(event):
    print()

server.start(host="0.0.0.0", port=19132)

下記のコマンドでサーバを立ち上げます。

$ python ~/workspace/ws-server/main.py
サーバーを起動しました。
'/connect 0.0.0.0:19132'で接続できます

クロスティーニに上の文字列が出力されたら、サーバの立ち上げは成功です。




続いて、マインクラフトを立ち上げ、コマンド使用が許可されているワールドを作成します。

ワールドが作成できたら、プレイを開始します。



ゲームが始まったら、キーボードのTを押し、チャットとコマンドを開きます。

コマンドの入力フォームに/connect クロスティーニのIPアドレス:クロスティーニで表示されたポートを入力して送信します。

今回の内容を例にすれば、コマンドは下記のようになります。

/connect 100.115.92.205:19132

しばらく待つと、



画面左上に

サーバーへの接続を確立しました:
ws://100.115.92.205:19132
[外部] Hello

のような表示があります。

これで、Pythonでマインクラフトを操作する準備ができました。


一応、クロスティーニの方の出力も確認しておきますと,

接続しました
PlayerMessageを登録しました

が出力されています。




クロームブックは低スペックでも動作するのがウリのパソコンになりますので、マインクラフトを起動しながら、py-mcwsを実行すると動きの遅さが気になります。



そんな時はもう一台クロームブックを用意して、マインクラフト用とPython用のパソコンで分けておきたくなります。

その場合、クロームブックでWebサーバを立ち上げるで紹介したクロームブックに割り当てられたローカルIPアドレスを利用します。

※上記URLの内容に従って、事前に19132のポート転送の設定をしておいてください。


192.168.1.52というローカルIPアドレスを例にして話を進めます。



この場合、チャットとコマンドの画面で送信する値は

/connect 192.168.1.52:19132

になります。


これで処理を二台のパソコンに分散することができました。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。