パイクラおじさんの日記

MinecraftでPythonを勉強するおじさんの日記です。

池の水面データを参照しながらブロックを設置する(1)

loadnpy3.pyとして作成した。

# coding: utf-8

import mcpi.minecraft as minecraft
import mcpi.block as block
import numpy as np
import pycra.npydata as nd
import sys
from time import sleep

LOG_FMT = "Z step ({}/{})"

# ここからスタート

mc = minecraft.Minecraft()

if len(sys.argv) < 3:
    print("loadnpy3.py npyfilename watersurface")
    exit(-1)

array = np.load(nd.NPY_DIR+"/"+sys.argv[1])
wsurf = np.load(nd.NPY_DIR+"/"+sys.argv[2])

mc.postToChat("Loadnpy3.py Start!")

(zshape, xshape) = array.shape

for z in range(zshape):
    for x in range(xshape):
        ws = wsurf[z][x]
        hval = array[z][x]
        if ws > hval:
            mc.setBlocks(x, hval, z, x, hval-7, z, block.DIRT)
            mc.setBlocks(x, ws, z, x, hval+1, z, block.WATER)
        else:
            mc.setBlocks(x, hval-1, z, x, hval-7, z, block.DIRT)
            mc.setBlock(x, hval, z, block.GRASS)
        sleep(0.01)
    mc.postToChat(LOG_FMT.format(z, zshape))
    sleep(0.1)

mc.postToChat("Loadnpy3.py Finish!!!")

実行結果

実行してみてすぐに気がついたのが、水がダダ漏れする事。

設置処理の他に水の流れる処理が入って、物凄くCPUパワーを食うのでファンがブンブン回る。

f:id:pycra:20170927230016p:plain

f:id:pycra:20170927230040p:plain

f:id:pycra:20170927230059p:plain

f:id:pycra:20170927230121p:plain

f:id:pycra:20170927230207p:plain

水がところどころ盛り上がってるし…

先に池を作ってから、水を入れる処理をしないといけない。