MC Toolkit

ガイド / コマンドとデータ

/execute:as/atの順序が重要な理由とstoreの実際の仕組み

executeチェーンが壊れる原因のほとんどは、「誰がコマンドを実行するか」と「どこで実行されるか」の混同です。各サブコマンドが何を変えるのか、そしてそれを解決する順序を解説します。asは実行者を、atは位置とディメンションを変更します。

/execute は、スクリプト言語のふりをした単一のコマンドです。失敗のほとんどは、同じことをするように聞こえて実際には違う2つのサブコマンドに起因します。

asは「誰が」を変える。atは「どこで」を変える。

  • as <target> — 実行者を入れ替えます。@s はそのエンティティを指すようになります。位置は動きません。
  • at <target> — 位置、回転、ディメンションを入れ替えます。実行者は変わりません。

つまり、これは何の役にも立ちません:

execute as @e[type=zombie] run setblock ~ ~ ~ stone

ゾンビごとに1回実行されますが、常にあなたの足元で実行されるため、同じ場所にブロックを置き続けるだけです。修正するには両方が必要です:

execute as @e[type=zombie] at @s run setblock ~ ~ ~ stone

at @s は、as が今選んだゾンビにアンカーを張り直します。as … at @s はコマンド全体で最もよく使われる組み合わせであり、at @s を忘れるのが最もよくあるバグです。

順序は左から右へ、そして累積する

サブコマンドは順番に実行され、それぞれが次のサブコマンドが見るコンテキストを変更します:

execute as @a at @s positioned ^ ^ ^3 run particle flame
  1. as @a — プレイヤーごとに1回
  2. at @s — そのプレイヤーへ移動
  3. positioned ^ ^ ^3 — そのプレイヤーが見ている方向の3ブロック前

手順2と3を入れ替えると、positioned ^ ^ ^3 はあなたの位置と向きから計算されます——そして at @s がプレイヤーに戻すことでそれを捨ててしまうため、オフセットは完全に失われます。

キャレットとチルダ

  • ~ ~ ~ — 位置を基準に、ワールドの軸に沿って整列
  • ^ ^ ^ — 向きを基準に:左、上、前

キャレット座標があるからこそ、positioned ^ ^ ^3 は「の前方」を意味し、~ ~ ~3 は「3ブロック南」を意味します。1つの座標 triple の中で2つの記法を混ぜると構文エラーになります。

storeは変数ではなく戻り値

store はコマンドが返すもの——通常は成功回数か結果値——を取得します:

execute store result score @s Count run data get entity @s Inventory

よくある間違いが2つあります:

  • result と success の違い。 result はコマンドが生成する数値で、success は実行されたかどうかを表す1か0です。エンティティを数えるには result が必要です。
  • store は run の前に置き、run の後のコマンドに適用されるのであって、サブコマンドチェーンには適用されません。

ifとunlessはショートサーキットする

if と unless はフィルタリングします——テストが失敗するとそこでチェーンが止まります。複数の if 節はANDになります。ORは存在せず、それには2つの別々のコマンドか述語が必要です。

execute as @a if entity @s[gamemode=survival] if score @s Lives matches 1.. run ...

Advanced Command Builder で、各ステップのコンテキストを表示しながらサブコマンドを1つずつチェーンに組み立ててください——同じフォームからdata、item、loot、schedule、particle、playsoundも扱えます。

高度なコマンドビルダー — execute & data →

その他のガイド

すべて見る →