コマンド構文解説-色々検知できる!/testfor, /testforblock, /testforblocks-
投稿日:2021/06/12
最終更新日:2021/06/12
どうも、ユキミ大福です。
今回はMinecraft統合版のコマンドである『 /testfor 』『 /testforblock 』及び『 /testforblocks 』について解説をしていきます。
ここで解説するコマンド等は、解説する注意事項等をよく読み、個人でより詳しく調べた上で、個人の責任において使用して下さい。コマンド等の使用によって如何なる損害が発生しても、筆者であり当ブログの管理者でもあるわたくしユキミ大福は一切の責任を負いかねますので、ご了承下さい。
今回のコマンドは?
今回ご紹介するコマンドは『 /testfor (テストフォア)』『 /testforblock (テストフォアブロック)』、そして『 /testforblocks (テストフォアブロックス)』です。
/testfor は、指定したエンティティが存在するかを検知できるというものです。
/testforblock と /testforblocks は特定の座標または領域のブロックが指定したものと一致するかを検知できるというものです。
まずは /testfor の構文から見てみましょう。
/testfor のコマンド構文
/testfor <セレクター>
/testfor の失敗条件
- 構文が適切でない(スペルミス等)。
- 指定したセレクターの条件に合う対象が存在しないか、読み込まれているチャンク内に存在していない。
/testfor の成功条件
- 上記の失敗条件を満たしていない場合。
/testfor の実行例
例1)
コマンド:/testfor @e
実行結果:ワールド内に存在する全てのエンティティの名前をチャット欄に返す。
例2)
コマンド:/testfor @a[scores={pNum=1..8}]
実行結果:「pNum」というオブジェクティブのスコアが「1~8」の全てのプレイヤーの名前をチャット欄に返す。
/testfor の詳細解説
/testfor の概要
/testfor は指定したエンティティが存在するかを検知するコマンドです。/gamerule の「commandblockoutput」が true ならコマンドブロックで、「sendcommandfeedback」が true ならチャット欄から実行した場合に、指定したセレクターに合うエンティティの名前が実行結果として返ってきます。
/testfor の実行結果等々
コマンドの実行結果は「コマンドの成功・失敗・エラー」のいずれかになります。
失敗した場合には「セレクターに合う対象がない」と返って来ます。
コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」と「コマンドが何人に対して成功したか(int)」の2点です。コマンドが成功した人数については、RSコンパレーターを用いてRS動力の形で取り出せます。
/testfor の強み・使い道
ゲーム制作においては、デバッグ時に特定の条件に合うエンティティが存在するかどうかを確認する時に使うことが多いです。
他の使い道としては、特定エンティティの数を参照してコマンドを実行したい場合にも使用できます。RSコンパレーターのメイン入力に /testfor を入れたコマンドブロックを接続すれば、その特定エンティティの数と同じRS動力強度をRSコンパレーターが発します(15以上は全て15になる)。
/testfor の弱み・弱点
このコマンドにこれといった弱点は存在しないと思います。
続いては、/testforblock の構文を見てみましょう。
/testforblock のコマンド構文
/testforblock <座標(int)> <ブロックID> <データ値(int)>
- <座標(int)>:必須
検知したいブロックがあるXYZ座標をint型で指定するか相対座標を入力する。相対座標を入力する場合、基準座標からの距離を指定する。 - <ブロックID>:必須
ブロックID。 - <データ値(int)>:省略可
ブロックのデータ値をint型の数値で指定する。省略した場合はデータ値が無視される。
/testforblock の失敗条件
- 構文が適切でない(スペルミス等)。
- 検知先のブロックが指定したブロックと一致しなかった場合。
- 指定した座標が読み込まれているチャンク内に存在していない。
/testforblock の成功条件
- 上記の失敗条件を満たしていない場合。
/testforblock の実行例
例1)
コマンド:/testforblock 75 60 21 stone
実行結果:座標( 75, 60, 21 )に存在するブロックが以下の場合に成功を返す。
- 焼き石(stone 0)
- 花崗岩(stone 1)
- 磨かれた花崗岩(stone 2)
- 閃緑岩(stone 3)
- 磨かれた閃緑岩(stone 4)
- 安山岩(stone 5)
- 磨かれた安山岩(stone 6)
例2)
コマンド:/testforblock ~ ~-1 ~ iron_block 0
実行結果:基準座標から1ブロック下のブロックが鉄のブロック(iron_block 0)の場合に成功を返す。
/testforblock の詳細解説
/testforblock の概要
/testforblock は指定した座標に指定したブロックが存在するかを検知するコマンドです。ブロックはデータ値で絞り込むこともできます。
/testforblock の実行結果等々
コマンドの実行結果は「コマンドの成功・失敗・エラー」のいずれかになります。
失敗した場合には「<座標> にあるブロックは <ブロック名> です (予想では <指定したブロック>)」または「世界の外にあるブロックにはアクセスできません」と返って来ます。
コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」のみです。成功した場合、RSコンパレーターを用いてRS動力を取り出すと必ず1になります。
/testforblock の強み・使い道
ゲーム制作においては、わたくしは謎解き系のゲームでよく使います。特定のブロックを特定の場所に置いたかどうかを確認する時等に使うことができます。要するに鍵ですね。
/testforblock の弱み・弱点
このコマンドでは1ブロックだけしか検知できません。2ブロック以上の領域のブロックを検知する場合には /testforblocks を使いましょう。
最後に、/testforblocks の構文を見てみましょう。
/testforblocks のコマンド構文
/testforblocks <検知元座標1(int)> <検知元座標2(int)> <検知先座標(int)> <領域判定モード>
- <検知元座標1(int)>・<検知元座標2(int)>:必須
検知したい構造物のお手本となる構造物の対角となるXYZ座標をint型で指定するか相対座標を入力する。相対座標を入力する場合、基準座標からの距離を指定する。X,Zは-30,000,000~30,000,000以内、Yは0~255以内、検知元領域の体積は524288ブロック未満でなければならない。 - <検知先座標(int)>:必須
検知したい構造物のある北西の角(各座標の値が1番小さくなる座標)のXYZ座標をint型で指定するか相対座標を入力する。相対座標を入力する場合、基準座標からの距離を指定する。 - <領域判定モード>:必須
領域の一致をどのように判定するかを以下の2つから指定する。省略した場合は all として扱われる。
・all:
検知元範囲と検知先範囲のブロックが全て一致しなければならない。
・masked:
検知元範囲の空気(air 0)の部分は検知先範囲のブロックと一致しなくても良い。
/testforblocks の失敗条件
- 構文が適切でない(スペルミス等)。
- 検知元領域と検知先領域のブロックが一致しなかった場合。
- 検知元領域のX,Zが-30,000,000~30,000,000、Yが0~255、体積が524288未満でない場合。
- 指定した座標が読み込まれているチャンク内に存在していない。
/testforblocks の成功条件
- 上記の失敗条件を満たしていない場合。
/testforblocks の実行例
例1)
コマンド:/testforblocks 100 65 100 120 70 100 0 10 0
実行結果:座標( 100, 65, 100 )と( 120, 70, 100 )を対角とする検知元領域と、座標( 0, 10, 0 )を北西の角(各座標の値が1番小さくなる座標)とする検知先領域が完全に一致している場合に成功を返す。
例2)
コマンド:/testforblocks 100 65 100 120 70 100 0 10 0 masked
実行結果:座標( 100, 65, 100 )と( 120, 70, 100 )を対角とする検知元領域と、座標( 0, 10, 0 )を北西の角(各座標の値が1番小さくなる座標)とする検知先領域が、検知元領域の空気(air 0)部分を除いて完全に一致している場合に成功を返す。
/testforblocks の詳細解説
/testforblocks の概要
/testforblocks は指定した検知元領域と検知先領域が一致するかを検知するコマンドです。<領域判定モード>が masked の場合、検知元領域では空気(air 0)だった部分は、検知先領域との照合の際に無視されるようになります。
/testforblocks の実行結果等々
コマンドの実行結果は「コマンドの成功・失敗・エラー」のいずれかになります。
失敗した場合には「比較元と比較先が同一ではありません」「指定した領域にあるブロックが多すぎます」または「世界の外にあるブロックにはアクセスできません」と返って来ます。
コマンドブロックが保持・出力する結果は「コマンドの実行に成功したか(True or False)」のみです。成功した場合、RSコンパレーターを用いてRS動力を取り出すと必ず1になります。
/testforblocks の強み・使い道
ゲーム制作においては /testforblock と同じく、謎解き系のゲームでよく使います。特定のブロックが特定の形に設置されているかどうか等を確認する時等に使うことができ、かなり応用が効きます。
/testforblocks の弱み・弱点
このコマンドでは検知元領域の体積が524288ブロック未満でなければなりません。この点は注意しましょう。ちなみにこの体積制限は /clone のコピー元領域制限と同じだったりします。
今回は様々なものを検知できるコマンドをご紹介しました。これらのコマンドは、コマンドブロックと組み合わせることでその真の実力を発揮することができます。そのため、以下のコマンドブロックについての記事も合わせて色々試してみて下さい!
今回のまとめ
- 『 /testfor 』は指定したエンティティが存在するかを検知するコマンド!
- 『 /testforblock 』は指定した座標に指定したブロックが存在するかを検知するコマンド!
- 『 /testforblocks 』は指定した検知元領域と検知先領域が一致するかを検知するコマンド!
関連記事
- コマンド構文解説-霧を操る…?/fog-
- コマンド構文解説-エンティティにライド・オン!/ride-
- コマンド構文解説-モブがアクションを起こす!?/event, /mobevent-
- コマンド構文解説-あのモブのあのモーションを!?/playanimation-
- コマンド構文解説-何が起こるんだ!?PART1!/connect ( /wsserver ), /help ( /? ), /kick
- コマンド構文解説-何が起こるんだ!?PART2!/list, /locate, /schedule-
- コマンド構文解説-コマンドに革命を起こす…!?/function, /reload-
当記事及び当ブログへのご意見・ご質問はいつでも受け付けております。
お気軽にコメント欄までどうぞ!
↓良ければポチッとお願いします。