マイクラ世界のブロックの話

,
マイクラの世界にはたくさんのブロックがあります。ブロックを操作するにはgetBlock()とsetBlock()を使います。 まずsetBlock()で主人公の足元に鉄ブロックを置いてみます。 [python] import mcpi.minecraft as minecraft mc = minecraft.Minecraft() import mcpi.block as block pos = mc.player.getTilePos() mc.setBlock( pos.x, pos.y - 1, pos.z, block.IRON_BLOCK ) [/python] このブロックの情報を取得してみます。 鉄ブロックの上に立って [python] import mcpi.minecraft as minecraft mc = minecraft.Minecraft() import mcpi.block as block pos = mc.player.getTilePos() blk = mc.getBlock( pos.x, pos.y - 1, pos.z ) mc.postToChat( blk ) [/python] getしたブロックをチャットすると42と表示されます。 草ブロックだと2、石ブロックだと1です。 こんな感じでマイクラ世界のブロックは数字で種類が決まっています。 これをブロックIDといいます。 こちらのサイトにブロックIDの一覧があります。 ちょっと多いですね。

マイクラ世界の座標の話

,,
マイクラ世界の位置は座標で決まります。主人公の位置を座標を使ってプログラミングしてみます。 このページに書かれていること ・マイクラ世界の位置はX、Y、Zの座標で決まる ・取得できる座標にはtilePosとposがある こんな感じで、Xが横方向、Yが高さ、Zが奥行きと考えるとわかりやすいです。 プログラミングで主人公を移動させてみましょう。 [python] import mcpi.minecraft as minecraft mc = minecraft.Minecraft() pos = mc.player.getTilePos() #主人公の今の座標 mc.player.setTilePos( pos.x + 10, pos.y, pos.z ) [/python] 高くジャンプさせるには [python] mc.player.setTilePos( pos.x, pos.y + 10, pos.z ) [/python] です。あまり高くしすぎるとサバイバルだと死んでしまいます。 座標にはtilePosとposがあります。 tilePosは整数で、何個目のブロックにいるかということです。 posは少数で、ブロック上の細かい位置までを含みます。 歩きならが座標を表示してみるとわかりやすいです。 [python] import mcpi.minecraft as minecraft mc = minecraft.Minecraft() tilePos = mc.player.getTilePos() pos = mc.player.getPos() mc.postToChat( 'tileX:' + str( tilePos.x ) + ', X:' + str( pos.x ) ) mc.postToChat( 'tileY:' + str( tilePos.y ) + ', Y:' + str( pos.y ) ) mc.postToChat( 'tileZ:' + str( tilePos.z ) + ', Z:' + str( pos.z ) ) [/python] あまり気にしなくても良いのですが、tilePosやposはマイクラでF3を押して出る座標と合いません。 気持ち悪くて一致させたい時には、マイクラのコマンドで /setworldspawn 0 0 0 と実行すれば一致させられます。

ハロー!マイクラ

,,
いよいよマイクラ世界をpythonでプログラミングします。 RaspberryJamModをインストールした時のpython-scripts.zipの中にあるmcpiフォルダが置いてある場所でプログラミングを始めます。

このページに書かれていること

・postTochat()でマイクラ世界にメッセージを送る ・おまじないのMinecraftオブジェクトで色々なことができる まずはマイクラの世界にあいさつします。 [python] import mcpi.minecraft as minecraft mc = minecraft.Minecraft() mc.postTochat('Hello World!') [/python] 最初の2行の [python] import mcpi.minecraft as minecraft mc = minecraft.Minecraft() [/python] はおまじないのようなものですが、とても大切です。このmcと名付けたMinecraftというオブジェクトを使って色々なことができます。 主人公のいる場所を表示させるには、おまじないに続けて、 [python] pos = mc.player.getTilePos() mc.postToChat( 'X:' + str( pos.x ) + ', Y:' + str( pos.y ) + ', Z:' + str( pos.z ) ) [/python] 主人公の下に鉄ブロックを置くには、 [python] import mcpi.block as block pos = mc.player.getTilePos() mc.setBlock( pos.x, pos.y - 1, pos.z, block.IRON_BLOCK ) [/python] setBlockをするときにpos.y - 1としないで、pos.yのままだと主人公にぶつかってしまいます。

PC版マイクラをPythonでプログラムする

,
PC版マイクラをプログラミングしてみたいと思います。 今回はクライアントMOD方式です。MODはマイクラの世界を拡張して新しい機能を付け足すものです。Pythonやスクラッチのプログラムを、同じパソコンの中のマイクラに対して実行します。 まずは準備を進めます(以下、Windows10での方法です)。クライアントMOD方式に必要なのはこの3つ。スクラッチはまた今度紹介します。 ・Minecraft ForgeRaspberry Jam ModPython 順番に準備します。

Minecraft Forgeをインストールする

Minecraft Forgeは色々なMODが動くために必要なものです。インストールの方法は、まいんくらふとにっきさんに詳しく書かれているので参考にしてください。今回はマイクラバージョン1.11.2に合わせたMinecraft Forgeをインストールします。

Raspberry Jam Modを入れる

Raspberry Jam Modのサイトにアクセスし、 上の方のreleasesをクリックします。最新のバージョン(2017/3/12時点では0.88.2)から、mods.zipとpython-scripts.zipをダウンロードします。 mods.zipは解凍するとマイクラバージョンごとのフォルダが出てきます。 1112のフォルダからRaspberryJamMod.jarをコピーして、先ほど、Minecraft Forgeをインストールしてできたmodsフォルダに置きます。 続いてpython-scripts.zipを解凍します。なにやらたくさんのファイルが出てきます。その中で、helloworld.pyを後で使いますので、確認しておいてください。 Raspberry Jam ModはこれでOKです。

Pythonをインストールする

最後にPythonをインストールします。Pythonは初めての人でも分かりやすいプログラミング言語の一つです。こちらのサイトを参考にしてみて下さい。

いよいよ動かしてみる

さて準備ができました。通常のマイクラランチャーを起動して、forgeのプロファイルを選んで起動します。 マイクラが起動したらMODを押して、 MODのリストにRaspberry Jam Modがいたら導入成功です。 マイクラの世界をスタートしたら、Eボタンを押して操作をパソコンに戻します。先ほど、確認したhelloworld.pyをダブルクリックしてください。そしてマイクラに戻ると・・・・ Hello world!と表示され、スティーブンの足元にダイヤモンド鉱石が生成されたら成功です! お疲れさまでした。

ラズパイでマイクラをプログラミングする

,
今回は、ラズパイの中で、マイクラをプログラミングで操作できるようにしてみます。 ラズパイのセットアップは完了している状態で始めます。ラズパイのセットアップについてはまた別な時に記事にします。 まず、ターミナルを起動します。 次にターミナルで以下のコマンドを入力します。 curl http://scratch2mcpi.github.io/install.sh | sh で、Enter。 なにやら始まるので、少し待って、この画面になったら完了。 すると、ラズパイのアイコンにこの2つがいるはずです。 これで準備は完了です。 では動かしてみます。まず最初にマイクラを起動します。 次にScratch2MCPIを起動します。この画面になったらOKです。

マイクラでプログラミングしてみる

,,,,,,
マイクラの世界で自由にプログラミングできたら! できます。 マイクラのエディションのようにいくつかの方法があります。 2018年9月15日更新
方法 エディション マイクラバージョン 必要なもの プログラミング言語
Minecraft Pi Minecraft Pi Edition Classicのような ラズパイ Scratch2MCPI スクラッチ Python
クライアントMOD方式 Java版(PC) 1.12 Minecraft Forge Raspberry Jam Mod mcpi-scratch スクラッチ Python
サーバーMOD方式 Java版(PC) 1.11.2 Spigot Raspberry Juice mcpi-scratch スクラッチ Python
コンピュータクラフト Java版(PC) 1.8.9 Minecraft Forge Computer Craft Lua
Microsoft MakeCode 統合版(BE) Education Edition 最新 CodeConnect MakeCodeブロック javascript
コマンドブロック 統合版(BE) Java版(PC) 最新 特になし オリジナル
[amazon_link asins='4058007133,4800711398,4800711657,1593276702,B076XNCRWV' template='ProductCarousel' store='kikushun-22' marketplace='JP' link_id='ce860320-80c2-11e8-85a4-65245cbc40a0'] マイクロソフトがWindows版にMakeCodeを提供したことでマイクラプログラミングの敷居がグンと下がりました。
  • セットアップが簡単で
  • マイクラのバージョンも新しく
  • プログラムできる要素が多い
一番オススメの方法です。 Minecraft Piを利用する方法はラズパイさえあれば、比較的簡単に始められます。 MOD方式は、プログラミングできる環境を作るのが少し大変です。クライアントMOD方式、サーバーMOD方式だと比較的新しいバージョンのマイクラで他のMODも共存させながらプログラミングが味わえます。 コンピュータークラフトも面白いです。Luaという聞きなれないプログラミング言語を使うことになりますが、親しみやすい簡単なスクリプト言語です。なによりマイクラの世界の中にコンピューターというブロックが出現し、マイクラの中でプログラミングできる楽しさがあります。 コマンドブロックもうまく組み合わせることでプログラミングできます。配布ワールドなどでよく使われている方法です。