面白いプログラミングをしてみます。
このコードを実行すると、
import mcpi.minecraft as minecraft import mcpi.block as block from mcpi.vec3 import Vec3 mc = minecraft.Minecraft() pos = mc.player.getTilePos() + Vec3( 3, 0, 0 ) #1 mc.setBlock( pos, block.WOOD ) #2 mc.setBlock( pos + Vec3( 0, 1 , 0 ), block.WOOD ) #3 mc.setBlocks( pos + Vec3( -2, 2, -2 ), pos + Vec3( 2, 2, 2 ), block.LEAVES ) mc.setBlock( pos + Vec3( 0, 2, 0 ), block.WOOD ) #4 mc.setBlock( pos + Vec3( 0, 3, 0 ), block.WOOD ) #5 mc.setBlocks( pos + Vec3( -1, 4, -1 ), pos + Vec3( 1, 4, 1 ), block.LEAVES ) mc.setBlock( pos + Vec3( 0, 4, 0), block.WOOD ) #6 mc.setBlock( pos + Vec3( 0, 5, 0 ), block.LEAVES )
こんな感じで木を作ることができます。
setBlock(), setBlocks()でオークの原木、オークの葉を順番に置いています。
setBlocks()は2つの位置を指定して、直方体にブロックを置く関数です。
ブロックの種別を変えたらどうでしょう。オークの葉を金ブロックに変えると
他にもカボチャのなる木、TNTのなる木などなど。マグマのなる木は危険です。
せっかくなので、色々な木を作るコードを関数にまとめてみます。
関数にまとめると
import mcpi.minecraft as minecraft import mcpi.block as block from mcpi.vec3 import Vec3 mc = minecraft.Minecraft() def createTree( start, wood = block.WOOD, leaf = block.LEAVES ): mc.setBlock( start, wood ) mc.setBlock( start + Vec3( 0, 1, 0 ), wood ) mc.setBlocks( start + Vec3( -2 ,2, -2 ), start + Vec3( 2, 2, 2 ), leaf ) mc.setBlock( start + Vec3( 0, 2, 0 ), wood ) mc.setBlock( start + Vec3( 0, 3, 0 ), wood ) mc.setBlocks( start + Vec3( -1, 4, -1 ), start + Vec3( 1, 4, 1 ), leaf ) mc.setBlock( start + Vec3( 0, 4, 0 ), wood ) mc.setBlock( start + Vec3( 0, 5, 0 ), leaf ) createTree( mc.player.getPos() + Vec3( 1, 0, 1 ), block.WOOD, block.LEAVES ) createTree( mc.player.getPos() + Vec3( 10, 0, 1 ), block.WOOD, block.GOLD_BLOCK ) createTree( mc.player.getPos() + Vec3( 20, 0, 1 ), block.WOOD, block.TNT) createTree( mc.player.getPos() + Vec3( 30, 0, 1 ), block.WOOD, block.PUMPKIN_ACTIVE) createTree( mc.player.getPos() + Vec3( 40, 0, 1 ), block.WOOD, block.LAVA_STATIONARY)
このように引数を変えるだけで色々な木(もう木じゃないけど)を簡単に作ることができるようになります。