【マイクラ】testforblocksコマンドの使い方・構文・範囲比較を解説【統合版】

この記事はマイクラ統合版(Bedrock Edition)向けのコマンド解説です
Java版では現在、/testforblocks コマンドは使用できません
コマンドを使うにはチートON、またはコマンドを実行できる権限が必要です

こんにちは。ゆずかきです。

マイクラ統合版でコマンドを触っていると、

「この場所のブロック配置が、お手本と同じか判定したい」
「建築ミニゲームで、完成したらクリアにしたい」
「複数ブロックをまとめて比較できるコマンドってないの?」

と思うことはありませんか?

そんな時に使えるのが、今回紹介する /testforblocks コマンドです。

/testforblock が「1か所のブロックを調べるコマンド」なのに対して、/testforblocks範囲ごとブロック配置を比較するコマンドです。
つまり、1ブロックだけではなく、3×3の床、5×5の壁、小さな建物、パズルの完成形などをまとめて確認できます。

この記事を読めば、次のことが分かるようになります。

  • testforblocks コマンドの基本構文が分かります👍
  • allmasked の違いが分かります👌
  • コマンドブロックで「一致したら次の処理を動かす」仕組みが作れます
  • 建築チェック・ミニゲーム・パズル判定に応用できます(^^♪

本記事では、マイクラ統合版の公式ドキュメント・コミュニティWiki・Bedrock向けコマンド情報を確認しながら、初心者さんでも使えるように整理していきますね。

それでは、やっていきましょう!

※本記事は統合版(Bedrock Edition)向けです。
※Java版では現在、/testforblocks は削除されているため、Java版の方は /execute if blocks など別構文をご確認ください。
※コマンド仕様はアップデートで変わる可能性があります。古いバージョンで挙動が違う場合は、まず最新版への更新を確認してくださいね。


目次

1. testforblocksコマンドとは
2. testforblocksの基本構文
3. 範囲指定の考え方|begin・end・destination
4. allとmaskedの違い
5. 実際の使い方|お手本と建築物を比較する
6. コマンドブロックで使う方法
7. execute if blocksで書く場合
8. 実用例|ミニゲーム・建築チェック・パズル判定
9. よくある失敗とチェックポイント
10. バージョン別の注意点
11. まとめ
12. 参考文献

この記事で分かること
・統合版の /testforblocks の使い方
・範囲比較コマンドの座標指定
allmasked の使い分け
・コマンドブロックや /execute if blocks への応用


1. testforblocksコマンドとは

/testforblocks は、2つの範囲のブロック配置が同じかどうかを調べるコマンドです。

例えば、次のような場面で使えます。

  • お手本の建築と、プレイヤーが作った建築が同じか確認する
  • 指定した形にブロックを置けたら扉を開ける
  • パズルの完成判定を作る
  • ミニゲームで「正しい配置になったらクリア」にする
  • 配布ワールドで、装置や建築の復元チェックを行う

分かりやすく言うと、ブロック版の間違い探しみたいなコマンドですね。

/testforblock は1ブロックだけを見るコマンドですが、/testforblocks は範囲で比較できます。
そのため、1個ずつコマンドブロックを並べるよりも、かなりスッキリ作れることがあります。

ただし、最初は座標の考え方が少し分かりにくいです。
特に destination の意味を間違えると、ほぼ確実に失敗します。

ここ重要です
testforblocks は「この範囲にこのブロックがあるか?」ではなく、
「この範囲と、別の範囲が同じ形か?」を調べるコマンドです。

ここを間違えると、testforblock と混同してハマりやすいです。
筆者も最初は「範囲内に特定ブロックがあるか探すコマンド」だと思っていて、しばらく失敗しました。


2. testforblocksの基本構文

統合版の基本構文は下記です。

/testforblocks <begin: x y z> <end: x y z> <destination: x y z> [masked|all]

これだけ見ると少し分かりにくいので、表に整理しますね。

項目 意味 入力例
begin 比較元範囲の1つ目の角 0 64 0
end 比較元範囲の反対側の角 4 66 4
destination 比較先範囲の下側・北西側の角 20 64 0
masked / all 空気ブロックをどう扱うか all


実際のコマンド例はこちらです。

/testforblocks 0 64 0 4 66 4 20 64 0 all

この場合、次のような意味になります。

  • 0 64 0 から 4 66 4 までの範囲を比較元にする
  • 比較先は 20 64 0 から同じ大きさで自動的に見られる
  • all なので、空気ブロックも含めて完全一致を見る

つまり、比較元が 5×3×5 の範囲なら、比較先も 20 64 0 を角として 5×3×5 の範囲がチェックされます。

注意!
destination では、比較先の終点座標は入力しません。
比較先のサイズは、beginend で指定した比較元範囲から自動で決まります。

ここを「比較先の終点」と勘違いすると、コマンドは成功しません。
destination は、あくまで比較先範囲を調べ始める基準点と考えると分かりやすいです。


3. 範囲指定の考え方|begin・end・destination

testforblocks で一番つまずきやすいのが、範囲指定です。
ここは少し丁寧に見ていきましょう。

例えば、下記のように3×3の床を比較したいとします。

/testforblocks 0 64 0 2 64 2 10 64 0 all

この場合、比較元はこうです。

  • X座標:0〜2
  • Y座標:64
  • Z座標:0〜2

つまり、3×1×3の床です。

そして比較先は、10 64 0 を角として同じ大きさを見に行きます。
つまり、比較先は内部的にはこんな範囲になります。

  • X座標:10〜12
  • Y座標:64
  • Z座標:0〜2

この2つの範囲が完全に同じなら、コマンドは成功します。
違うブロックが1つでも混じっていれば、all では失敗します。

beginとendは逆でも大丈夫?

比較元の beginend は、2つの角を指定するものです。
そのため、次の2つは同じ範囲を指定している扱いになります。

/testforblocks 0 64 0 2 64 2 10 64 0 all
/testforblocks 2 64 2 0 64 0 10 64 0 all

ただし、読者さんが後から見返した時に分かりやすいように、筆者はなるべく小さい座標から大きい座標へ書くことをおすすめします。
コマンドは後から自分で読んでも分からなくなることがあるので、ここは見やすさ優先で大丈夫です。

destinationは比較先の基準になる角にする

destination は、比較先の下側・北西側の角を指定します。
言い換えると、比較先範囲を同じ大きさで調べ始める基準点です。

ここをずらすと、比較先全体がずれてしまいます。
ブロック配置は正しいのに失敗する時は、かなりの確率でこの destination が原因です。

体験談
筆者は最初、比較先の中心あたりを destination に入れてしまい、何度やっても失敗しました。
destination は中心ではなく、比較先範囲の角です。ここは本当に注意してくださいね。


4. allとmaskedの違い

testforblocks の最後には、all または masked を指定できます。
省略した場合は、基本的に all と同じ扱いです。

/testforblocks 0 64 0 4 66 4 20 64 0 all
/testforblocks 0 64 0 4 66 4 20 64 0 masked

この2つは、空気ブロックの扱いが違います。

all:空気も含めて完全一致

all は、比較元と比較先のすべてのブロックが同じかを見ます。
空気ブロックも判定対象です。

例えば、比較元に空気がある場所は、比較先も空気でないと失敗します。

建築物を丸ごと比較したい時は、まず all を使うのが分かりやすいです。

/testforblocks 0 64 0 4 66 4 20 64 0 all

allが向いている場面
・建築物を完全一致でチェックしたい
・余計なブロックが置かれていないか確認したい
・お手本と1ブロック単位で同じか見たい

masked:比較元の空気を無視する

masked は、比較元にある空気ブロックが、比較先のどのブロックとも一致する扱いになります。
つまり、比較元が空気の場所は、比較先が何ブロックでも一致扱いになります。

/testforblocks 0 64 0 4 66 4 20 64 0 masked

これが便利なのは、必要なブロックだけ見たい時です。

例えば、お手本側に「赤色の羊毛だけ置いた型」を作っておけば、比較先に余計な装飾ブロックがあっても、赤色の羊毛の場所だけ合っていれば成功させることができます。

maskedが向いている場面
・パズルで必要な場所だけチェックしたい
・空白部分はプレイヤーが自由に置いても良いルールにしたい
・ミニゲームで特定ブロックの配置だけ見たい

ただし、ここも勘違いしやすいです。
無視されるのは、比較元側の空気ブロックです。
比較先側の空気を勝手に無視してくれるわけではありません。

allとmaskedの使い分けまとめ

モード 空気ブロックの扱い おすすめ用途
all 空気も含めて完全一致 建築物の完全比較
masked 比較元の空気を無視 必要ブロックだけの判定


初心者さんは、まず all で動作確認すると分かりやすいです。
その後で「空気部分は無視したいな」と思ったら、masked に切り替えると良いですね。


5. 実際の使い方|お手本と建築物を比較する

ここからは、実際に使うイメージで見ていきましょう。
今回は、お手本の床と、プレイヤーが作った床が同じか調べる例にします。

1. お手本の範囲を決める

まず、お手本となる3×3の床を作ります。
例として、座標は下記にします。

  • お手本の開始位置:0 64 0
  • お手本の終了位置:2 64 2

この範囲が、比較元になります。

2. プレイヤー側の比較先を決める

次に、プレイヤーが同じ床を作る場所を決めます。
比較先の角を、今回は 10 64 0 にします。

この場合、実際に比較されるのは、10 64 0 から 12 64 2 までの3×3範囲です。

3. コマンドを入力する

チャット欄、またはコマンドブロックに次のコマンドを入力します。

/testforblocks 0 64 0 2 64 2 10 64 0 all

お手本と比較先が同じなら成功します。
1ブロックでも違えば失敗します。

4. 成功しない時は目印ブロックを置く

最初は、比較している範囲が見えにくくて混乱します。
その場合は、範囲の四隅に一時的な目印ブロックを置くと分かりやすいです。

おすすめは、金ブロックや赤色の羊毛など、目立つブロックです。
コマンドが成功するか確認した後で、目印は壊せばOKです。

筆者のおすすめ
最初から大きい建物で試すのではなく、まずは3×3の床で練習してください。
小さい範囲で成功してから大きくすると、座標ミスをかなり減らせます。

5. 建物を比較する場合

建物を比較する場合は、床だけではなく高さも含めて指定します。

例えば、5×4×5の小屋を比較するなら、こんな感じです。

/testforblocks 0 64 0 4 67 4 20 64 0 all

この場合、比較元は下記です。

  • X:0〜4
  • Y:64〜67
  • Z:0〜4

5×4×5なので、合計100ブロック分を比較します。
建物の向きが違ったり、階段の向きが違ったり、ドアの開閉状態が違ったりすると、完全一致では失敗することがあります。

特に階段・トラップドア・ボタン・レバーなどは向きや状態があるので、建築チェックに使う時は注意してくださいね。


6. コマンドブロックで使う方法

testforblocks は、チャット欄で単発確認するだけでも使えます。
ただ、本領を発揮するのはコマンドブロックと組み合わせた時です。

例えば、次のような仕組みが作れます。

  • お手本と同じ形になったらメッセージを出す
  • パズルが完成したら鉄のドアを開ける
  • 建築ミニゲームでクリア判定を出す
  • 正しい配置になったら報酬を渡す

基本構成

初心者さん向けなら、まずは下記の2個構成がおすすめです。

1個目:インパルスコマンドブロック

/testforblocks 0 64 0 2 64 2 10 64 0 all

2個目:チェーンコマンドブロック(条件付き)

/say 建築チェックOK!

設定は、こんな感じです。

  • 1個目:インパルス / 無条件 / 動力が必要
  • 2個目:チェーン / 条件付き / 常時実行
  • 2個目の矢印が、1個目からつながる向きに置かれていること

これで、1個目の testforblocks が成功した時だけ、2個目の /say が実行されます。

常時チェックしたい場合

ミニゲームやパズルで常に判定したい場合は、1個目をリピートコマンドブロックにします。

  • 1個目:リピート / 無条件 / 常時実行
  • 2個目:チェーン / 条件付き / 常時実行

ただし、毎ティック広い範囲を比較すると、重くなる可能性があります。
大きな建物のチェックをずっと回し続けるのは、あまりおすすめしません。

筆者なら、ボタンを押した時だけ判定する形にします。
その方が分かりやすいですし、ワールドにも優しいです。

コマンドブロックが動かない時

コマンドブロックは、プレイヤーから遠すぎる場所にあると動かないことがあります。
これは、コマンドブロックがあるチャンクが読み込まれていないためです。

長距離で動かす配布ワールドや常時稼働装置では、必要に応じて tickingarea も検討してください。
ただし、初心者さんがいきなり tickingarea を使うと管理がややこしくなるので、まずはプレイヤーの近くで動作確認しましょう。

注意!
コマンドブロックは「置き方」も大事です。
チェーンコマンドブロックは、前のコマンドブロックの矢印方向につながるように置いてくださいね。


7. execute if blocksで書く場合

統合版では、現在の /execute 構文を使って、同じような範囲比較を書くこともできます。

構文は下記です。

/execute if blocks <begin: x y z> <end: x y z> <destination: x y z> <all|masked> run <実行したいコマンド>

例えば、お手本と比較先が一致したらメッセージを出す場合は、こう書けます。

/execute if blocks 0 64 0 2 64 2 10 64 0 all run say 建築チェックOK!

testforblocks と違い、execute if blocks一致したらそのまま別コマンドを実行できます。
そのため、コマンドブロックを少なくしたい時や、処理を1行でまとめたい時に便利です。

testforblocksとexecute if blocksの違い

書き方 特徴 向いている場面
/testforblocks 範囲比較だけを行う 条件付きチェーンコマンドブロックと組み合わせる
/execute if blocks 比較に成功したら、そのまま別コマンドを実行できる 1行で処理をまとめたい時


初心者さんには、まず /testforblocks で範囲比較の考え方を覚えることをおすすめします。
その後、コマンドに慣れてきたら /execute if blocks に移行すると、かなり作れるものが増えます。

筆者の考え
勉強用なら /testforblocks
実用装置なら /execute if blocks
こんな使い分けが分かりやすいと思います。


8. 実用例|ミニゲーム・建築チェック・パズル判定

ここからは、testforblocks の使い道をもう少し具体的に紹介します。

実用例1:建築お手本チェック

一番分かりやすいのは、お手本と同じ建築を作れたか確認する仕組みです。

例えば、配布ワールドで「この形を作れたらクリア」という課題を作る場合、あらかじめ見えない場所にお手本を作っておきます。
プレイヤーが作る場所と比較して、一致したらクリア表示を出します。

/execute if blocks 0 64 0 4 67 4 20 64 0 all run title @a title 建築成功!

この仕組みなら、プレイヤーが正しく建築できた時だけ反応します。
建築練習ワールドやチュートリアルにも使いやすいですね。

実用例2:ブロック配置パズル

次におすすめなのが、ブロック配置パズルです。

例えば、赤色・青色・黄色の羊毛を正しい場所に置いたら扉が開く仕組みを作れます。
この場合、比較元には必要な色の羊毛だけを置き、空気部分は masked で無視すると作りやすいです。

/execute if blocks 0 64 0 4 64 4 20 64 0 masked run setblock 30 64 0 air

この例では、正しい配置になったら指定位置のブロックを空気にして、通路を開けるような使い方ができます。

masked を使えば、プレイヤーが余計な場所に装飾を置いていても、重要なブロックだけを見られます。
パズル向きですね。

実用例3:修復チェック

壊れた橋や装置を、正しい形に戻せたか確認する使い方もできます。

例えば、冒険マップで「橋を修理したら先へ進める」仕組みにしたい場合です。
お手本の橋を別の場所に作っておき、プレイヤーが修理する橋と比較します。

/execute if blocks 100 64 100 106 64 102 200 64 100 all run say 橋の修理完了!

建築物の修復イベントを作るなら、かなり相性が良いです。

実用例4:マルチプレイの課題判定

マルチプレイで建築競争や協力パズルを作る時にも使えます。

  • チームごとに同じ形を作れたか判定
  • 正しい順番でブロックを置けたか確認
  • 制限時間内に課題を完成できたか判定

このような仕組みは、scoreboard と組み合わせるとさらに広がります。
ただし、この記事では初心者向けに、まず範囲比較だけを理解できればOKです。


9. よくある失敗とチェックポイント

testforblocks がうまく動かない時は、だいたい原因が決まっています。
順番に確認していきましょう。

1. testforblockとtestforblocksを間違えている

コマンド名がかなり似ています。

  • /testforblock:1ブロックだけ調べる
  • /testforblocks:範囲同士を比較する

複数ブロックを比較したい時は、最後に s が付く /testforblocks です。
ここは地味に間違えます。

2. destinationを終点座標だと思っている

一番多いミスです。
destination は比較先の終点ではありません。

比較先の基準になる角の座標です。
比較先の範囲サイズは、比較元の beginend から自動で決まります。

失敗例
比較先の終点を入れてしまう

/testforblocks 0 64 0 2 64 2 10 64 2 all

この場合、10 64 2 を角として3×3が見られるので、思っていた場所とズレる可能性があります。

3. allで空気ブロックまで見ている

all は空気も含めて完全一致です。
比較先に余計なブロックがある、または空気であるべき場所にブロックがあると失敗します。

「必要なブロックだけ合っていれば良い」という仕組みにしたいなら、masked を試してください。

4. maskedの空気無視を逆に考えている

masked で無視されるのは、比較元側の空気です。
比較先側の空気が勝手に無視されるわけではありません。

お手本側に必要なブロックだけを置き、それ以外を空気にしておくと、masked の使い道が分かりやすいです。

5. 範囲が広すぎる

testforblocks は広い範囲も比較できますが、無限に広く指定できるわけではありません。
範囲が大きすぎると、ブロック数が多すぎるという内容のエラーで失敗することがあります。

初心者さんは、まず小さい範囲で作ることをおすすめします。
大きな建物を比較したい場合も、いきなり丸ごとではなく、床・壁・屋根のように分けるとトラブルが減ります。

6. チャンクが読み込まれていない

比較元や比較先、コマンドブロックがある場所が読み込まれていないと失敗することがあります。
特に、遠く離れたお手本を見に行く構造だと起きやすいです。

最初は、比較元・比較先・コマンドブロックを近くに置いてテストしてください。
ちゃんと動くことを確認してから、遠い場所に移す方が安全です。

7. ブロックの向きや状態が違う

階段、ドア、トラップドア、ボタン、レバーなどは、同じブロックに見えても状態が違うことがあります。

  • 階段の向き
  • トラップドアの上下
  • ドアの開閉状態
  • ボタンが押されているかどうか
  • レバーのON/OFF

このような状態違いで失敗することがあります。
建築チェックに使う場合は、なるべく状態が変わりにくいブロックから試すのがおすすめです。

チェックリスト

どうしても成功しない時は、下記を確認してください。

  • [ ] /testforblock ではなく /testforblocks になっているか?
  • [ ] beginend は比較元の2つの角になっているか?
  • [ ] destination は比較先の角になっているか?
  • [ ] 比較先の終点座標を入れてしまっていないか?
  • [ ] all で空気まで完全一致を求めていないか?
  • [ ] masked の空気無視を逆に考えていないか?
  • [ ] 比較元・比較先・コマンドブロック周辺が読み込まれているか?
  • [ ] 階段やドアなど、向きや状態が違うブロックが混じっていないか?

10. バージョン別の注意点

testforblocks は、統合版では現在も公式ドキュメントに掲載されているコマンドです。
ただし、Java版と統合版で扱いが違います。

統合版の場合

統合版では、構文は下記です。

/testforblocks <begin: x y z> <end: x y z> <destination: x y z> [masked|all]

また、現在の /execute 構文では、同系統の比較を次のように書けます。

/execute if blocks <begin: x y z> <end: x y z> <destination: x y z> <all|masked> run <command>

昔ながらのコマンドブロック連鎖で作るなら /testforblocks
1行で実行処理までまとめたいなら /execute if blocks
このように覚えておくと分かりやすいです。

Java版の場合

Java版では、現在 /testforblocks は使えません。
昔のJava版には存在していましたが、現在のJava版では削除されています。

Java版で似たことをしたい場合は、/execute if blocks 系の構文を使うことになります。
ただし、この記事は統合版向けなので、Java版の細かい構文は別記事で扱うのが良いですね。

1.21系列以降で気を付けたいこと

統合版1.21.70では、単体ブロック判定の /testforblock でブロック状態を正しく見ない不具合がありました。
この件は統合版1.21.90の公式変更履歴で修正が案内されています。

また、Minecraftは2026年からバージョン番号の付け方が変わり、統合版でも 26.20 のような年ベースの番号が使われるようになっています。
現在確認できる公式コマンドリファレンス上では、testforblocks の基本構文は同じ形で掲載されています。

直近の統合版26.20の公式変更履歴ではコマンド関連の修正もありますが、testforblocks の基本構文を変更する内容は確認できませんでした。
そのため、本記事では現在確認できる安定版ドキュメントの構文を基準に解説しています。

注意!
コマンドはアップデートで細かい挙動が変わることがあります。
配布ワールドや長期運用ワールドで使う場合は、必ず自分の環境でも小さい範囲からテストしてくださいね。


11. まとめ

以上、マイクラ統合版の testforblocks コマンドについて解説しました。

要点を整理すると、次の通りです。

  • /testforblocks は、2つの範囲のブロック配置が同じか比較するコマンド
  • 構文は /testforblocks <begin> <end> <destination> [masked|all]
  • beginend は比較元範囲の2つの角
  • destination は比較先範囲の基準になる角であり、終点座標ではない
  • all は空気も含めて完全一致
  • masked は比較元側の空気を無視する
  • コマンドブロックの条件付きチェーンと相性が良い
  • 実用では /execute if blocks を使うと、1行で次の処理まで書ける

このコマンドは、最初は少し難しく見えます。
でも、3×3の床みたいな小さい範囲で一度成功すると、一気に理解しやすくなります。

建築チェック、パズル判定、ミニゲーム制作など、使い道はかなり多いです。
特に統合版でコマンドブロックを触る方は、覚えておくと便利だと思います。

個人的には、いきなり大きな建物で使うより、まずは小さな床や壁で練習するのがおすすめです。
座標の考え方さえ掴めば、かなり応用しやすくなりますよ。

では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。
柚子クラでは他にもマイクラ統合版・Java版のコマンドや便利装置を紹介しているので、是非ご覧くださいね(^^♪


12. 参考文献

この記事を書くにあたり、以下の公式ドキュメント・コミュニティWikiを参考にしています。