更新日:
/execute は、他のコマンドを「誰として」「どこで」「どんな条件で」実行するかを決めるコマンドです。最初は難しく見えますが、as と at の違いを分けると理解しやすくなります。
as と at をそれぞれ試す
Java版で /execute as @e[type=minecraft:zombie] run say test とすると実行者はゾンビになりますが、そのゾンビの座標へ実行位置が移るわけではありません。位置もゾンビに合わせる場合は /execute as @e[type=minecraft:zombie] at @s run say test とします。
対象が複数いるとコマンドが複数回実行されます。周辺にゾンビが多い場所でパーティクルや召喚などを組み合わせる前に、say で何回実行されるかを確認しましょう。as と at の順番は意味に影響するため、生成画面でも最終的な実行位置を確認してください。
基本の考え方
/execute as <対象> at <位置の基準> run <実行するコマンド>
run の後ろに、本当に実行したいコマンドを書きます。例えば、近くのプレイヤーの位置で雷を落とすなら次の形です。
/execute at @p run summon minecraft:lightning_bolt ~ ~ ~
asとatの違い
as:実行者を変えるat:実行位置を変える
この違いを混ぜると、コマンドが動いているのに期待した場所で起きない、という状態になります。
近くのゾンビにだけ反応する例
/execute if entity @e[type=minecraft:zombie,distance=..10] run say 近くにゾンビがいます
この例は、半径10ブロック以内にゾンビがいる場合だけメッセージを出します。ミニゲームの条件判定や警告表示に使えます。
全ゾンビの位置でパーティクルを出す考え方
/execute as @e[type=minecraft:zombie] at @s run particle minecraft:flame ~ ~1 ~ 0.1 0.1 0.1 0 5
as @e[type=zombie] でゾンビを実行者にし、at @s で各ゾンビの位置に移動してからパーティクルを出します。このように、as と at をセットで使う場面は多いです。
よく使うサブコマンド
| 書き方 | 働き | 例 |
|---|---|---|
as | 実行者を変える | as @a |
at | 実行位置と向きを対象に合わせる | at @s |
positioned | 実行位置だけを座標で変える | positioned ~ ~5 ~ |
if / unless | 条件を満たすとき・満たさないときだけ続ける | if block ~ ~-1 ~ minecraft:gold_block |
in | 実行するディメンションを変える | in minecraft:the_nether |
store | 実行結果をスコアなどに保存する | store result score @s count |
サブコマンドは左から順番に処理され、最後の run で実際のコマンドが実行されます。
条件の例
/execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect give @s minecraft:speed 1 1 true
/execute as @a if score @s coins matches 100.. run say 100コイン以上持っています
1行目は金ブロックの上に立っている人だけに移動速度上昇を付け、2行目はスコア coins が100以上の人だけを選びます。100.. は「100以上」、..9 は「9以下」という意味です。スコアの作り方はスコアボードで所持金を作る方法で解説しています。
統合版で書くときの違い
統合版は1.19.50から、Java版と同じ as・at・if・run の形になりました。ただし、セレクターの距離は distance=..10 ではなく r=10 と書きます。古い統合版の /execute @e ~ ~ ~ … という形は、今の版では使えないことがあります。
うまくいかないときの確認ポイント
- 何も起きない:
runを書き忘れていないか、ifの条件が満たされているかを確かめます。条件の部分だけを/execute if …として実行すると、成功したかどうかが表示されます。 - 違う場所で起きる:
asだけでatがないと、位置は元のまま(コマンドブロックならブロックの位置)です。 - 何回も実行される:
@eや@aは当てはまる数だけくり返します。limit=1などで絞ります。 - エラーの意味が分からない:executeでエラーが出るときの確認ポイントを見てください。