更新日:
コマンドをチャットで実行できても、コマンドブロックに入れた瞬間にうまく動かなくなることがあります。原因は、実行位置、実行者、レッドストーン入力、反復設定、条件付きチェーンのどこかにあることが多いです。
最小構成からチェーンへ進める
最初はインパルス型のコマンドブロックを「動力が必要」にして、ボタンで say test を実行します。チャットへの表示を確認できれば、ブロックの設置場所、レッドストーン入力、コマンド実行の経路を一度に確かめられます。
次にチェーン型を隣接させる場合は、矢印の方向が次のコマンドブロックを向いているかを確認します。条件付きチェーンは直前の実行の成功を必要とするため、想定した順序で実行されていない場合は、条件をいったん外して順序を検査してください。常時実行の反復型は想定外に大量実行されやすいので、最初から破壊的なコマンドを入れないでください。
コマンドブロックの種類
- インパルス:入力があったときに1回実行
- リピート:条件を満たす間、繰り返し実行
- チェーン:前のコマンドブロックに続けて実行
最初はインパルスで1回だけ動かし、問題がなければリピートやチェーンに広げる方が安全です。
チャットでは動くのにコマンドブロックで動かない理由
多いのは、相対座標の基準が変わることです。チャットで ~ ~ ~ を使うとプレイヤー基準ですが、コマンドブロックではコマンドブロックの位置が基準になります。
/summon minecraft:zombie ~ ~1 ~
このコマンドをコマンドブロックに入れると、プレイヤーの上ではなくコマンドブロックの上にゾンビが出ます。
プレイヤー基準にするならexecuteを使う
/execute at @p run summon minecraft:zombie ~ ~1 ~
この形にすると、近くのプレイヤーの位置を基準にして召喚できます。コマンドブロック作品では、/execute at を使って基準位置を明確にするのが重要です。
条件付きチェーンの考え方
チェーンコマンドブロックを条件付きにすると、前のコマンドが成功した場合だけ次を実行します。ミニゲーム開始処理やショップ処理では便利ですが、途中の1つが失敗すると後続が止まります。
デバッグの手順
- まずチャットで動くか確認する
- コマンドブロックに入れて1回だけ実行する
- 相対座標がずれていないか確認する
- リピート化する前に、対象セレクターを絞る
- チェーンにする場合は、1個ずつ追加して確認する
いきなり大量のコマンドブロックを並べると、どこで失敗したか分かりにくくなります。1行ずつ確認するのが一番早いです。
設定ボタンの意味
| 設定 | 意味 | 使いどころ |
|---|---|---|
| 動力が必要 | レッドストーン信号が入ったときだけ動く | ボタンやレバーで動かす装置 |
| 常時実行 | 信号がなくても動く | リピートで常に見張る処理、チェーンの2個目以降 |
| 無条件 | 前のブロックの結果に関係なく動く | ふつうの処理 |
| 条件付き | 1つ前のブロックが成功したときだけ動く | 支払いが成功したら商品を渡す、など |
チェーンの2個目以降は「常時実行」にしておくのが基本です。「動力が必要」のままだと、前のブロックから順番が回ってきても動きません。種類ごとの違いはコマンドブロックの種類と使い分けで詳しく解説しています。
リピートで重くしないコツ
リピートは毎秒20回くり返すので、範囲の広い @e を使うと処理が重くなります。@e[type=zombie,distance=..20] のように種類と距離で絞り、使わないときはレバーで止められるようにしておきます。チャットに実行結果が流れ続けて邪魔なときの止め方も、上の種類の記事で紹介しています。
よくある質問
コマンドブロックが置けない・開けません
クリエイティブモードでOP権限があるときだけ中身を編集できます。サーバーでは server.properties の enable-command-block を true にします(1.21.8以前)。Java版1.21.9以降はこの設定がなくなり、コマンドブロックは最初から動きます。止められているときは /gamerule command_blocks_work true で戻します(1.21.9〜1.21.10は commandBlocksEnabled)。詳しくはコマンドブロックが動かないときの確認ポイントを見てください。
コマンドブロックはどうやって手に入れますか?
クリエイティブのアイテム一覧には出ないので、/give @s minecraft:command_block で出します。ほかのコマンド専用アイテムはコマンドでしか手に入らないアイテムにまとめています。