/execute
は、実行者、実行する位置や方角、前提条件、実行結果の格納先を指定して他のコマンドを実行するコマンドである。
用途[]
/execute
には14種類/11種類[Bedrock Edition限定]のサブコマンドがあり、/execute
の後に続けて1つ以上のサブコマンドを記述する。サブコマンドには、文脈指定、ガード、格納先指定[Java Edition限定]、run
の4カテゴリ[Java Edition限定]/3カテゴリ[Bedrock Edition限定]に大別される。
- 文脈指定サブコマンドでは、後続のサブコマンドにおける実行文脈を変更する。設定可能な文脈には実行者、位置、ディメンション、方角、座標の基準がある。
- ガードサブコマンドでは、後続のサブコマンドを実行するための条件を指定する。
- 格納先指定サブコマンドでは、コマンドの実行結果をスコアボード、エンティティやブロックエンティティのデータ、ストレージに格納したり、ボスバーの最大値や現在値を変更することができる。[Java Edition限定]
run
サブコマンドでは、他のコマンドを指定する。
サブコマンドは互いに連接でき、run
以外のサブコマンドは順序不問かつ複数記述できる。run
サブコマンドはサブコマンド列の最後に1つのみ指定できる。サブコマンド列の最後にはrun
かガードサブコマンドが指定可能である。サブコマンドは前から後ろに順次実行され、以下のようにサブコマンドの順序を変えると、一般には異なる実行結果となる。
/execute as @e at @s run tp ^ ^ ^1
全てのエンティティを1ブロック前方に移動させる。/execute at @s as @e run tp ^ ^ ^1
全てのエンティティを実行者の1ブロック前にテレポートさせる。
run
以外のサブコマンドはrun
より前に実行されるので、run
サブコマンドは他のサブコマンドに何も影響しない。また、条件次第ではコマンドの実行は中断され、何も起こらないこともある。
Java Editionでは、コマンドが最後まで実行されると、success
値とresult
値が返る(詳細は#格納先指定サブコマンドを参照)。この2つの値は最後のサブコマンド(ガードかrun
)から返ってくるものである。返り値は常に整数値であり、整数値でない場合は負の方向に丸められる。success
値は常に0
(失敗)か1
(成功)のどちらかを取る。コマンドが失敗した場合は双方ともに0
である。返り値は格納先指定サブコマンドを使うことで保存できる。最後のサブコマンドが複数回実行されると、各実行ごとに返り値が保存される。
success
値やresult
値とは別に、/execute
には(コマンドが中断されたか否かにかかわらず)成功回数が存在する。これは通常0
か1
のどちらかであるが、最後のサブコマンドが個別に複数回実行されると、成功回数は1
より大きい値となる[Java Edition限定]。コマンドブロックから実行された場合、成功回数はコマンドブロックに返り、条件付きモードのコマンドブロックの実行条件に用いたり、レッドストーンコンパレーターで出力したりできる。
/execute
には14種類/11種類[Bedrock Edition限定]のサブコマンドがあり、それぞれ独自の構文を持っているため、構文の記述は大型の木構造になる。
Command Syntax Tree-Diagram |
---|
完全な構文は以下のようになる。
- Java Edition
/execute . . .
… align <axes> -> execute
… anchored <anchor> -> execute
… as <targets> -> execute
… at <targets> -> execute
… facing (<pos>|entity <targets> <anchor>) -> execute
… in <dimension> -> execute
… on <relation> -> execute
… positioned (<pos>|as <targets>|over <heightmap>) -> execute
… rotated (<rot>|as <targets>) -> execute
… summon <entity> -> execute
… store (result|success) . . .
… block <targetPos> <path> <type> <scale> -> execute
… bossbar <id> (max|value) -> execute
… entity <target> <path> <type> <scale> -> execute
… score <targets> <objective> -> execute
… storage <target> <path> <type> <scale> -> execute
… (if|unless) . . .
… biome <pos> <biome> -> [execute]
… block <pos> <block> -> [execute]
… blocks <start> <end> <destination> (all|masked) -> [execute]
… data . . .
… block <sourcePos> <path> -> [execute]
… entity <source> <path> -> [execute]
… storage <source> <path> -> [execute]
… dimension <dimension> -> [execute]
… entity <entities> -> [execute]
… function <function> -> [execute]
… loaded <pos> -> [execute]
… predicate <predicate> -> [execute]
… score <target> <targetObjective> . . .
… (<|<=|=|>|>=) <source> <sourceObjective> -> [execute]
… matches <range> -> [execute]
… run <command>
- ここで
-> execute
は他のサブコマンドの開始を表す。
- Bedrock Edition
/execute . . .
… align <axes: string> <chainedCommand: ExecuteChainedOption_0>
… anchored <eyes|feet> <chainedCommand: ExecuteChainedOption_0>
… as <origin: target> <chainedCommand: ExecuteChainedOption_0>
… at <origin: target> <chainedCommand: ExecuteChainedOption_0>
… facing (<position: x y z>|entity <origin: target> <eyes|feet>) <chainedCommand: ExecuteChainedOption_0>
… in <dimension: Dimension> <chainedCommand: ExecuteChainedOption_0>
… positioned (<position: x y z>|as <origin: target>) <chainedCommand: ExecuteChainedOption_0>
… rotated (<yaw: value> <pitch: value>|as <origin: target>) <chainedCommand: ExecuteChainedOption_0>
… <subcommand: Option_If_Unless> . . .
… block <position: x y z> <block: Block> [<blockStates: block states>|<data: int>] [chainedCommand: ExecuteChainedOption_0]
… blocks <begin: x y z> <end: x y z> <destination: x y z> <scan mode: BlocksScanMode> [chainedCommand: ExecuteChainedOption_0]
… entity <target: target> [chainedCommand: ExecuteChainedOption_0]
… score <target: target> <objective: string> . . .
… <operation: compare operator> <source: target> <objective: string> [chainedCommand: ExecuteChainedOption_0]
… matches <range: integer range> [chainedCommand: ExecuteChainedOption_0]
… run <command: command>
- ここで
chainedCommand: ExecuteChainedOption_0
は他のサブコマンドの開始を表す。
文脈指定サブコマンド[]
文脈指定サブコマンドでは、実行位置・実行時の向き・実行者を変更することができる。@e
などを用いると実行文脈を増やすこともでき、一連のコマンドの実行における実行文脈の分岐数はゲームルールmaxCommandForkCount
で制限される。
align[]
- 指定した座標軸に沿って、コマンドの実行位置を、そこにあるブロックの位置(整数値)に揃える。
- これは座標に床関数を適用した(負の無限大方向に丸めた)ものと考えられる。
- 構文
-
- Java Edition
align <axes> -> execute
- Bedrock Edition
align <axes: string> <chainedCommand: ExecuteChainedOption_0>
anchored[]
- 座標の基準を目線か足元に設定する。デフォルトでは足元である。
positioned <pos> -> execute
を実行すると、足元に再設定される。- ローカル座標の原点が目線と足元のどちらかになり、
facing
サブコマンドの角度にも影響する。- 構文
-
- Java Edition
anchored <anchor> -> execute
- Bedrock Edition
anchored <eyes|feet> <chainedCommand: ExecuteChainedOption_0>
- 引数
- JE:
<anchor>
:エンティティの位置基準(eyes
かfeet
) - BE:
eyes|feet
- 目線と足元のどちらに基準を合わせるか。
- 結果
- 座標の基準が目線か足元のどちらかに設定される。
- 引数が正しく指定されていない場合、解析不能となる。
- 例
/tp
コマンドは、足元が指定した位置になるように対象を移動させる。/execute anchored eyes run tp ^ ^ ^
を実行すると、座標の基準が目線になるので、移動先の足元が元々の目線の位置になるように実行者を移動させる。/execute anchored eyes run tp ^5 5 5
は、目線の5ブロック左側に実行者の足元が来るように移動させる。
as[]
- 実行者(ターゲットセレクター
@s
)を指定したエンティティに設定する。実行位置、方角、ディメンション、座標の基準は変わらない。- 構文
-
- Java Edition
as <targets> -> execute
- Bedrock Edition
as <origin: target> <chainedCommand: ExecuteChainedOption_0>
- 引数
- JE:
<targets>
:エンティティ - BE:
origin: target
- 実行者として設定したい対象エンティティ。
- プレイヤー名、ターゲットセレクターまたはUUIDで指定する。[Java Edition限定]
- 結果
- 指定したエンティティが実行者
@s
に設定される。 - 引数が正しく指定されていない場合、解析不能となる。
<targets>
かorigin: target
に適合するエンティティが1体も存在しない場合(名前付きのプレイヤーはオンラインである必要がある)は、そこで実行が終了する。- 複数のエンティティが見つかった場合は、次のサブコマンドは各実行者ごとに1度ずつ実行される。
- 例
- 全てのヒツジのデータを取得:
/execute as @e[type=sheep] run data get entity @s
[Java Edition限定] - 読み込みチャンク内の村人全員を不死身にする:
/execute as @e[type=villager] run data merge entity @s {Invulnerable:1b}
[Java Edition限定]
at[]
- 実行位置、方角、ディメンションを指定したエンティティと同じになるように設定する。実行者は変わらない。
- 構文
-
- Java Edition
at <targets> -> execute
- Bedrock Edition
at <origin: target> <chainedCommand: ExecuteChainedOption_0>
- 引数
- JE:
<targets>
:エンティティ - BE:
origin: target
- 実行位置、方角、ディメンションの基準にしたいエンティティ。
- プレイヤー名、ターゲットセレクターまたはUUIDで指定する。[Java Edition限定]
- 結果
- 実行位置、方角、ディメンションが対象エンティティのものに設定される。
- 引数が正しく指定されていない場合、解析不能となる。
<targets>
かorigin: target
に適合するエンティティが1体も存在しない場合(名前付きのプレイヤーはオンラインである必要がある)は、そこで実行が終了する。- 複数のエンティティが見つかった場合は、次のサブコマンドは各エンティティごとにその実行位置、方角、ディメンションが与えられたものとして1度ずつ実行される。
- 例
- 全てのヒツジを1ブロック上に移動:
/execute as @e[type=sheep] at @s run tp ~ ~1 ~
at
では実行者は変わらないので、この場合死亡するのは実際にコマンドを実行したプレイヤーである:/execute at @e[type=sheep] run kill @s
facing[]
- 実行方角を、基準(目線か足元)から指定した地点を向いているものとして設定する。
- 構文
-
- Java Edition
facing <pos> -> execute
facing entity <targets> <anchor> -> execute
- Bedrock Edition
facing <position: x y z> <chainedCommand: ExecuteChainedOption_0>
facing entity <origin: target> <eyes|feet> <chainedCommand: ExecuteChainedOption_0>
- 引数
- オプション:facing <pos>
- JE:
<pos>
:3次元座標・ベクトル - BE:
position: x y z
- 向き先の座標。
- 浮動小数点数で構成される3次元座標でなければならない。チルダ・キャレット表記法を使用できる。
- JE:
- オプション:facing entity <targets> <anchor>
- JE:
<targets>
:エンティティ - BE:
origin: target
- 向き先の対象エンティティ。
- プレイヤー名、ターゲットセレクターまたはUUIDで指定する。
- JE:
<anchor>
:エンティティの位置基準(eyes
かfeet
) - BE:
eyes|feet
- 目線と足元のどちらに基準を合わせるか。
- JE:
- 結果
- 指定した位置や対象を向くように実行方角が設定される。
- 引数が正しく指定されていない場合、解析不能となる。
<targets>
かorigin: target
に適合するエンティティが1体も存在しない場合(名前付きのプレイヤーはオンラインである必要がある)は、そこで実行が終了する。- 複数のエンティティが見つかった場合は、次のサブコマンドは各エンティティごとにそちらを向いているものとして1度ずつ実行される。
- 例
- 実行者を左に向かせる:
/execute facing ^1 ^ ^ run tp ~ ~ ~
[Java Edition限定] - 全てのエンティティを (0, 64, 0) に向かって1ブロック移動させる(姿勢は変わらない):
/execute as @e at @s facing 0 64 0 run tp @s ^ ^ ^1
- 全てのエンティティを (0, 64, 0) に向かって1ブロック移動させる(姿勢も変わる):
/execute as @e at @s facing 0 64 0 run tp @s ^ ^ ^1 ~ ~
- プレイヤーでないエンティティを、最寄りのプレイヤーに向かって1ブロック移動させる(姿勢は変わらない):
/execute as @e[type=!player] at @s facing entity @p feet run tp @s ^ ^ ^1
in[]
- 実行ディメンションを設定する。
- 相対およびローカル座標にはディメンションの縮尺が適用される。オーバーワールドからネザーに変更する時には実行位置の値のX、Z成分が8分の1され、その逆ならば8倍される。カスタムディメンションにも同様に適用される。
- 構文
-
- Java Edition
in <dimension> -> execute
- Bedrock Edition
in <dimension: Dimension> <chainedCommand: ExecuteChainedOption_0>
- 結果
- 実行ディメンションが変更される。
- 引数が正しく指定されていない場合、解析不能となる。
- 例
- オーバーワールドにいながら、エンドシティを見つける:
/execute in the_end run locate structure minecraft:end_city
- プレイヤーがオーバーワールドの (16, 64, 16) にいる時、
/execute in minecraft:the_nether positioned as @s run tp ~ ~ ~
を実行すると、ネザーの (16, 64, 16) に移動する。 - プレイヤーがオーバーワールドの (16, 64, 16) にいる時、
/execute in minecraft:the_nether run tp ~ ~ ~
を実行すると、ネザーの (2, 64, 2) に移動する。 - プレイヤーがオーバーワールドの (80, 64, 80) にいる時、
/execute in minecraft:the_nether run tp ~ ~ ~5
を実行すると、ネザーの (10, 64, 15) に移動する。
on[]
- 実行エンティティの関係性を、現在実行者となっているエンティティとの関係に基づいて指定する。
- 構文
-
- Java Edition
on <relation> -> execute
- 引数
- JE:
<relation>
- 現在実行者となっているエンティティとの関係。
attacker
:実行者を直近5秒以内に攻撃したエンティティ。controller
:実行者を操縦しているエンティティ。leasher
:実行者をリードで引き連れているエンティティ。origin
:実行者の発生元であるエンティティ。- 飛翔体なら発射したエンティティ、アイテムなら投げたエンティティ、エリアエフェクトクラウドなら効果元、着火されたTNTなら着火したエンティティ、エヴォーカーの牙やヴェックスなら召喚者がこれに該当する。
owner
:実行者が飼い慣らせる動物であるとき、その飼い主であるエンティティ。passengers
:実行者に直接騎乗しているエンティティ。騎乗者のさらなる騎乗者は含まれない。target
:実行者が攻撃対象としているエンティティ。vehicle
:実行者が騎乗しているエンティティ。
- 現在実行者となっているエンティティとの関係。
- 結果
- 指定された関係性が実行者に適合しないか、エンティティが1体も該当しない場合は、0個の要素が返る。
- 引数が正しく指定されていない場合、解析不能となる。
- 引数で指定されたエンティティが1体も存在しない場合(名前付きのプレイヤーはオンラインである必要がある)は、そこで実行が終了する。
- 例
- ヒツジを攻撃したエンティティを全員死亡させる:
/execute as @e[type=sheep] on attacker run kill @s
positioned[]
- 実行位置を指定した座標、エンティティ、あるいはハイトマップの表面と同じになるように設定する。実行方角とディメンションは変わらない。
- 構文
-
- Java Edition
positioned <pos> -> execute
positioned as <targets> -> execute
positioned over <heightmap> -> execute
- Bedrock Edition
positioned <position: x y z> <chainedCommand: ExecuteChainedOption_0>
positioned as <origin: target> <chainedCommand: ExecuteChainedOption_0>
- 引数
- オプション:positioned <pos>
- JE:
<pos>
:3次元座標・ベクトル - BE:
position: x y z
- 変更先の位置。
- 浮動小数点数で構成される3次元座標でなければならない。チルダ・キャレット表記法を使用できる。
- JE:
- オプション: positioned as <targets>
- JE:
<targets>
:エンティティ - BE:
origin: target
- 実行位置の基準にしたいエンティティ。
- プレイヤー名、ターゲットセレクターまたはUUIDで指定する。
- JE:
- オプション:positioned over <heightmap>
- 結果
- 実行位置が変更される。また座標の基準が足元に設定される。
- 引数が正しく指定されていない場合、解析不能となる。
<targets>
かorigin: target
に適合するエンティティが1体も存在しない場合(名前付きのプレイヤーはオンラインである必要がある)は、そこで実行が終了する。- 複数のエンティティが見つかった場合は、次のサブコマンドは各エンティティごとにその位置にいるものとして1度ずつ実行される。
- 例
- (0, 64, 0) から近くの村を探す
/execute positioned 0 64 0 run locate structure #village
[Java Edition限定]/execute positioned 0 64 0 run locate structure village
[Bedrock Edition限定]
rotated[]
- 実行方角を指定した角度あるいはエンティティと同じになるように設定する。
- 構文
-
- Java Edition
rotated <rot> -> execute
rotated as <targets> -> execute
- Bedrock Edition
rotated <yaw: value> <pitch: value> <chainedCommand: ExecuteChainedOption_0>
rotated as <origin: target> <chainedCommand: ExecuteChainedOption_0>
- 引数
- JE:
<rot>
:行俯角・水平角(<yaw> <pitch>
) - BE:
yaw: value
andpitch: value
- ヨー角(y方向を軸とした回転角)およびピッチ角(水平方向を軸とした回転角。仰角・俯角のこと)を、倍精度浮動小数点数を用いて度単位で指定する。
- 水平方向の回転角(ヨー角)は、-180.0が真北、-90.0が真東、0.0が真南、90.0が真西であり、179.9は真北からほんの少し西側となる。
- 垂直方向の回転角(ピッチ角)は、-90.0が真上、90.0が、真下となる。
- ヨー角(y方向を軸とした回転角)およびピッチ角(水平方向を軸とした回転角。仰角・俯角のこと)を、倍精度浮動小数点数を用いて度単位で指定する。
- JE:
<targets>
:エンティティ - BE:
origin: target
- 実行方角の基準にしたいエンティティ。
- プレイヤー名、ターゲットセレクターまたはUUIDで指定する。[Java Edition限定]
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
<targets>
かorigin: target
に適合するエンティティが1体も存在しない場合(名前付きのプレイヤーはオンラインである必要がある)は、そこで実行が終了する。- 複数のエンティティが見つかった場合は、次のサブコマンドは各エンティティごとにそれと同じ方角を向いているものとして1度ずつ実行される。
- 例
- 全てのヒツジを、最寄りのプレイヤーが向いている方向に1ブロック移動させる:
/execute as @e[type=sheep] at @s rotated as @p run tp @s ^ ^ ^1
summon[]
- 新たな実行者となるエンティティを召喚し、そのエンティティを実行者
@s
に設定する。- 構文
-
- Java Edition
summon <entity> -> execute
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 例
- ヒツジを召喚し、タグ「Test」を追加する:
execute summon sheep run tag @s add Test
ガードサブコマンド[]
if
あるいはunless
サブコマンドの主な用途は、指定した条件下でのみコマンドが実行されるように制約を加えることである。多くの場合、unless
はif
の否定、すなわち「…でなければ」に相当する。受け取れる引数はどちらも同じである。
- ガードサブコマンドの結果:
- 引数が正しく指定されていない場合、解析不能となる。
- 一部の状況では、例えばワールド外のブロックを判定しようとすると、
if
、unless
ともに失敗し、そこで処理が中断する。 - サブコマンド列の終端でなければ、条件を満たした場合のみ後続のサブコマンドが実行され、さもなくば終了する。複数の変数(実行者、実行位置、実行方角など)に対して複数回実行された場合、それは変数のフィルタリング、すなわち条件を満たした変数のみが次のサブコマンドを実行するように動作する。
- サブコマンド列の終端にある時、条件を満たしているかどうかを出力する。
- 条件の形式には10種類[Java Edition限定]/4種類[Bedrock Edition限定]存在する。
- (if|unless) biome – バイオームを判定する。[Java Edition限定]
- (if|unless) block – 単体のブロックを判定する。
- (if|unless) blocks – 直方体の領域同士を比較する。
- (if|unless) data – ブロック、エンティティ、ストレージのデータを判定する。[Java Edition限定]
- (if|unless) dimension - 指定したディメンション内での実行になるかどうかを判定する。
- (if|unless) entity – 指定したエンティティが存在するかどうか判定する。
- (if|unless) function - 関数を実行し、その戻り値を判定する。
- (if|unless) loaded - 指定した座標が読み込まれているかどうかを判定する。
- (if|unless) predicate – 指定したプレディケートを判定する。[Java Edition限定]
- (if|unless) score - 対象のスコアを判定する。
(if|unless) biome[]
- 構文
(if|unless) biome <pos> <biome> -> [execute]
- 引数
<pos>
:biome_pos- バイオームを判定したい位置の座標
<biome>
:biome_predicate- 判定に使う有効なバイオームID
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 以下の場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
<pos>
がワールドの読み込み範囲外にある時。- 指定した条件を満たさない場合。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値とresult
値は1になる。
(if|unless) block[]
- 指定した位置のブロックと、指定したブロックIDやブロックタグを比較する。
- 構文
-
- Java Edition
(if|unless) block <pos> <block> -> [execute]
- Bedrock Edition
<subcommand: Option_If_Unless> block <position: x y z> <block: Block> [chainedCommand: ExecuteChainedOption_0]
<subcommand: Option_If_Unless> block <position: x y z> <block: Block> <blockStates: block states> [chainedCommand: ExecuteChainedOption_0]
- 引数
- JE:
<pos>
:ブロック座標 - BE:
position: x y z
- 比較したいブロックがある座標
- 整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
- JE:
<block>
:ブロック条件- 比較したいブロックIDかブロックタグ
- ブロック引数(ブロックタグは使用可能)を指定する。
- BE:
block: Block
- 比較したい有効なブロックID[情報提供依頼]
- BE:
blockStates: block states
- 有効なブロック状態[情報提供依頼]
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 以下の場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
<pos>
/position: x y z
がワールドの読み込み範囲外にある時。- 指定した条件を満たさない場合。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値とresult
値は1になる。
(if|unless) blocks[]
- 同じ寸法の領域同士でブロックを比較する。
- 構文
-
- Java Edition
(if|unless) blocks <start> <end> <destination> (all|masked) -> [execute]
- Bedrock Edition
<subcommand: Option_If_Unless> blocks <begin: x y z> <end: x y z> <destination: x y z> <scan mode: BlocksScanMode> [chainedCommand: ExecuteChainedOption_0]
- 引数
- JE:
<start>
:ブロック座標 - BE:
begin: x y z
- JE:
<end>
:ブロック座標 - BE:
end: x y z
- 比較元の領域の対角同士の角の座標。
- 整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
- JE:
<destination>
:ブロック座標 - BE:
destination: x y z
- 比較対象の領域の北西下の角の座標。
- 比較対象の寸法は、比較元と同じとして扱われる。
- 整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
- JE:
(all|masked)
- BE:
scan mode: BlocksScanMode
(all
かmasked
)- 比較元の領域の全てのブロックに対して比較する場合には
all
、空気ブロックを外す場合にはmasked
を指定する。
- 比較元の領域の全てのブロックに対して比較する場合には
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 以下の場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
<start>
/begin: x y z
、<end>
/end: x y z
、<destination>
/destination: x y z
のいずれかがワールドの読み込み範囲外にある時。- 比較元の領域の体積が32768(8チャンク区画分に相当)を超えるとき。
- 指定した条件を満たさない場合。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値は1になる。if
モードの時、result
値は一致したブロックの数(all
モードでは総数、masked
モードでは空気でないブロックの数)となる。unless
モードの時、result
値は1となる。
(if|unless) data[]
- 対象ブロック、エンティティ、ストレージが指定したパスのデータタグを持っているかどうか判定する。
- 構文
- ブロック:
(if|unless) data block <pos> <path> -> [execute]
- エンティティ:
(if|unless) data entity <target> <path> -> [execute]
- ストレージ:
(if|unless) data storage <source> <path> -> [execute]
- 引数
- オプション:
(if|unless
data block <pos> <path>}}<pos>
:ブロック座標- 判定したいブロックがある座標。
- 整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
<path>
:NBTパス- ブロックが持っているかどうか判定したいデータパス。
- NBTパスで指定する。
- オプション:
(if|unless
data entity <target> <path>}}<target>
:エンティティ- データを判定したい単体のエンティティ。
- プレイヤー名、ターゲットセレクターまたはUUIDで指定する。
<path>
:NBTパス- エンティティが持っているかどうか判定したいデータパス。
- NBTパスで指定する。
- オプション:
(if|unless
data storage <source> <path>}}
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 以下の場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
<pos>
がワールドの読み込み範囲外にある時。<pos>
のブロックがブロックエンティティでない時。<target>
に適合するエンティティが1体でない時(名前付きのプレイヤーはオンラインである必要がある)。- 指定した条件を満たさない場合。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値は1になる。if
モードの時、result
値は一致したデータタグの数となる。unless
モードの時、result
値は1となる。
(if|unless) dimension[]
- 指定したディメンション内での実行になるかどうかを判定する。
- 構文
(if
unless) dimension <dimension> -> [execute]
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 指定した条件を満たさない場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値は1になる。if
モードの時、result
値は検出したエンティティの数となる。unless
モードの時、result
値は1となる。
(if|unless) entity[]
- 指定したエンティティが1体以上存在するか判定する。
- 構文
-
- Java Edition
(if|unless) entity <entities> -> [execute]
- Bedrock Edition
<subcommand: Option_If_Unless> entity <target: target> [chainedCommand: ExecuteChainedOption_0]
- 引数
- JE:
<entities>
:エンティティ - BE:
target: target
- 判定したいエンティティ
- プレイヤー名、ターゲットセレクターまたはUUIDで指定する。[Java Edition限定]
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 指定した条件を満たさない場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値は1になる。if
モードの時、result
値は検出したエンティティの数となる。unless
モードの時、result
値は1となる。
(if|unless) function[]
- 関数または関数タグを実行し、その戻り値が以下に示す条件を満した場合に続きを実行する。
- 構文
(if|unless) function <function> -> [execute]
- 結果
- 引数が正しく指定されていない場合、解析不能になる。
- 実行された関数のうち少なくとも一つが次の条件を満たす場合は
if
は通過、unless
は失敗する。/return
コマンドによって戻り値が与えられている。- この戻り値が0でない。
- 0以外の戻り値が与えられた場合は
if
は失敗、unless
は成功する。 /return
コマンドによって戻り値が当たられたコマンドが一つもない場合はif
構文は失敗、unless
構文は通過する。
(if|unless) loaded[]
- 指定された位置が、ブロックとエンティティの両方について完全に読み込まれているかどうかを判定する。
- 構文
(if
unless) loaded <pos> -> [execute]
- 引数
<pos>
:ブロック座標- 判定したい座標
- 整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 指定した条件を満たさない場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値は1になる。if
モードの時、result
値は検出したエンティティの数となる。unless
モードの時、result
値は1となる。
(if|unless) predicate[]
- 述語が正の値に評価されるかどうか判定する。詳細はプレディケートを参照。
- 構文
(if|unless) predicate <predicate> -> [execute]
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 以下の場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
- 指定した述語が存在しない。
- 指定した条件を満たさない場合。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値とresult
値は1になる。
(if|unless) score[]
- スコアと他のスコアを比較、あるいは所定の範囲内にあるかどうかを判定する。
- 構文
-
- Java Edition
- 2つのスコアを比較:
(if|unless) score <target> <targetObjective> (<|<=|=|>=|>) <source> <sourceObjective> -> [execute]
- スコアと範囲を比較:
(if|unless) score <target> <targetObjective> matches <range> -> [execute]
- Bedrock Edition
- 2つのスコアを比較:
<subcommand: Option_If_Unless> score <target: target> <objective: string> <operation: compare operator> <source: target> <objective: string> [chainedCommand: ExecuteChainedOption_0]
- スコアと範囲を比較:
<subcommand: Option_If_Unless> score <target: target> <objective: string> matches <range: integer range> [chainedCommand: ExecuteChainedOption_0]
- 引数
- JE:
<target>
:スコアホルダー - BE:
target: target
- スコアの所有者。
- スコアホルダーを選択する。ターゲットセレクター、プレイヤー名、UUID またはすべてのスコアホルダーを指定する
*
の値をとる。
- JE:
<targetObjective>
:オブジェクト - BE:
objective: string
- 比較に使用したいオブジェクト。<target>の<targetObjective>のスコアが判定に使われる。
- スコアボードのオブジェクト名で指定する。
- オプション:
(<|<=|=|>=|>) <source> <sourceObjective>
- JE:
<source>
:スコアホルダー - BE:
source: target
- 比較対象にしたいスコアの所有者。
- スコアホルダーを選択する。ターゲットセレクター、プレイヤー名、UUID またはすべてのスコアホルダーを指定する
*
の値をとる。
- JE:
<sourceObjective>
:オブジェクト - BE:
objective: string
- オブジェクト。<source>の<sourceObjective>のスコアが判定に使われる。
- スコアボードのオブジェクト名で指定する。
- JE:
- オプション:
matches <range>
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- 以下の場合、サブコマンド列の終端であれば失敗し、さもなくば実行を中断する。
<target>
/target: target
かsource
/source: target
が*
であるとき。- 指定した条件を満たさない場合。
- サブコマンド列の終端である場合、コマンドが成功した時には
success
値とresult
値は1になる。
例[]
- 羊毛に乗っているプレイヤーを全員死亡させる:
/execute as @a at @s if block ~ ~-1 ~ #wool run kill @s
- 実行者のスコアAとスコアBが等しいかどうか判定する:
/execute if score @s A = @s B
格納先指定サブコマンド[]
最後のコマンドのresult
値とsuccess
値を保存する場所を指定する。他のサブコマンドとともに最初に実行され、格納先を記録しておき、最後のサブコマンドが実行された後でそこに値を保存する。コマンドの返り値は整数でなければならず、非整数は負の方向に丸められる。
ストレージにより5つのモードが存在する。
- store (result|success) block – ブロックのNBTに保存する。
- store (result|success) bossbar – ボスバーに保存する。
- store (result|success) entity – エンティティのNBTに保存する。
- store (result|success) score – 対象のスコアに保存する。
- store (result|success) storage – ストレージのNBTに保存する。
store (result|success) block[]
- コマンドの返り値をブロックエンティティのタグデータに保存する。byte、short、int、long、float、double型の値として保存される。返り値が小数の時は、丸められてから
<scale>
の値が乗算される。
- 構文
store (result|success) block <targetPos> <path> <type> <scale> -> execute
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- パスが存在しない場合は何も保存しない。
store (result|success) bossbar[]
コマンドの返り値をボスバーの現在値か最大値として保存する。
- 構文
store (result|success) bossbar <id> (value|max) -> execute
- 引数
<id>
:名前空間付ID- 格納先としたいボスバーのID。
value|max
- ボスバーの現在値(
value
)と最大値(max
)のどちらに上書きしたいか。
- ボスバーの現在値(
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
store (result|success) entity[]
- コマンドの返り値をエンティティのデータタグに保存する。byte、short、int、long、float、double型の値として保存される。返り値が小数の時は、丸められてから
<scale>
の値が乗算される。/data
コマンドと同様、/execute store
はプレイヤーのNBTを上書きすることはできない。
- 構文
store (result|success) entity <target> <path> <type> <scale> -> execute
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
- パスが存在しない場合は何も保存しない。
store (result|success) score[]
- コマンドの返り値で
<targets>
の<objective>
のスコアを上書きする。
- 構文
store (result|success) score <targets> <objective> -> execute
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
store (result|success) storage[]
- コマンドの返り値を
<target>
ストレージの<path>
に保存する。byte、short、int、long、float、double型の値として保存される。返り値が小数の時は、丸められてから<scale>
の値が乗算される。存在しないストレージを指定した場合は新たに作成される、
- 構文
store (result|success) storage <target> <path> <type> <scale> -> execute
- 結果
- 引数が正しく指定されていない場合、解析不能となる。
runサブコマンド[]
run
コマンドは引数として実行されるコマンドを取り、サブコマンドで変更した変数が利用できる。
- 構文
-
- Java Edition
run --><command>
- Bedrock Edition
run <command: command>
- 技術的情報
- コマンドノードをコマンドディスパッチャーのルートとして再設定する。
- チャットテキストとしてのコマンド構築に関する情報:
- コマンドディスパッチャーは、プレイヤーがスラッシュ(
/
)でメッセージを入力し始めた時に立ち上がるものである。 - コマンドノードは、今カーソルで編集中の特定のワード部分のことで、コマンドか引数のどちらかである。
- ルートノードは現在のコマンドの最初のワードより前に存在する。
- コマンドディスパッチャーは、プレイヤーがスラッシュ(
- 結果
- コマンドを実行する。
<command>
かcommand: command
の失敗は/execute
全体の失敗として扱われる。
他の例[]
- 効率強化のエンチャントが付与されたアイテムをホットバーの1番目に入れているプレイヤー全員を、(0, 64, 0) の位置に移動させる:
/execute as @a if data entity @s Inventory[{Slot:0b}].tag.Enchantments[{id:"minecraft:efficiency"}] run tp @s 0 64 0
[Java Edition限定]
- プレイヤー全員の目の前3ブロックのところに煙のパーティクルを発生させる:
/execute as @a at @s anchored eyes run particle smoke ^ ^ ^3
[Java Edition限定]
- 実行者から5ブロック以内にいるブタに鞍を装着し、5ブロックより離れたところにいるブタから鞍を取り外す:
/execute as @e[type=pig] at @s store success entity @s Saddle byte 1 if entity @p[distance=..5]
[Java Edition限定]
- 水中にいるプレイヤーにチャットで「足がずぶ濡れだよ!!!」と発言させる:
/execute as @a at @s if block ~ ~ ~ water run say "足がずぶ濡れだよ!!!"
/scoreboard players reset @s test
を実行したなどでスコア「test」がセットされていないプレイヤーに「スコアをリセットしました」と発言させる:/execute as @a unless score @s test = @s test run say "スコアをリセットしました"
- 最寄りのプレイヤーから3ブロック以内にいるブタを全て空に放り投げる:
/execute at @p as @e[type=pig,distance=..3] run data merge entity @s {Motion:[0.0,2.0,0.0]}
[Java Edition限定]
- 頭部に何も装備していないゾンビ全員を死亡させる:
/execute as @e[type=zombie] unless data entity @s ArmorItems[3].id run kill @s
[Java Edition限定]
歴史[]
Java Edition | |||||
---|---|---|---|---|---|
1.8 | 14w07a | /execute が追加された。 | |||
14w08a | コマンドが実行成功時の返り値をコマンドブロックに渡すようになった。 | ||||
1.11 | 16w32a | ブロック状態のサポートが追加された。 | |||
1.13 | 17w45a | 構文が分割された。 | |||
17w45b | /execute store が再び動作するようになった。 | ||||
18w02a | コマンドをより柔軟に操作するための新しいサブコマンドが追加された。 | ||||
18w05a | /execute store bossbar サブコマンドが追加された。 | ||||
1.14 | 18w43a | /execute (if|unless) data サブコマンドが追加された。 | |||
1.15 | 19w38a | /execute if predicate <predicate> サブコマンドが追加された。
| |||
/execute store storage サブコマンドが追加された。 | |||||
1.19.3 | 22w46a | /execute (if|unless) biome サブコマンドが追加された。 | |||
1.19.4 | 23w03a | /execute on サブコマンドが追加された。
| |||
/execute (if|unless) dimension ・/execute (if|unless) loaded サブコマンドが追加された。 | |||||
23w04a | /execute on サブコマンドの引数に指定できる値origin が追加された。 | ||||
23w06a | /execute summon サブコマンドが追加された。 | ||||
Pre-release 1 | /execute positioned サブコマンドに引数over <heightmap> が指定できるようになった。 | ||||
1.20.2 | 23w31a | /execute (if|unless) function サブコマンドが追加された。 | |||
Pre-release 1 | バグの修正のために根本的な変更を要することが発覚したため/execute (if|unless) function サブコマンドの開発が延期され、一時的に削除された。 | ||||
1.20.3 | 23w41a | /execute (if|unless) function サブコマンドが再追加された。 | |||
23w44a | 実行されたコマンドにreturn が存在しない場合は、if 構文は失敗、unless 構文は通過するようになった。従来はどちらの構文も失敗していた。
| ||||
各実行文脈において、呼び出された関数内の最初の/return が戻り値を与えるようになった。 | |||||
Pocket Edition Alpha | |||||
v0.16.0 | build 1 | /execute が追加された。
| |||
Java Edition 1.10と同様に動作するが、エンティティの指定は省略可能である。 | |||||
Bedrock Edition | |||||
今後のクリエイター機能 (実験) | beta 1.19.10.20 | /execute の構文がJava Editionのものに近くなった。 | |||
beta 1.19.40.20 | /execute rotated コマンドが実装された。 | ||||
beta 1.19.40.21 | /execute facing と/execute align コマンドが実装された。 | ||||
beta 1.19.40.23 | /execute anchored と/execute in コマンドが実装された。 | ||||
1.19.50 | beta 1.19.50.23 | /execute の新構文が、「今後のクリエイター機能」実験トグルを有効にしなくても利用可能になった。 | |||
1.19.70 | beta 1.19.70.21 | /execute <if|unless> block から引数data: int が削除された。 |