マインクラフトのサバイバルモードでは、素材集めが大切です。特に鉄や金、ダイヤなどの貴重なブロックはとても重要です。でも数が少ないので探すのが大変。ということで、今回は、プログラミングの力で、あっという間に貴重なブロックを探せるようにしてみます。
import mcpi.minecraft as minecraft import mcpi.block as block import time from mcpi.vec3 import Vec3 mc = minecraft.Minecraft() def scanIron(depth): for y in range(0, depth): pos = mc.player.getTilePos() blk = mc.getBlock(pos.x, pos.y - y, pos.z) if blk == block.IRON_ORE.id: mc.postToChat("Iron! y=" + str(-y)) while True: scanIron(64) time.sleep(1)
主人公の足元のブロックを深さ128まで、鉄鉱石のブロックIDがあるか探して、見つかったらチャットするというプログラムを書きました。それをwhile True:
で繰り返し続けています。while True:
の無限ループから抜けてプログラムを終了するにはctrlキーとcキーを一緒に押してください。さて実行しながら歩いてみましょうか。見つかるでしょうか。
おおっ!?あります。今足元に鉄鉱石があるはずです。
主人公からの深さチャットしているので、掘り進むと数字が小さくなります。
そして、ついに・・・
出たー!!
続けて、プログラムをちょっと改良して、鉄鉱石以外にも、金鉱石、ダイヤモンド鉱石にも反応するようにしてみました。
def scanTarget(depth, target): for y in range(0, depth): pos = mc.player.getTilePos() blk = mc.getBlock(pos.x, pos.y - y, pos.z) if blk in target: mc.postToChat(target[blk] + "! " + str(-y)) while True: scanTarget(128, target) time.sleep(1)
さてどうでしょうか。
こんなに簡単にダイヤモンドを見つけることができてしまいます。
普通のマインクラフトのサバイバルでは、ダイヤモンドを探すのにブランチマイニングなどをして、ずーっと石を掘り続けないといけないですが、こんな簡単に見つけることができます。次回はもっと簡単に貴重なブロックを「見える」ようにしてみます。