繰り返し処理と時間を使って風車を作る(マイクラ×Python)

f:id:toimo2011:20181104074712p:plain

from mcpi.minecraft import Minecraft
from mcpi.block import *
import time
# 風車を作る
def windmill(mc,pos):
        # 0 風車のサイズは横7マス縦13マス
        # 1 下半分石レンガブロックを設置する(地面を合わせて6マス)
        mc.setBlocks(pos.x-3,pos.y-1,pos.z-1,pos.x+3,pos.y+4,pos.z-7,STONE_BRICK)
        # 2 上半分コンクリートブロックを設置する(251)(6マス)
        mc.setBlocks(pos.x-3,pos.y+5,pos.z-1,pos.x+3,pos.y+10,pos.z-7,251)
        # 3 中を空気ブロックにする
        mc.setBlocks(pos.x-2,pos.y,pos.z-2,pos.x+2,pos.y+9,pos.z-6,AIR)
        # 4 風車の後ろ側に扉を設置する
        mc.setBlock(pos.x,pos.y,pos.z-7,DOOR_WOOD.id,1)
        mc.setBlock(pos.x,pos.y+1,pos.z-7,DOOR_WOOD.id,8)
        # 5 屋根を設置する(階段レンガブロック、108)
        # 5-1 一段目
        mc.setBlocks(pos.x-3,pos.y+11,pos.z-1,pos.x+3,pos.y+11,pos.z-1,108,3)
        mc.setBlocks(pos.x-3,pos.y+11,pos.z-2,pos.x-3,pos.y+11,pos.z-6,108)
        mc.setBlocks(pos.x+3,pos.y+11,pos.z-2,pos.x+3,pos.y+11,pos.z-6,108,1)
        mc.setBlocks(pos.x-3,pos.y+11,pos.z-7,pos.x+3,pos.y+11,pos.z-7,108,2)
        # 5-2 二段目
        mc.setBlocks(pos.x-2,pos.y+12,pos.z-2,pos.x+2,pos.y+12,pos.z-2,108,3)
        mc.setBlocks(pos.x-2,pos.y+12,pos.z-3,pos.x-2,pos.y+12,pos.z-5,108)
        mc.setBlocks(pos.x+2,pos.y+12,pos.z-3,pos.x+2,pos.y+12,pos.z-5,108,1)
        mc.setBlocks(pos.x-2,pos.y+12,pos.z-6,pos.x+2,pos.y+12,pos.z-6,108,2)
        # 5-3 三段目
        mc.setBlocks(pos.x-1,pos.y+13,pos.z-3,pos.x+1,pos.y+13,pos.z-3,108,3)
        mc.setBlocks(pos.x-1,pos.y+13,pos.z-4,pos.x-1,pos.y+13,pos.z-4,108)
        mc.setBlocks(pos.x+1,pos.y+13,pos.z-4,pos.x+1,pos.y+13,pos.z-4,108,1)
        mc.setBlocks(pos.x-1,pos.y+13,pos.z-5,pos.x+1,pos.y+13,pos.z-5,108,2)
        # 6 羽を設置する(繰り返し処理で羽が回転しているように見せる)
        while True:
                # 6-1 縦横
                # 6-1-1 木
                mc.setBlocks(pos.x,pos.y+1,pos.z,pos.x,pos.y+21,pos.z,WOOD_PLANKS)
                mc.setBlocks(pos.x-10,pos.y+10,pos.z,pos.x+10,pos.y+10,pos.z,WOOD_PLANKS)
                # 6-1-2 羊毛
                mc.setBlocks(pos.x+1,pos.y+1,pos.z,pos.x+2,pos.y+9,pos.z,WOOL_WHITE)
                mc.setBlocks(pos.x-1,pos.y+12,pos.z,pos.x-2,pos.y+21,pos.z,WOOL_WHITE)
                mc.setBlocks(pos.x+2,pos.y+11,pos.z,pos.x+10,pos.y+12,pos.z,WOOL_WHITE)
                mc.setBlocks(pos.x-2,pos.y+8,pos.z,pos.x-10,pos.y+9,pos.z,WOOL_WHITE)
                time.sleep(1)
                mc.setBlocks(pos.x-10,pos.y+1,pos.z,pos.x+10,pos.y+21,pos.z,AIR)
                # 6-2 斜め
                # 6-2-1 木
                for i in range(7):
mc.setBlock(pos.x+i,pos.y+10+i,pos.z,WOOD_PLANKS)
                        mc.setBlock(pos.x-i,pos.y+10-i,pos.z,WOOD_PLANKS)
                        mc.setBlock(pos.x+i,pos.y+10-i,pos.z,WOOD_PLANKS)
                        mc.setBlock(pos.x-i,pos.y+10+i,pos.z,WOOD_PLANKS)
                # 6-2-2 羊毛
                for i in range(6):
                        mc.setBlock(pos.x+i+1,pos.y+12+i,pos.z,WOOL_WHITE)
                        mc.setBlock(pos.x+i+1,pos.y+13+i,pos.z,WOOL_WHITE)
                        mc.setBlock(pos.x-i-1,pos.y+7-i,pos.z,WOOL_WHITE)
                        mc.setBlock(pos.x-i-1,pos.y+8-i,pos.z,WOOL_WHITE)
                        mc.setBlock(pos.x+i+2,pos.y+9-i,pos.z,WOOL_WHITE)
                        mc.setBlock(pos.x+i+2,pos.y+10-i,pos.z,WOOL_WHITE)
                        mc.setBlock(pos.x-i-2,pos.y+10+i,pos.z,WOOL_WHITE)
                        mc.setBlock(pos.x-i-2,pos.y+11+i,pos.z,WOOL_WHITE)
                time.sleep(1)
                mc.setBlocks(pos.x-10,pos.y+1,pos.z,pos.x+10,pos.y+21,pos.z,AIR)

f:id:toimo2011:20181104074745p:plain