なんでも金属探知機

ホーム / ツール紹介 / なんでも金属探知機

マインクラフトのサバイバルモードでは、素材集めが大切です。特に鉄や金、ダイヤなどの貴重なブロックはとても重要です。でも数が少ないので探すのが大変。ということで、今回は、プログラミングの力で、あっという間に貴重なブロックを探せるようにしてみます。

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)

さてどうでしょうか。

こんなに簡単にダイヤモンドを見つけることができてしまいます。

普通のマインクラフトのサバイバルでは、ダイヤモンドを探すのにブランチマイニングなどをして、ずーっと石を掘り続けないといけないですが、こんな簡単に見つけることができます。次回はもっと簡単に貴重なブロックを「見える」ようにしてみます。

Translate »