金のなる木を植える

ホーム / ツール紹介 / 金のなる木を植える

面白いプログラミングをしてみます。
このコードを実行すると、

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)

このように引数を変えるだけで色々な木(もう木じゃないけど)を簡単に作ることができるようになります。

Translate »