ブロック設置

目標 : 自分の頭上に DIAMOND_OREブロックを置く!

f:id:pongsuke:20160530175431p:plain

ながれとしては、

1 自分の座標を取得する

2 自分の座標の上にブロックを設置する

練習 自分の座標を取得し、チャットエリアに表示する

注意点として、F3を押して表示される x,y,x とは、異なります。

特に、y が、F3の場合と大きく異なり、

F3 : yは岩盤が0かな?

API: yは水面が0かな?

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()
playerPos = mc.player.getPos()
mc.postToChat("Pos : " + str(playerPos))

出力

Pos : Vec3(941.7811125650827,-49.0,449.30000001192093)

f:id:pongsuke:20160530175138p:plain

注釈 .create(address = "localhost", port = 4711)

本番

import mcpi.minecraft as minecraft
import mcpi.block as block

mc = minecraft.Minecraft.create()
playerPos = mc.player.getPos()
mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_ORE)

サンプルに含まれている、helloworld.pyほぼそのままです。

playerPos.y+2 とすることで、自分の足元(下半身)から、2ブロック分上(自分の頭上)に、 ブロックを出現させています。

コマンド実行

方法1 チャットエリアから

/ を押してチャットモードに入り、

/py sample

方法2 Windowのコマンドラインから

コマンドプロンプトを出し(cmdなど)、スクリプト保存フォルダから、

PS C:\Users\***\AppData\Roaming\.minecraft\forge.1.9\mcpipy> python.exe .\sample.py

上記サンプルでは、forge.1.9というデータフォルダを作成し、そこに mcpipy を作成しています。

改良1 ブロックを変える

サンプルを改良してみましょう

設置するブロックを変更する

mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_ORE)

の、block.DIAMOND_OREを書き換えれば、いかにも別のブロックを設置できるようになりそうですが、 まさにその通りです。

例えば、

mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_BLOCK)

として実行すると、

f:id:pongsuke:20160530175754p:plain

ダイヤモンドブロックが設置されました!

どのようなブロックが利用可能なのかは、APIを見てください。

<Stuff about="code" />: Minecraft API

改良2 複数のブロックを設置する

次に、頭上に1つではなく、2つ設置しましょう。 2つ上と、3つ上にしましょう。

import mcpi.minecraft as minecraft
import mcpi.block as block

mc = minecraft.Minecraft.create()
playerPos = mc.player.getPos()
mc.setBlock(playerPos.x, playerPos.y+2, playerPos.z, block.DIAMOND_BLOCK)
mc.setBlock(playerPos.x, playerPos.y+3, playerPos.z, block.DIAMOND_BLOCK)

f:id:pongsuke:20160530180024p:plain