コマンドをチャットで実行できても、コマンドブロックに入れた瞬間にうまく動かなくなることがあります。原因は、実行位置、実行者、レッドストーン入力、反復設定、条件付きチェーンのどこかにあることが多いです。
コマンドブロックの種類
- インパルス:入力があったときに1回実行
- リピート:条件を満たす間、繰り返し実行
- チェーン:前のコマンドブロックに続けて実行
最初はインパルスで1回だけ動かし、問題がなければリピートやチェーンに広げる方が安全です。
チャットでは動くのにコマンドブロックで動かない理由
多いのは、相対座標の基準が変わることです。チャットで ~ ~ ~ を使うとプレイヤー基準ですが、コマンドブロックではコマンドブロックの位置が基準になります。
/summon minecraft:zombie ~ ~1 ~
このコマンドをコマンドブロックに入れると、プレイヤーの上ではなくコマンドブロックの上にゾンビが出ます。
プレイヤー基準にするならexecuteを使う
/execute at @p run summon minecraft:zombie ~ ~1 ~
この形にすると、近くのプレイヤーの位置を基準にして召喚できます。コマンドブロック作品では、/execute at を使って基準位置を明確にするのが重要です。
条件付きチェーンの考え方
チェーンコマンドブロックを条件付きにすると、前のコマンドが成功した場合だけ次を実行します。ミニゲーム開始処理やショップ処理では便利ですが、途中の1つが失敗すると後続が止まります。
デバッグの手順
- まずチャットで動くか確認する
- コマンドブロックに入れて1回だけ実行する
- 相対座標がずれていないか確認する
- リピート化する前に、対象セレクターを絞る
- チェーンにする場合は、1個ずつ追加して確認する
いきなり大量のコマンドブロックを並べると、どこで失敗したか分かりにくくなります。1行ずつ確認するのが一番早いです。