パイクラおじさんの日記

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

なぜ普通の草が生やせないのか?

よく見る、この草。 f:id:pycra:20171011063356p:plain

見にくいので周りを土に変えて。 f:id:pycra:20171011063402p:plain

これが生やせない。

mcpipy/mcpi/block.pyを確認したけど、それらしいのはGRASS_TALL(31)FERN(31, 2)くらいしかない。

で、GRASS_TALLを指定すると、枯れた木?が生えた。

f:id:pycra:20171011063854p:plain

ブロックID=32が「枯れ木」なので、バグ?

ちなみに、32を指定すると、同じく「枯れ木」。 f:id:pycra:20171011064044p:plain

で、しょうがないので自分で草を設置して、ブロックID(データも)を確認するように、getBlockWithDataを呼ぶスクリプト(getblockwd.py)を作って確認。 (ついでにsetblock.pyもデータ対応した。)

草を設置して。 f:id:pycra:20171011063356p:plain

getblockwd.pyで調べると、(31, 1)とわかった。 f:id:pycra:20171011064709p:plain

隣にsetblock 1 0 0 31 1すると、同じ草が生えた! f:id:pycra:20171011064748p:plain

ということで、普通の草は(31, 1)で生やせる。

スクリプト

getBlockWithData対応のgetblockwd.py。

# coding: utf-8

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

FORMAT = "getBlockWithData({0:d}, {1:d}, {2:d})=({3:d}, {4:d})"

mc = minecraft.Minecraft()

if len(sys.argv) < 4:
    sys.exit("Usage: getblockwd.py [x y z]")

pos_x = int(sys.argv[1])
pos_y = int(sys.argv[2])
pos_z = int(sys.argv[3])

block = mc.getBlockWithData(pos_x, pos_y, pos_z)

mc.postToChat(FORMAT.format(pos_x, pos_y, pos_z, block.id, block.data))

引数のデータ対応のsetblock.py。

# coding: utf-8

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

FORMAT = "setBlock({0:d}, {1:d}, {2:d}, {3:d})"
FORMAT2 = "setBlock({0:d}, {1:d}, {2:d}, {3:d}, {4:d})"

mc = minecraft.Minecraft()

if len(sys.argv) < 5:
    sys.exit("Usage: setblock.py [x y z b d]")

pos_x = int(sys.argv[1])
pos_y = int(sys.argv[2])
pos_z = int(sys.argv[3])
block_id = int(sys.argv[4])
block_data = None
if len(sys.argv) >= 6:
    block_data = int(sys.argv[5])

if block_data is None:
    mc.setBlock(pos_x, pos_y, pos_z, block_id)
    mc.postToChat(FORMAT.format(pos_x, pos_y, pos_z, block_id))
else:
    mc.setBlock(pos_x, pos_y, pos_z, block_id, block_data)
    mc.postToChat(FORMAT2.format(pos_x, pos_y, pos_z, block_id, block_data))

余談

「GRASS_TALLってどんな植物?」ってググってみると、文字通り背の高い草が…「こんなにデカい草だったのね…ちょっとイメージが違う」

http://www.publicdomainpictures.net/pictures/20000/velka/tall-grass-1312079600krv.jpg

FERNについても調べたら、こっちはシダだった。

http://thepaintedhive.net/wp-content/uploads/2014/05/Free-Printable-Ferns.jpg