なぜ普通の草が生やせないのか?
よく見る、この草。
見にくいので周りを土に変えて。
これが生やせない。
mcpipy/mcpi/block.py
を確認したけど、それらしいのはGRASS_TALL(31)
とFERN(31, 2)
くらいしかない。
で、GRASS_TALLを指定すると、枯れた木?が生えた。
ブロックID=32が「枯れ木」なので、バグ?
ちなみに、32を指定すると、同じく「枯れ木」。
で、しょうがないので自分で草を設置して、ブロックID(データも)を確認するように、getBlockWithDataを呼ぶスクリプト(getblockwd.py)を作って確認。 (ついでにsetblock.pyもデータ対応した。)
草を設置して。
getblockwd.pyで調べると、(31, 1)とわかった。
隣にsetblock 1 0 0 31 1すると、同じ草が生えた!
ということで、普通の草は(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ってどんな植物?」ってググってみると、文字通り背の高い草が…「こんなにデカい草だったのね…ちょっとイメージが違う」
FERNについても調べたら、こっちはシダだった。