【マイクラ】executeコマンドの使い方・構文・条件分岐を解説【Java版】

この記事はマイクラJava版向けのexecuteコマンド解説です
統合版(BE)とは構文や挙動が異なる部分があります
Java版1.21.11〜26.1.2時点の仕様を基準に整理しています

こんにちは。ゆずかきです。

マイクラのコマンドを触り始めると、かなり早い段階でぶつかるのがexecuteコマンドです。

「プレイヤーの足元にブロックがある時だけ実行したい」
「近くにゾンビがいる時だけ音を鳴らしたい」
「全プレイヤーそれぞれの位置でパーティクルを出したい」

こういうことをやろうとすると、だいたいexecuteが必要になります。

ただ、最初に見ると構文が長くて、正直かなり分かりにくいです。
筆者も最初はasatの違いで何回もミスりました。

でも安心してください。
executeは全部を一気に覚える必要はありません。
まずは、「誰が」「どこで」「どんな条件なら」「何を実行するか」という順番で見ると、一気に読みやすくなります。

この記事を読めば、次のことが出来るようになります。

  • Java版のexecuteコマンドの基本構文が分かります👌
  • asatの違いで混乱しにくくなります
  • ifunlessを使った条件分岐が書けるようになります
  • コマンドブロックやデータパックで使う時の考え方が分かります

それでは、やっていきましょう!

※この記事では、コマンドブロックに入力する場合は先頭の/を省いても動くことを前提にしています。
※チャット欄から実行する場合は、基本的に先頭に/を付けてください。
※バージョンアップで構文が変わる可能性があるため、重要な変更点は記事後半にまとめています。


目次

1. executeコマンドとは
2. executeの基本構文を先に覚える
3. asとatの違いを理解する
4. 位置・向き・ディメンションを変えるサブコマンド
5. if・unlessで条件分岐を作る
6. よく使う条件分岐の実例
7. アイテム検知はexecute if itemsを使う
8. スコアボードとexecuteを組み合わせる
9. execute storeで結果を保存する
10. コマンドブロックで使う時の注意点
11. Java版1.20.5以降・1.21.11以降・26.1以降の変更点
12. よくある失敗とチェックポイント
13. まとめ
14. 引用・参考文献

この記事で分かること
・Java版のexecuteコマンドの基本
asatifunlessstoreの使い方
・初心者がつまずきやすいミスの回避方法


1. executeコマンドとは

executeコマンドは、ひとことで言うと、別の条件・別の場所・別の実行者として、他のコマンドを動かすためのコマンドです。

普通のコマンドは、基本的に「今コマンドを打った人」や「コマンドブロックの位置」を基準に動きます。
でも、それだけだと少し不便です。

例えば、こういうことをしたい時がありますよね。

  • 全プレイヤーの足元をそれぞれ調べたい
  • ゾンビの位置でパーティクルを出したい
  • 特定のブロックを踏んだ時だけ効果を付けたい
  • スコアが一定以上のプレイヤーだけ処理したい
  • チェストの中に特定アイテムがある時だけ動かしたい

こういう「条件付きで動かす」「対象の位置で動かす」処理をまとめて担当してくれるのがexecuteです。

executeは“コマンドの前置き”として考える

初心者さんは、executeそのものが何かをするコマンドだと思うと混乱しやすいです。
実際には、execute最後に書いたコマンドを、どういう状況で実行するか決める前置きだと思うと分かりやすいです。

例えば、下のコマンドを見てください。

/execute as @a at @s run particle minecraft:heart ~ ~1 ~ 0.2 0.2 0.2 0 3 force

これは、

  • as @a:全プレイヤーを実行者にする
  • at @s:そのプレイヤー本人の位置で実行する
  • run particle ...:ハートのパーティクルを出す

という意味です。

つまり、全プレイヤーそれぞれの頭上にハートを出すコマンドになります。

この「誰として」「どこで」「何をする」の流れをつかめると、executeはかなり読みやすくなります。


2. executeの基本構文を先に覚える

まず、executeの基本形はこれです。

/execute <サブコマンド> <サブコマンド> ... run <実行したいコマンド>

executeの後ろには、サブコマンドをつなげて書きます。
そして最後にrunを書いて、その後ろに実際に動かしたいコマンドを書きます。

一番シンプルな例はこちらです。

/execute run say テスト

これだけだと、普通に/say テストを実行しているのとほぼ同じです。
executeらしくなるのは、ここに条件や位置指定を足していく時です。

executeでよく使うサブコマンド一覧

全部を最初から暗記する必要はありません。
まずは、よく使うものだけ覚えれば大丈夫です。

サブコマンド 意味 初心者優先度
as 実行者を変える 最優先
at 実行位置を変える 最優先
if 条件を満たす時だけ実行 最優先
unless 条件を満たさない時だけ実行 高い
positioned 指定座標で実行 高い
rotated 向きを変えて実行
facing 指定地点やエンティティの方を向いて実行
in ディメンションを変えて実行
store 実行結果を保存する 応用
run 最後に実行するコマンドを書く 必須


初心者さんが最初に覚えるべきなのは、asatifunlessrunです。
ここだけ分かれば、かなりの処理が書けます。

runは最後に1回だけ

runは、基本的に最後に1回だけ書きます。

/execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect give @s minecraft:speed 1 0 true

上の例では、

  • 全プレイヤーを対象にする
  • 各プレイヤーの位置で判定する
  • 足元が金ブロックなら
  • 移動速度上昇を付ける

という流れです。

executeは文章のように左から右へ読んでいくと分かりやすいです。


3. asとatの違いを理解する

executeで一番つまずきやすいのが、asatの違いです。
ここは本当に大事です。

asは「誰として実行するか」

asは、実行者を変えます。
@sの中身が変わる、と考えると分かりやすいです。

/execute as @a run say 私は@sです

これは、全プレイヤーを実行者としてsayを実行します。
@sは、それぞれのプレイヤー本人になります。

ただし、asだけでは実行位置は変わりません
コマンドブロックから実行した場合、位置はまだコマンドブロックの場所のままです。

ここが落とし穴です。

atは「どこで実行するか」

atは、実行位置・向き・ディメンションを対象に合わせます。

/execute at @a run particle minecraft:flame ~ ~1 ~ 0.2 0.2 0.2 0 5 force

これは全プレイヤーの位置で炎のパーティクルを出します。
ただし、atだけでは実行者は変わりません

つまり、@sは元の実行者のままです。

基本はas @a at @sのセットで覚える

プレイヤーごとに何かしたい時は、まずこの形を覚えてください。

/execute as @a at @s run <実行したいコマンド>

意味はこうです。

  • as @a:全プレイヤーを1人ずつ実行者にする
  • at @s:そのプレイヤー本人の位置で実行する
  • run:最後に処理を行う

例えば、全プレイヤーの足元に煙を出すならこちらです。

/execute as @a at @s run particle minecraft:campfire_cosy_smoke ~ ~ ~ 0.1 0.1 0.1 0 1 force

やりがちな失敗例

これは初心者さんが本当によくやるミスです。

/execute at @e[type=minecraft:zombie] run kill @s

一見すると、ゾンビの位置でゾンビを倒すコマンドに見えます。
でも違います。

atは位置を変えるだけなので、@sは元の実行者のままです。
チャットから実行した場合、自分が対象になってしまいます。

ゾンビ自身を倒したいなら、こう書きます。

/execute as @e[type=minecraft:zombie] at @s run kill @s

覚え方
as = 誰として?
at = どこで?

この2つを分けて考えるのがコツです。


4. 位置・向き・ディメンションを変えるサブコマンド

ここからは、asat以外の位置指定系サブコマンドを見ていきます。
全部を普段使いするわけではありませんが、装置や配布マップを作るなら覚えておくとかなり便利です。

positioned:指定した座標で実行する

positionedは、指定した座標を実行位置にします。

/execute positioned 0 64 0 run setblock ~ ~ ~ minecraft:diamond_block

これは、座標0 64 0にダイヤモンドブロックを置きます。

atが「エンティティの位置に合わせる」のに対して、positionedは「座標を直接指定する」イメージです。

プレイヤーの位置だけを借りたい場合は、次のようにも書けます。

/execute positioned as @p run setblock ~ ~-1 ~ minecraft:gold_block

facing:指定した方向を向いて実行する

facingは、実行方向を指定座標やエンティティへ向けるサブコマンドです。
ローカル座標^ ^ ^と組み合わせる時に便利です。

/execute as @a at @s facing entity @e[type=minecraft:zombie,sort=nearest,limit=1] eyes run particle minecraft:end_rod ^ ^1 ^2 0 0 0 0 5 force

これは、各プレイヤーが最寄りのゾンビの目の方向を向いた状態で、前方にエンドロッドのパーティクルを出します。

ちょっと難しめですが、魔法っぽい演出やビーム表現を作る時に使えます。

rotated:向きを指定して実行する

rotatedは、実行時の向きを角度で指定します。

/execute as @a at @s rotated 0 0 run tp @s ^ ^ ^1

rotatedはローカル座標とセットで使うことが多いです。
ただし、初心者さんが普段の装置でいきなり使う場面は少なめです。

まずは、at @sで対象の向きも一緒に使えることを覚えておけば十分です。

anchored:目線基準か足元基準かを変える

anchoredは、ローカル座標^ ^ ^の基準を変えます。

  • anchored feet:足元基準
  • anchored eyes:目線基準

プレイヤーの目線から前方にパーティクルを出したい場合は、anchored eyesが便利です。

/execute as @a at @s anchored eyes run particle minecraft:crit ^ ^ ^2 0 0 0 0 5 force

👆これは、各プレイヤーの目線の2ブロック前にクリティカルのパーティクルを出す例です。

in:ディメンションを変える

inは、実行ディメンションを変えます。

/execute in minecraft:the_nether positioned 0 80 0 run setblock ~ ~ ~ minecraft:glowstone

これはネザーの0 80 0にグロウストーンを置く例です。

ただし、オーバーワールドとネザーでは座標の縮尺が関係するため、相対座標で使う時は注意してください。
最初は、positionedで座標を固定して使う方が安全です。


5. if・unlessで条件分岐を作る

executeの本領発揮は、条件分岐です。

条件分岐とは、

  • 条件を満たすなら実行
  • 条件を満たさないなら実行しない

という仕組みのことです。

Java版では、ifunlessを使います。

ifは「条件を満たす時だけ」

基本形はこちらです。

/execute if <条件> run <実行したいコマンド>

例えば、足元が金ブロックならスピードを付けるコマンドはこちらです。

/execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect give @s minecraft:speed 1 0 true

意味は、

  • 全プレイヤーを対象にする
  • 各プレイヤーの位置で判定する
  • 足元が金ブロックなら
  • そのプレイヤーに移動速度上昇を付ける

です。

これだけで、簡単なギミック床が作れます。

unlessは「条件を満たさない時だけ」

unlessは、ifの逆です。

/execute unless <条件> run <実行したいコマンド>

例えば、足元が空気ではない時だけメッセージを出すならこうです。

/execute as @a at @s unless block ~ ~-1 ~ minecraft:air run title @s actionbar {"text":"足元にブロックがあります","color":"yellow"}

unless block ~ ~-1 ~ minecraft:airなので、足元が空気ではない時に実行されます。

ifとunlessは重ねられる

条件は複数つなげることができます。

/execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block unless entity @e[type=minecraft:zombie,distance=..5] run effect give @s minecraft:speed 1 0 true

これは、

  • 足元が金ブロック
  • 近く5ブロック以内にゾンビがいない

この2つを満たす時だけ、スピードを付けます。

executeは、このように条件をどんどん足せるのが強みです。

よく使うif・unless条件一覧

条件 できること 使用例
if block 1ブロックを判定 足元が金ブロックか調べる
if blocks 範囲同士を比較 建築物の形が一致しているか調べる
if entity エンティティの有無を判定 近くにゾンビがいるか調べる
if score スコアを判定 タイマーやポイントを調べる
if items アイテムを判定 手持ちやチェスト内を調べる
if biome バイオームを判定 砂漠にいる時だけ処理する
if dimension ディメンションを判定 ネザーにいる時だけ処理する
if data NBTやストレージを判定 エンティティのデータを調べる
if loaded 座標が読み込まれているか判定 未読み込みチャンクへの処理事故を防ぐ
if stopwatch ストップウォッチ時間を判定 実時間ベースの処理を作る


if itemsはJava版1.20.5以降、if stopwatchはJava版1.21.11以降で使える構文です。
古いバージョンの解説記事を見る時は、ここが違うので注意してくださいね。


6. よく使う条件分岐の実例

ここからは、実際に使いやすいexecute ifの例を紹介します。
コマンドはそのまま試せる形にしています。

足元のブロックを判定する

金ブロックの上に乗ったプレイヤーへ移動速度上昇を付ける例です。

/execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect give @s minecraft:speed 1 0 true

アスレチック、ロビー、ミニゲームの加速床などに使いやすいです。

足元のブロック判定は、初心者さんが最初に練習する題材としてかなりおすすめです。

近くにモンスターがいるか判定する

近く5ブロック以内にゾンビがいる時だけ、アクションバーに警告を出します。

/execute as @a at @s if entity @e[type=minecraft:zombie,distance=..5] run title @s actionbar {"text":"近くにゾンビがいます!","color":"red"}

distance=..5は「5ブロック以内」という意味です。

反対に、近くにゾンビがいない時だけ表示したいならunlessにします。

/execute as @a at @s unless entity @e[type=minecraft:zombie,distance=..5] run title @s actionbar {"text":"周囲は安全です","color":"green"}

バイオームを判定する

今いる場所が砂漠ならメッセージを出す例です。

/execute as @a at @s if biome ~ ~ ~ minecraft:desert run title @s actionbar {"text":"砂漠バイオームにいます","color":"yellow"}

バイオーム限定のイベントや、配布マップの演出に使えます。

ディメンションを判定する

ネザーにいるプレイヤーだけに耐火を付ける例です。

/execute as @a at @s if dimension minecraft:the_nether run effect give @s minecraft:fire_resistance 1 0 true

if dimensionは、ネザーやエンド限定ギミックに便利です。

範囲のブロックを比較する

if blocksは、指定した範囲と別の範囲が同じかどうかを見ます。

/execute if blocks 0 64 0 2 66 2 10 64 10 all run say 構造が一致しています

これは、0 64 02 66 2の範囲と、10 64 10を起点にした同じ大きさの範囲を比較します。

  • all:空気も含めて全部比較
  • masked:空気を除いて比較

建築物の完成判定や、特定の形を作った時に発動するギミックに使えます。

ただし、広すぎる範囲を比較すると重くなるので、最初は小さい範囲で試しましょう。


7. アイテム検知はexecute if itemsを使う

Java版1.20.5以降では、アイテムの構文が大きく変わりました。
昔の記事にあるような、アイテムNBTをそのまま{}で書く方法は、現在のJava版ではそのまま使えないことがあります。

現在は、アイテム成分を[]で書く構文が中心です。
そして、アイテム検知にはexecute if itemsが使えます。

メインハンドのアイテムを判定する

まずは、棒を持っているプレイヤーだけにパーティクルを出す例です。

/execute as @a at @s if items entity @s weapon.mainhand minecraft:stick run particle minecraft:happy_villager ~ ~1 ~ 0.2 0.2 0.2 0 5 force

意味は、

  • 全プレイヤーを対象にする
  • 各プレイヤーの位置で実行する
  • メインハンドに棒を持っているなら
  • 頭上に村人のパーティクルを出す

です。

これだけでも、魔法の杖や専用アイテムのギミックに使えます。

custom_data付きアイテムを判定する

配布マップやデータパックでは、普通の棒ではなく「専用の棒」だけを反応させたいことがあります。
その場合は、custom_dataを付けたアイテムを配布して、それを検知します。

まず、専用アイテムを渡します。

/give @s minecraft:stick[custom_data={magic_stick:1b},item_name='"魔法の杖"'] 1

次に、そのアイテムを持っている時だけ反応させます。

/execute as @a at @s if items entity @s weapon.mainhand minecraft:stick[custom_data~{magic_stick:1b}] run particle minecraft:end_rod ^ ^1 ^2 0.1 0.1 0.1 0 10 force

ここで大事なのは、普通の棒ではなく、custom_dataを持った棒だけを判定しているところです。

注意
Java版1.20.5以降は、アイテムの書き方がかなり変わっています。
古いstick{tag...}形式をそのまま使うと動かないことがあるので、最新版向けの記事では[]構文を使うのがおすすめです。

チェスト内のアイテムを判定する

チェストなどのコンテナ内を調べることもできます。

/execute if items block ~ ~ ~ container.* minecraft:diamond[count~{min:8}] run say チェストにダイヤが8個以上あります

これは、コマンド実行位置にあるコンテナ内に、8個以上のダイヤモンドがあるかを調べます。

  • block ~ ~ ~:この座標のブロックを対象にする
  • container.*:コンテナ内の全スロットを見る
  • minecraft:diamond[count~{min:8}]:8個以上のダイヤを探す

ショップ、納品クエスト、倉庫判定などでかなり便利です。

まずはif itemsを優先して覚える

昔は、アイテム検知をif data entityで頑張る場面が多かったです。
でも現在のJava版では、アイテムを調べたいならまずif itemsを疑う方が自然です。

特に、

  • 手持ちアイテム判定
  • 防具スロット判定
  • チェスト内アイテム判定
  • custom_data付きアイテム判定

このあたりはexecute if itemsで組めることが多いです。


8. スコアボードとexecuteを組み合わせる

executeを本格的に使うなら、スコアボードとの組み合わせは避けて通れません。

スコアボードは、プレイヤーやエンティティに数値を持たせる仕組みです。
execute if scoreを使うと、スコアの値によって処理を分けられます。

スコアボードを作成する

まず、タイマー用のスコアを作ります。

/scoreboard objectives add Timer dummy

次に、リピートコマンドブロックなどで毎tick加算します。

/scoreboard players add @a Timer 1

マイクラは通常20tickで約1秒なので、200tickで約10秒です。

スコアが一定以上なら実行する

Timerが200以上になったプレイヤーへメッセージを出します。

/execute as @a if score @s Timer matches 200.. run title @s actionbar {"text":"10秒経過しました","color":"gold"}

matches 200..は「200以上」という意味です。

範囲指定はこのように書けます。

書き方 意味
0 ちょうど0
1.. 1以上
..10 10以下
5..20 5以上20以下


タイマーをリセットする

10秒ごとに繰り返したいなら、表示後にTimerを0へ戻します。

/execute as @a if score @s Timer matches 200.. run scoreboard players set @s Timer 0

この2つをリピートコマンドブロックで動かせば、10秒ごとの処理が作れます。

スコア同士を比較する

execute if scoreは、スコア同士の比較もできます。

/execute if score @p Point >= @p NeedPoint run say 必要ポイントを満たしています

この場合、@pPointNeedPoint以上なら実行されます。

ショップ、ゲーム内ポイント、クエスト進行度などを作る時に使いやすいです。


9. execute storeで結果を保存する

execute storeは、コマンドの結果をスコアボードやデータに保存するための構文です。
初心者さんには少し難しいですが、使えるようになると出来ることが一気に増えます。

resultとsuccessの違い

storeでは、主にresultsuccessを使います。

種類 意味
result コマンドが返した数値を保存 検出数、座標、アイテム数など
success 成功したかを0か1で保存 条件を満たしたかどうか


まずは、resultの方が分かりやすいです。

プレイヤーのY座標をスコアに保存する

先にスコアボードを作ります。

/scoreboard objectives add PosY dummy

次に、各プレイヤーのY座標をスコアへ保存します。

/execute as @a store result score @s PosY run data get entity @s Pos[1] 1

data get entity @s Pos[1]は、エンティティのY座標を取得します。
store result score @s PosYで、その結果をスコアに保存しています。

その後、Y座標が80以上のプレイヤーだけを判定できます。

/execute as @a if score @s PosY matches 80.. run title @s actionbar {"text":"高い場所にいます","color":"aqua"}

アイテム数を保存する

clearコマンドは、最大削除数を0にすると、アイテムを消さずに数だけ調べる用途で使えます。

先にスコアボードを作ります。

/scoreboard objectives add DiamondCount dummy

ダイヤモンドの所持数を保存します。

/execute as @a store result score @s DiamondCount run clear @s minecraft:diamond 0

これで、各プレイヤーのダイヤモンド所持数をDiamondCountに入れられます。

10個以上持っている時だけ表示するならこうです。

/execute as @a if score @s DiamondCount matches 10.. run title @s actionbar {"text":"ダイヤを10個以上持っています","color":"aqua"}

storeは少し難しいですが、数値を扱う装置を作るならかなり便利です。


10. コマンドブロックで使う時の注意点

executeはチャット欄でも使えますが、実際にはコマンドブロックで使うことが多いです。
ここでは、コマンドブロック運用でよくある注意点をまとめます。

リピートコマンドブロックは重くなりやすい

リピートコマンドブロックで毎tick実行すると、1秒に約20回処理されます。

単純なコマンドなら問題ありませんが、対象が多いコマンドを毎tick動かすと重くなります。

特に注意したいのは、こういう書き方です。

/execute as @e at @s run particle minecraft:flame ~ ~1 ~ 0 0 0 0 1 force

@eは、プレイヤー・モンスター・アイテム・防具立てなど、多くのエンティティを対象にします。
ワールド内のエンティティ数が多いと、かなり処理が増えます。

必要がない限り、対象は絞りましょう。

/execute as @e[type=minecraft:zombie,distance=..30] at @s run particle minecraft:flame ~ ~1 ~ 0 0 0 0 1 force

typedistanceを入れるだけでも、負荷を抑えやすくなります。

limitとsortを使って対象を絞る

最寄りの1体だけを対象にしたい時は、sort=nearest,limit=1を使います。

/execute as @a at @s if entity @e[type=minecraft:zombie,distance=..10,sort=nearest,limit=1] run title @s actionbar {"text":"近くにゾンビがいます","color":"red"}

limit=1を付けると、対象が1体に絞られます。
無駄な分岐を減らせるので、コマンドが読みやすくなります。

@sが誰なのかを常に確認する

executeでミスる時の原因は、だいたい@sです。

特に、下のような時は注意してください。

/execute at @a run give @s minecraft:diamond

これは、全プレイヤーの位置で実行しているだけで、実行者は変わっていません。
コマンドブロックで動かすと、@sが期待通りのプレイヤーにならないことがあります。

プレイヤー本人にダイヤを渡したいなら、こうです。

/execute as @a run give @s minecraft:diamond

位置も使いたいなら、基本形はこちらです。

/execute as @a at @s run give @s minecraft:diamond

体験談
asを忘れると、「なぜか自分だけ処理される」「コマンドブロック基準になる」という事故が起きがちです。
まず@sが誰になっているかを確認しましょう。

データパックならmcfunctionに分けると管理しやすい

長いexecuteをコマンドブロックに直接書くと、後から修正しにくいです。

本格的に作るなら、データパックの.mcfunctionファイルに分けると管理しやすいです。

例:

execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run function yuzukaki:speed_floor

このように、条件判定だけをexecuteで行い、実際の処理はfunction側に分けると読みやすくなります。


11. Java版1.20.5以降・1.21.11以降・26.1以降の変更点

コマンド記事で一番怖いのは、古い情報のまま書いてしまうことです。
特にJava版は、1.20.5以降でアイテム構文が大きく変わっています。

ここでは、execute周りで注意したい変更点を整理します。

Java版1.20.5以降:アイテム構文が変更

Java版1.20.5以降では、アイテムの指定方法が大きく変わりました。

昔のような、

/give @s minecraft:stick{foo:1b}

という書き方ではなく、現在は次のように[]で成分を書きます。

/give @s minecraft:stick[custom_data={foo:1b}]

これに合わせて、execute if itemsも重要になりました。

/execute as @a if items entity @s weapon.mainhand minecraft:stick[custom_data~{foo:1b}] run say 専用の棒を持っています

古い記事で「NBTをこう書けば検知できます」と書かれていても、最新版Javaではそのまま使えないことがあります。
アイテム判定をするなら、まずバージョンを確認してください。

Java版1.21.11以降:execute if stopwatchが追加

Java版1.21.11では、stopwatchコマンドと、それを判定するexecute if|unless stopwatchが追加されています。

まずストップウォッチを作ります。

/stopwatch create yuzukaki:test

10秒以上経過した時だけ実行する例です。

/execute if stopwatch yuzukaki:test 10.. run say 10秒以上経過しました

10秒以下の時だけ実行するなら、範囲を..10にします。

/execute if stopwatch yuzukaki:test ..10 run say まだ10秒以内です

stopwatchはゲームtickではなく、実時間を扱う仕組みです。
通常のタイマーはスコアボードでも作れますが、実時間基準で見たい場合はstopwatchが選択肢になります。

Java版26.1以降:timeコマンド周りに変更あり

Java版26.1では、timeコマンドがWorld Clocksを基準にする仕様へ変更されています。
executeそのものの基本構文が丸ごと変わったわけではありませんが、execute storetimeコマンドの返り値を保存している装置では、返り値の意味に注意が必要です。

特に、古いデータパックで、

/execute store result score #time Timer run time query daytime

のように時間をスコアへ保存している場合は、26.1以降の仕様と合っているか確認してください。

要点
・1.20.5以降:アイテム構文とexecute if itemsに注意
・1.21.11以降:execute if|unless stopwatchが追加
・26.1以降:timeコマンドの扱いに注意


12. よくある失敗とチェックポイント

executeが動かない時は、だいたい原因が決まっています。
困った時は、下のチェックポイントを順番に見てください。

チェックポイント一覧

  • [ ] チャット欄で実行する時、先頭に/を付けているか?
  • [ ] コマンドブロックでは、先頭の/を省いても動くことを理解しているか?
  • [ ] runは最後に書いているか?
  • [ ] asで実行者を変え忘れていないか?
  • [ ] at @sで対象の位置に移動できているか?
  • [ ] @sが誰を指しているか理解できているか?
  • [ ] @eの対象を広げすぎていないか?
  • [ ] typedistancelimitで対象を絞れているか?
  • [ ] アイテム検知で古いNBT構文を使っていないか?
  • [ ] Java版と統合版の構文を混ぜていないか?
  • [ ] コマンドを実行する座標のチャンクが読み込まれているか?
  • [ ] スコアボードのオブジェクト名を作成済みか?

失敗例1:asなしで@sを使っている

/execute at @a run effect give @s minecraft:speed 1 0 true

これは、全プレイヤーの位置で実行しているだけで、@sはプレイヤー本人とは限りません。

修正版はこちらです。

/execute as @a at @s run effect give @s minecraft:speed 1 0 true

失敗例2:対象が広すぎる

/execute as @e at @s run say test

@eは全エンティティ対象なので、ワールドによっては大量に実行されます。

修正版の例はこちらです。

/execute as @e[type=minecraft:zombie,distance=..30] at @s run say test

対象を絞るだけで、だいぶ安全になります。

失敗例3:古いアイテムNBT構文を使っている

Java版1.20.5以降では、古いアイテムNBT構文がそのまま使えないことがあります。

古い例:

/give @s minecraft:stick{magic:1b}

現在向けの例:

/give @s minecraft:stick[custom_data={magic:1b}]

検知も、現在向けならこうです。

/execute as @a if items entity @s weapon.mainhand minecraft:stick[custom_data~{magic:1b}] run say 魔法の棒を持っています

失敗例4:条件は合っているのに実行場所が違う

/execute as @a if block ~ ~-1 ~ minecraft:gold_block run effect give @s minecraft:speed 1 0 true

as @aで実行者は変わっていますが、at @sがないので、足元判定の位置がプレイヤー本人になっていない可能性があります。

修正版はこちらです。

/execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect give @s minecraft:speed 1 0 true

プレイヤーごとの足元を見るなら、as @a at @sをセットで書く。
まずはこれを徹底すると事故が減ります。


13. まとめ

以上、マイクラJava版のexecuteコマンドについて、基本構文から条件分岐まで整理しました。

executeは最初こそ難しく見えますが、考え方はかなりシンプルです。

大事なのは、

  • as:誰として実行するか
  • at:どこで実行するか
  • if:条件を満たす時だけ実行
  • unless:条件を満たさない時だけ実行
  • run:最後に実行するコマンド

この5つです。

特に初心者さんは、まずこの形を覚えてください。

/execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run effect give @s minecraft:speed 1 0 true

この1行には、executeの基本がかなり詰まっています。

  • プレイヤーごとに処理する
  • プレイヤー本人の位置で判定する
  • 足元ブロックを見る
  • 条件を満たした時だけ効果を付ける

これが理解できれば、ミニゲーム、配布マップ、ロビー演出、便利装置など、作れるものが一気に増えます。

Java版1.20.5以降はアイテム構文、1.21.11以降はstopwatch条件、26.1以降はtime周りの仕様にも注意しながら、少しずつ試してみてくださいね。

では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。
柚子クラでは他にもマイクラの便利装置やコマンド解説を紹介しているので、是非ご覧くださいね(^^♪


14. 引用・参考文献