今日はMinecraftでPythonを使ってブロックを並べてみましょう!!
まず最初にブロックを1個置きます。
1.ブッロクを置く
必要なモジュールは「block」なので、上のスクリプトでmcpiからblockをimportで読み込んで、それをasで別名blockとする。
import mcpi.block as block
3行目はminecraftと接続する呪文。
4行目は後述しますが、プレイヤーの現在位置を取得する。
5行目はブロックを配置するために必要なメソッド(関数):setblock()を使って、変数posに格納されたプレイヤーの座標のx,y,zに2行目で指定したasでblockのモジュールから「STONE」を指定して1個置きます。
setblock(x,y,z,block.STONE)
ちなみにasを使わないと下のようなスクリプトと同じ意味になります。
5行目に注目。
setblock(x,y,z,mcpi.block.STONE)
STONEだけ指定するとERRになります。
setblock(x,y,z,STONE) → ERR
さらに、各ブロックはIDを持ってますのでこんな指定も出来ます。
例えば 石 = STONE はIDが「1」です。
setblock(x,y,z,block.Block(1))
下記がblock.pyに記載されているblockのIDの一部です。
さらにこんな書き方も出来ます。
asの指定なしにblockモジュールだけ呼び出して、ブッロクのIDの数字だけ指定します。
setblock(x,y,z,1)
では次に、座標x,y,zはプレイヤーの座標にするための内容に入ります。
2.プレイヤーの位置を取得する
必要なメソッド:getTilePos()
使い方:プレイヤーの位置をブロックの位置で取得します。
例 : pos = minecraft.player.getTilePos()
ここで変数 posにどんな座標値が格納されているか確認しましょう。
上のスクリプトの1、2はもう呪文のようなもんで説明済みなので割愛。
4行目でプレイヤーの位置情報を変数posに格納してます。
5では変数posをstrで囲み文字に変換しpostToChatでMinecraftのチャットにこのposの情報を表示させてます。
このスクリプトに「player.py」と名前をつけてminecraft上で実行してみます。
チャットでプレイヤーの現在位置が表示されました。
x:267 ,y:0 ,z:-20
ではこの座標にブッロクを置いてみましょう。
はい、石が1個置かれました!!
ここでもう一度自分の座標を確認してみると・・・
さっきの「player.py」をもう一度実行してみます。
x:266 ,y:0 ,z:-20 ですね。
さっき 【x:267 ,y:0 ,z:-20 】だったのでx座標が1個手前になっています。
スクリプトで自分の座標を起点に石を置いているので、石が自分の今いる位置に置かれました。
そのとたんプレイヤーが現れた石によって手前に弾かれているので座標が変わってます。
おもしろですよね、これ。
ということで今回はプレイヤーの位置の取得と石の種類、石の配置についてわかりました。
次回はさらにブロックの制御をやってみます。