行きつけのCoderDojoで、「 ボタンを押せば水中に 着火済みTNTがたくさん敷き詰められて爆発する仕組みを作りたい」という質問があったので色々と調査すると…
- 着火済みTNTはエンティティなのでsummonで召喚するので、「一度にたくさん」はできない。
- fillコマンドはブロック用なので、着火済みTNTには使えない。
ということが分かったので、どうしたものかと考えたところ
「大量のTNTが一度に爆発するようにすればいいだけでは」ということで
- fillコマンドでTNTを敷き詰める
- TNTを敷き詰めた部分の1か所に着火済みTNTを召喚する
としてみることにしました。
TNTを敷き詰める範囲を調べる
まず、適当に池(?)を作ります。
水中にもぐってTNTを敷き詰める範囲を調べます。
F3ボタンを押しデバッグ画面を表示させ、TNTを敷き詰めたい箇所のブロックをポイントし、「Looking at block」と表示されている箇所の座標を確認します。
この場合だと 216 0 225 です。TNTはこのブロックの上に置きたいので、216 1 225 になります。
同様に、対角の隅の座標を調べます。今回は219 0 223 でした。なので、216 1 225 ~ 219 1 223 の範囲にTNTを敷き詰めます。
コマンドブロックを配置
インパルスのコマンドブロックと、チェーンのコマンドブロックを使います。インパルスのコマンドブロックにはボタンを付けます。
コマンドブロックの矢印(?)の向きは同じになるようにしてください。
fillコマンドでTNTを敷き詰める
TNTを敷き詰めるのはfillコマンドで 行います。インパルスのコマンドブロックに設定します。こんな感じ。
summonコマンドで着火済みTNTを召喚する
fillコマンドでTNTを敷き詰めたどこかに着火済みTNTを召喚します。場所は範囲内ならどこでもいいのですが座標を確認するのがめんどくさいので一番はしっこ。チェーンのコマンドブロックに設定します。こんな感じです。
着火済みTNTなので、コマンド実行後すぐに爆発します。
試してみましょう。
…周囲に実験失敗した跡があるのは気にしないでください。
ボタンを押してすぐに爆発するのではなく、例えば1秒後に爆発してほしければ
/summon minecraft:tnt x y z {Fuse:20}
と設定してください。
コメント