
矢がじめんについたら、だいばくはつ!
TNTつきの矢のつくりかたです。

1.じゅんび
コマンドブロックを持ちましょう。
/give @s minecraft:command_block

2.1つ目のコマンドブロック
コマンドブロックを1つおいて、コマンドをせっていしましょう。せっていは、「リピート」「無条件」「常時実行」です。
execute at @e[type=minecraft:arrow,nbt={inGround:1b}] run summon minecraft:tnt ~ ~ ~ {fuse:0}
※Java版1.21で確認済み。バージョンアップで Fuse が fuse になったので注意しましょう。

3.弓でテストをする
うまくいっていれば、弓で矢をうつと、じめんについた矢がばくはつします!(矢をうつには、弓をもって右クリック長押し!)
うまくうごかないばあいは、コマンドブロックを右クリックしてせっていをかくにんしよう!

4.いらなくなった矢をけすコマンドブロック
このままだと、矢がじめんにつく -> ばくはつ -> 矢がどこかにとんでいく -> じめんについたらまた ばくはつ! -> …と、ずっと ばくはつ!してしまいます。
もう1つコマンドブロックを出して、じめんについた矢はけしてしまいましょう。せっていは、「リピート」「無条件」「常時実行」です。
kill @e[type=minecraft:arrow,nbt={inGround:1b}]

5.おまけ
「がめんに いっぱい もじがでて じゃま!」というときは、コマンドでもじをけしておきましょう。
/gamerule commandBlockOutput false
コマンドブロックのコマンドをちょっと変えると、たとえば「ばくはつするたまご」もできるよ!
(なげられているあいだTNT!)execute at @e[type=minecraft:egg] run summon minecraft:tnt ~ ~ ~ {fuse:20}
(じめんにあたったらばくはつ)execute as @e[type=minecraft:egg] at @s unless block ~ ~-1 ~ minecraft:air run summon minecraft:tnt ~ ~ ~
細かい解説:
・ターゲットセレクタ: @s (コマンドを実行したエンティティ)。この場合は、@p (最も近いプレイヤー)や@a(全てのプレイヤー)でもOK。
・execute at X:エンティティXの位置でコマンドを実行。この場合は、地面についた矢の位置で run summon tnt ~ ~ ~をします。
・nbt={inGround:1b}:NBT(Named Binary Tag)で、矢が地面にささっているかをチェックしています。この 1b は 1(in Byte)、つまり true と同じ意味です。nbt={inGround:true} でも同じように動きます。こちらの方がプログラミングっぽいですね!
・「じめんにあたったら」は、矢以外だと少し難しくなります。今回は「下のブロックが空気でなくなったら」(unless block ~ ~-1 ~ minecraft:air)で判断しています。ちょっと上から、壁に当たらないように投げないと爆発しないかも。
おまけ
「コマンドブロックのとなりに石があれば レッドストーンを出す」というばあい
execute if block ~ ~ ~1 minecraft:stone run setblock ~ ~ ~2 minecraft:redstone_block
(ifのぎゃくには unless がつかえるよ!)
左Shiftキーのスニークでボタンが置けないときは、いっしょに左Ctrlも押してみよう。
コメントを残す