Pythonでマインクラフトパイエディションリボーンを操作してみる

クロームブックにマインクラフトを入れて遊ぶでインストールしたマインクラフトパイエディションリボーン(以後マイクラリボーン)をPythonで操作してみます。


今回の内容を試す前に、下記URLに記載されているCrostini(クロスティーニ)の設定やPythonを最新版にしておきましょう。

クロームブックで開発環境を構築する

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


最初にpipを入れておきます。

pipはPythonで開発されたアプリをインストールしたりする管理システムになります。


pipをインストールするためにクロスティーニを起動し、下記のコマンドを実行します。

$ sudo apt install python3-pip
$ pip3 install --upgrade pip
$ pip3 -V

これでpipのインストールは終了です。

問題なくインストールできた場合は、

pip 23.3.1 from /home/******/.pyenv/versions/3.12.0/lib/python3.12/site-packages/pip (python 3.12)

のような出力になります。


続いて、下記のコマンドでマイクラリボーンをPythonで操作できるようにするためのライブラリを入れておきます。

$ pip install mcpi

これで準備ができました。

martinohanlon/mcpi: Minecraft: Pi Edition API Python Library





クロームブックにマインクラフトを入れて遊ぶに記載されているマイクラリボーンの起動方法に従い起動します。

→|」ボタンを押し、マウスのカーソルをデスクトップ上を自由に動かせるようにした後、




クロスティーニの方で新しいタブを開きます。

下記のどちらかの方法でmcpiライブラリを使ってみます。


①Pythonの対話実行モード(Read-Evaluate-Print Loop : REPL)経由でコードを実行する。

下記のコマンドでREPLの画面に切り替える。

$ python3
Python 3.12.1 (main, Dec 17 2023, 18:10:24) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

のような画面が表示されたら、

>>> from mcpi import minecraft
>>> mu = minecraft.Minecraft.create()
>>> mu.postToChat("hello world")

一行ずつコードを実行していきます。


②スクリプトファイルを作成して実行する。

$ mkdir workspace
$ cd workspace
$ mkdir mcpi
$ cd mcpi
$ nano sample.py

~/workspace/mcpi/sample.py

from mcpi import minecraft
mu = minecraft.Minecraft.create()
mu.postToChat("hello world")

作成したファイルを下記のコマンドで実行する

$ python3 ~/workspace/mcpi/sample.py


マイクラリボーンの方の画面のチャットでhello worldと出力されたら成功です。




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



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

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


マインクラフト用のパソコンでローカルIPアドレスを調べておき、ポート転送の設定で4711ポートへのアクセスを許可しておきます。

今回は例として、マインクラフト用のパソコンに割り当てられたローカルIPアドレスは192.168.1.48にして話を進めます。


Python用のパソコンの方で、下記のようにコードを変更します。

~/workspace/mcpi/sample.py

from mcpi import minecraft
mu = minecraft.Minecraft.create("192.168.1.48", 4711)
mu.postToChat("hello world")

Python用のパソコンで上記コードを実行してみると、マインクラフト用のパソコンのゲーム画面で、



のように表示されます。

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