【マイクラコマンド解説】新executeコマンドで便利になった「unless block / unless blocksサブコマンド」でロケットランチャーを作る!統合版、教育版マインクラフト対応
executeコマンドのunless block / unless blocksサブコマンドについて解説します。 以前のexecuteコマンドにはunlessサブコマンドがなかったので、ロケットランチャーをつくるのに3つのコマンドブロックが必要でしたが、unlessサブコマンドを使えばコマンドブロック一つで作れます! unless block / unless blocksサブコマンドでロケットランチャーを作ろう! unlessサブコマンドを使用せず、ロケットランチャーを作る場合 unlessを使用しない場合 3つのコマンドブロックが必要統合版マインクラフトの旧executeコマンドは、unlessサブコマンドがサポートされていませんでした。
そのため、ifサブコマンドとスコア(変数)を利用して、ロケットランチャー用の矢などが空気ブロック内にあるかを判別し(1つ目のコマンドブロック)、地面に落下したら状態になったらスコア(変数)を減少させ(2つ目のコマンドブロック)、スコア(変数)が0以下になったら爆発状態のエンダークリスタルを召喚していました(3つ目のコマンドブロック)。
unlessを使用しない場合 1つ目のコマンドブロック unlessを使用しない場合 2つ目のコマンドブロック unlessを使用しない場合 3つ目のコマンドブロック 新executeコマンド:unless blockサブコマンド unless blockを利用した場合 コマンドブロックは1つでOK unless blockを利用した場合 ブロックの種類:リピートに設定、レッドストーン:動力が必要のまま unless blockを利用した場合 execute unless blockコマンドを入力 マイクラexecuteコマンド /execute as @e[type=minecraft:arrow] at @s unless block ~~-1~ air run summon minecraft:ender_crystal ~~~ ~~ minecraft:crystal_explode【解説】
executeコマンドにより、コマンド実行者は矢で、かつ、矢の真下が空気ブロックでなければ、矢が爆発状態のエンダークリスタルを召喚します。つまり、矢を放ったとき矢は空中にあり、矢の真下は空気ブロックであるため「unless block ~~-1~ air」という条件は成立せず、矢は爆発状態のエンダークリスタルを召喚しません。しかし、矢が地面に落下すると、矢の真下は空気ブロックでなくなり、「unless block ~~-1~ air」という条件が成立して矢は爆発状態のエンダークリスタルを召喚します。
unless blockを利用した場合 unless blockとunless blocksの違い
「unless block」では指定した位置のブロックを比較するため、「unless block ~~-1~ air」としたときは矢の真下が空気ブロックでなかったときに条件が成立するのに対して、上図のように真横から矢がブロックに当たった場合、条件が成立せず矢は爆発しない(エンダークリスタルを召喚しない)。
しかし、次に説明する「unless blocks」で指定した領域のブロックを比較することにより、矢が真横からブロックに当たった場合でも矢が爆発する(エンダークリスタルを召喚する)ように出来ます。
「unless block」
指定した位置のブロックが指定したブロックと比較します。
「unless blocks」
指定した領域のブロックを比較する。
新executeコマンド:unless blocksサブコマンドunless blocksを利用した場合 ブロックの種類:リピートに設定、レッドストーン:動力が必要のまま unless blocksを利用した場合 execute unless blocksコマンドを入力
マイクラexecuteコマンド /execute as @e[type=minecraft:arrow] at @s unless blocks ~1~1~1 ~-1~-1~-1 ~~~ all run summon minecraft:ender_crystal ~~~ ~~ minecraft:crystal_explode【解説】
executeコマンドにより、コマンド実行者は矢で、かつ、矢の周り(3x3x3範囲)のブロックと、矢(~~~)から~2~2~2の範囲のブロックに違いが生じたとき、矢は爆発状態のエンダークリスタルを召喚する。つまり、矢を放ったとき矢は空中にあり、矢の周り(3x3x3範囲)のブロックと、矢(~~~)から~2~2~2の範囲のブロックはすべて空気ブロックで同じであるため「unless blocks ~1~1~1 ~-1~-1~-1 ~~~ all」という条件は成立せず、矢は爆発状態のエンダークリスタルを召喚しません。しかし、矢が上下左右を問わずブロックに当たると、矢の周り(3x3x3範囲)のブロックと、矢(~~~)から~2~2~2の範囲のブロックで同じでなくなり、「unless blocks ~1~1~1 ~-1~-1~-1 ~~~ all」という条件が成立して矢は爆発状態のエンダークリスタルを召喚します。