【マイクラ】コマンドの成功/失敗/戻り値とは?execute store・結果値を解説【Java/統合版】

この記事は、コマンドブロック・データパックを触り始めた方向けの仕様解説です
Java版の execute store を中心に、成功/失敗・戻り値・結果値の違いを整理します
統合版(BE)とは使える構文が違う部分があるので、同じコマンドを丸ごとコピペしないようにしてください

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

マイクラのコマンドを触っていると、途中でかなり高確率で出てくるのが、

「コマンドの成功って何?」
「失敗したら何が返るの?」
execute store resultexecute store success の違いが分からない」
「戻り値って、結局どこで使うの?」

という問題です。

普通に /give/tp を使っているうちは、コマンドが成功したか失敗したかだけ見れば大丈夫です。
でも、コマンドブロックを連結したり、スコアボードに数値を保存したり、データパックで条件分岐を作り始めると、成功/失敗だけではなく、コマンドが返す数値を見る必要が出てきます。

ここが分かると、execute store の見え方がかなり変わります。
「なんとなく難しいコマンド」ではなく、コマンドの結果を数値として保存する仕組みとして扱えるようになります。

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

  • コマンドの成功/失敗と戻り値の違いが分かります👌
  • execute store resultexecute store success の使い分けが分かります👍
  • Java版と統合版の違いでつまずきにくくなります
  • コマンドブロック・スコアボード・データパックの条件分岐を作りやすくなります

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

※この記事では、チャット欄から実行する場合は先頭に / を付ける前提で書いています。
※コマンドブロック内では先頭の / を省いても動作します。
※Java版26.1.2時点の公式情報と英語版Minecraft Wiki、Microsoft Learnを参考に、仕様を整理しています。


目次

1. まず結論:成功/失敗/戻り値は別物です
2. コマンドの成功/失敗とは
3. success countとは|コマンドブロックで見る成功回数
4. result値とは|コマンドが返す数値
5. success値とは|成功なら1、失敗なら0で見る値
6. execute store resultの使い方
7. execute store successの使い方
8. 保存先はscore・storage・entity・block・bossbarの5種類
9. Java版と統合版の違い
10. returnコマンドと関数の戻り値
11. バージョン別の注意点|1.20.3・1.21.11・26.1以降
12. よくある失敗とチェックポイント
13. まとめ
14. 引用・参考文献

この記事で分かること
・コマンドの成功/失敗、success count、result値、success値の違い
・Java版の execute store の基本構文
・統合版(BE)で同じように考える時の注意点


1. まず結論:成功/失敗/戻り値は別物です

最初に、この記事の結論から言います。

マイクラのコマンドでよく混同しやすいものは、だいたい次の4つです。

用語 意味 主な使い道
成功/失敗 コマンドが条件を満たして実行できたか 条件付きコマンドブロック、execute if/unless
success count コマンドブロックが保持する成功回数 コンパレーター出力、条件付きチェーン
success値 成功なら1、失敗なら0として扱う値 execute store success
result値 コマンドが返す具体的な数値 execute store result


これをかなりシンプルに言うと、

  • 成功/失敗:できたか?できなかったか?
  • success値:できたなら1、できなければ0
  • result値:できた結果、何個?何点?何秒?という数値
  • success count:コマンドブロック側が記録している成功回数

というイメージです。

初心者さんが最初に混乱しやすいのは、success値とresult値は、同じ「戻り値」っぽく見えるのに中身が違うところです。

たとえば、近くにゾンビがいるか調べるコマンドを考えます。

/execute if entity @e[type=minecraft:zombie,distance=..10]

この時、Java版では、条件に合うゾンビが1体以上いれば成功です。
そして、result 側では「条件に合ったエンティティ数」を数値として見ることができます。

つまり、10ブロック以内にゾンビが3体いれば、

  • success値:1
  • result値:3

という見方になります。

👆ここが超重要です。
success は「成功したかどうか」、result は「結果として得られた数」です。


2. コマンドの成功/失敗とは

まずは一番基本の、コマンドの成功/失敗から見ていきましょう。

コマンドは、成功条件を満たして実行できれば成功です。
条件を満たさなかったり、対象が存在しなかったりすると失敗します。構文が間違っている場合は、実行前に構文エラーになります。

たとえば、次のコマンドは一番近いプレイヤーにダイヤモンドを1個渡します。

/give @p minecraft:diamond 1

近くにプレイヤーがいて、アイテムIDも正しければ成功です。
逆に、対象が見つからない場合や、存在しないアイテムIDを指定した場合は実行できません。

もう少しコマンドらしい例にすると、次のような条件分岐があります。

/execute if block ~ ~-1 ~ minecraft:grass_block run say 足元が草ブロックです

これは、実行位置の足元が草ブロックなら say が実行されます。
足元が草ブロックでなければ、条件を満たさないので何も起きません。

このように、成功/失敗は、

そのコマンド、または条件判定が通ったかどうか

を見るためのものです。

コマンドを単発で使うだけなら、ここまで分かっていれば十分です。
ただ、コマンドブロックをつないだり、数値を保存したりする場合は、この成功/失敗の情報をさらに細かく扱うことになります。


3. success countとは|コマンドブロックで見る成功回数

次に、success countです。

これは主にコマンドブロックで意識する値です。
コマンドブロックは、最後に実行したコマンドの成功回数を内部的に持っています。

この成功回数は、次のような場面で使われます。

  • 条件付きチェーンコマンドブロックが次に進むかどうか
  • コマンドブロックにコンパレーターを接続した時の信号強度
  • 直前のコマンドブロックが成功したかどうかの判定

たとえば、次のような並びです。

[反復コマンドブロック] → [条件付きチェーンコマンドブロック]

左側のコマンドブロックが成功すれば、右側の条件付きチェーンが動きます。
左側が失敗すれば、右側は動きません。

これが、コマンドブロックで見る「成功」の基本です。

Java版では基本0か1、ただし例外あり

Java版では、通常のコマンドの success count はだいたい0か1です。
ただし、/execute/function のように複数の実行枝を作るコマンドでは、成功回数が1を超えることがあります。

ここで大事なのは、success count と execute store success のsuccess値は、似ているけど完全に同じものとして扱わないことです。

execute store success で保存するsuccess値は、Java版では基本的に「その枝が成功したかどうか」を1か0で保存するものです。
一方、コマンドブロックのsuccess countは、コマンドブロック側が持つ成功回数です。

最初はここを深掘りしすぎなくて大丈夫です。
初心者さん向けには、次のように分けて覚えるのがおすすめです。

コマンドブロックの条件分岐で見るのがsuccess count
スコアボードなどに保存して使うのがsuccess値/result値


4. result値とは|コマンドが返す数値

result は、コマンドが返す具体的な数値です。

ここが分かると、execute store result がかなり使いやすくなります。

たとえば、次のコマンドを実行すると、現在のゲーム内時刻を数値として取得できます。

/time query daytime

このコマンドは、単に成功したか失敗したかだけではなく、現在のdaytimeを数値として返します
この返ってきた数値がresult値です。

別の例として、近くのゾンビ数を数えるなら次のようにできます。

/execute if entity @e[type=minecraft:zombie,distance=..10]

Java版では、この条件が成功した場合、result 側には条件に合ったエンティティ数が入ります。

つまり、10ブロック以内にゾンビが5体いれば、result値は5です。
1体なら1、0体なら条件失敗で0になります。

result値が役立つ場面

result値は、次のような場面で特に便利です。

  • 周囲にいるエンティティ数を数えたい
  • 現在時刻をスコアボードへ保存したい
  • NBTの数値を取り出してスコア化したい
  • 関数の戻り値を次の処理で使いたい
  • 条件判定だけでなく「何個あったか」まで使いたい

「成功したか」だけ見たいならsuccessで十分です。
でも、「何体いたか」「今いくつか」「どの分岐を通ったか」まで使いたいならresultの出番です。


5. success値とは|成功なら1、失敗なら0で見る値

success は、コマンドや条件判定が成功したかどうかを数値として見るものです。

基本の考え方はシンプルです。

  • 成功:1
  • 失敗:0

たとえば、近くにゾンビがいるかどうかだけ知りたい場合、数は必要ありません。
「いるか、いないか」だけ分かれば十分です。

その場合は result ではなく、success を保存します。

/execute store success score @s cmd_success if entity @e[type=minecraft:zombie,distance=..10]

このコマンドは、10ブロック以内にゾンビが1体以上いれば、cmd_success に1を保存します。
いなければ0です。

一方、ゾンビが何体いるかまで知りたい場合は、result を使います。

/execute store result score @s cmd_result if entity @e[type=minecraft:zombie,distance=..10]

この場合、10ブロック以内にゾンビが3体いれば、cmd_result に3が入ります。

successとresultの使い分け

使い分けは、かなり単純です。

やりたいこと 使うもの
成功したかだけ見たい success 近くにゾンビがいるか
数や値を取りたい result ゾンビが何体いるか
コマンドブロックを条件付きでつなげたい success count 条件付きチェーン


筆者の感覚では、初心者さんはまず、

success = はい/いいえ
result = 数字そのもの

で覚えるのが一番分かりやすいです。


6. execute store resultの使い方

ここからは、Java版の execute store を実際に見ていきます。

execute store result は、コマンドのresult値をスコアボードやstorageなどに保存する構文です。

まずは、初心者さんでも扱いやすいスコアボード保存からいきましょう。

1. スコアボードを作る

先に、結果を入れるためのスコアボードを作ります。

/scoreboard objectives add cmd_result dummy

これで、cmd_result というスコアボード目標が作られます。

2. 現在時刻をresultとして保存する

次に、time query daytime の結果をスコアへ保存します。

/execute store result score @s cmd_result run time query daytime

このコマンドは、

  • time query daytime を実行する
  • そのresult値を取得する
  • 実行者 @scmd_result スコアに保存する

という流れです。

保存できたか確認するには、次のコマンドを使います。

/scoreboard players get @s cmd_result

これで、スコアに現在時刻の数値が入っていれば成功です。

3. 近くのゾンビ数を保存する

次は、周囲10ブロック以内のゾンビ数を保存してみます。

/execute store result score @s cmd_result if entity @e[type=minecraft:zombie,distance=..10]

この場合、10ブロック以内にゾンビが4体いれば、cmd_result は4になります。
0体なら条件に失敗し、結果として0扱いになります。

これはかなり便利です。
たとえば、ゾンビが多いほど警告レベルを上げたり、敵の数をUI表示したり、ミニゲームの判定に使ったりできます。

初心者向けのポイント

execute store result は、最初からNBTやstorageに入れようとすると難しく感じます。
まずはスコアボードに保存するのがおすすめです。

スコアボードなら、保存した数値をそのまま execute if score で比較できます。

/execute if score @s cmd_result matches 5.. run say ゾンビが5体以上います

👆このように、数える → 保存する → 比較するという流れが作れます。

コマンド装置やデータパックでは、この考え方がかなり重要になります。


7. execute store successの使い方

次に、execute store success です。

こちらは、resultのように数を保存するのではなく、成功したかどうかを保存します。

まず、保存先のスコアボードを作ります。

/scoreboard objectives add cmd_success dummy

そして、10ブロック以内にゾンビがいるかどうかを保存します。

/execute store success score @s cmd_success if entity @e[type=minecraft:zombie,distance=..10]

結果はこうなります。

  • ゾンビが1体以上いる:cmd_success = 1
  • ゾンビがいない:cmd_success = 0

ここで、result との違いをもう一度見ましょう。

/execute store result score @s cmd_result if entity @e[type=minecraft:zombie,distance=..10]

この場合は、ゾンビの数が入ります。

  • ゾンビが1体:cmd_result = 1
  • ゾンビが3体:cmd_result = 3
  • ゾンビが10体:cmd_result = 10

でも success なら、何体いても成功は1です。

  • ゾンビが1体:cmd_success = 1
  • ゾンビが3体:cmd_success = 1
  • ゾンビが10体:cmd_success = 1

この違いです。

successを使うべき場面

execute store success は、次のような場面に向いています。

  • 条件が成立したかだけ保存したい
  • true/falseのようなフラグを作りたい
  • 1なら処理する、0なら処理しないという分岐を作りたい
  • 数量は不要で、存在チェックだけしたい

たとえば、プレイヤーが水の中にいるかどうかを保存するなら、successが分かりやすいです。

/execute store success score @s cmd_success at @s if block ~ ~ ~ minecraft:water

水の中なら1。
水の中でなければ0。

こういう「状態フラグ」を作る時は、success がかなり便利です。


8. 保存先はscore・storage・entity・block・bossbarの5種類

Java版の execute store では、保存先が5種類あります。

保存先 用途 初心者向け度
score スコアボードに保存 高い
storage コマンドストレージNBTに保存 中級者向け
entity エンティティNBTに保存 中級者向け
block ブロックエンティティNBTに保存 中級者向け
bossbar ボスバーの値に保存 用途限定


初心者さんは、まず score だけ覚えれば大丈夫です。
スコアボードに保存できれば、比較・加算・表示・条件分岐に使えるからです。

scoreに保存する

一番よく使う形です。

/execute store result score @s cmd_result run time query daytime

構文は比較的短く、scaleやNBT型を考えなくて良いので扱いやすいです。

storageに保存する

データパック寄りの使い方をするなら、storage も便利です。

/execute store result storage yuzukaki:cmd daytime int 1 run time query daytime

保存した値は、次のように確認できます。

/data get storage yuzukaki:cmd daytime

storage は、スコアボードよりもデータ管理っぽく使えます。
ただし、NBTパスやデータ型の理解が必要なので、慣れるまではスコアボードの方が分かりやすいです。

entityやblockに保存する時の注意

entityblock へ保存する場合は、NBTを書き換える形になります。
ここで注意したいのは、プレイヤーのNBTは書き換えられないことです。

エンティティNBTを扱う時は、アーマースタンドやアイテム、モブなどを対象にすることが多いです。
また、blockに保存する場合は、チェストや看板などのブロックエンティティを対象にします。

初心者さんが最初からここへ行くと、かなり混乱しやすいです。
まずはスコアボードでresult/successの感覚をつかんでから触るのがおすすめです。

scaleとは

storageentityblock に保存する場合、最後に scale を指定します。

/execute store result storage yuzukaki:cmd value int 1 run time query daytime

この最後の 1 がscaleです。
保存する前の値に倍率をかけるための数字です。

たとえば、0.5を指定すれば半分、10を指定すれば10倍の値として保存するイメージです。
ただし、戻り値は整数として扱われる場面が多く、小数の丸めも絡むので、最初は 1 にしておくのが安全です。


9. Java版と統合版の違い

ここはかなり大事です。

execute store は、Java版限定の要素です。
統合版(BE)の新しい execute 構文はJava版にかなり近づいていますが、Java版の execute store result/success と同じ感覚では使えません

つまり、Java版でよく使う次のようなコマンドは、統合版ではそのまま使えない前提で見てください。

/execute store result score @s cmd_result run time query daytime

Java版では、コマンドの戻り値をスコアやstorageへ保存できます。
一方、統合版では、条件分岐や対象変更はできますが、Java版と同じ store 構文で結果値を保存するわけではありません。

統合版では「成功判定」と「スコア操作」を分けて考える

統合版で同じようなことをしたい場合は、

  • execute if で条件を調べる
  • 条件が通ったら scoreboard players set/add でスコアを変える
  • 条件付きコマンドブロックを使う

という形で組むことが多いです。

たとえば、統合版で近くにゾンビがいる時だけスコアを1にするなら、考え方としては次のようになります。

/execute if entity @e[type=zombie,r=10] run scoreboard players set @s cmd_success 1

逆に、毎回0へリセットしてから判定するように組むと、フラグとして扱いやすいです。

/scoreboard players set @s cmd_success 0
/execute if entity @e[type=zombie,r=10] run scoreboard players set @s cmd_success 1

Java版なら execute store success で1行にできます。
統合版では、こういう形で処理を分ける場面が出てきます。

セレクター引数も違います

Java版と統合版では、セレクター引数も違うことがあります。

代表例は距離指定です。

目的 Java版 統合版
10ブロック以内を指定 distance=..10 r=10
5〜10ブロックを指定 distance=5..10 rm=5,r=10


Java版の記事や動画を見ながら統合版で試す時は、ここでよく詰まります。
execute の見た目が似ていても、セレクターや保存機能が完全に同じとは限りません。

Java版:戻り値を保存するなら execute store が使える
統合版:条件判定とスコア操作を分けて組むことが多い

この切り分けで覚えておくと、かなり混乱しにくくなります。


10. returnコマンドと関数の戻り値

データパックを作る場合は、return コマンドも関係してきます。

return は、Java版の関数内で使うコマンドです。
関数の処理を途中で終了し、指定した値を戻り値として返せます。

return 1

このように書くと、その関数は戻り値1を返して終了します。

たとえば、条件分岐の中で、

  • 条件Aなら return 1
  • 条件Bなら return 2
  • どれにも当てはまらなければ return 0

のように作ると、呼び出し元で「どの分岐を通ったか」を数値として扱えます。

return runとは

Java版1.20.3では、return run も使えるようになっています。

return run time query daytime

これは、指定したコマンドを実行し、そのコマンドのresult値を関数の戻り値として返す形です。

つまり、関数内で「このコマンドの結果をそのまま返す」という処理ができます。

execute storeとreturnを組み合わせる

関数の戻り値は、execute store result で保存できます。

/execute store result score @s cmd_result run function yuzukaki:check

この場合、yuzukaki:check 関数が返した値を、cmd_result に保存できます。

データパックを作るなら、これはかなり重要です。
ミニゲームの判定、ギミックの状態管理、プレイヤーごとの処理分岐などで使いやすくなります。

ただし、最初から return まで一気に理解しようとすると大変です。
まずは、

  1. execute store result score で数値を保存する
  2. execute store success score で成功/失敗を保存する
  3. 慣れてきたら functionreturn を組み合わせる

この順番で覚えるのがおすすめです。


11. バージョン別の注意点|1.20.3・1.21.11・26.1以降

コマンド系は、バージョンアップで細かい仕様や関連機能が変わることがあります。
ここでは、この記事のテーマに関係するところだけ整理しますね。

Java版1.20.3:return run・execute if function周りが整理

Java版1.20.3では、return runexecute if function に関する仕様が整理されています。

データパックで関数の戻り値を使う場合、ここはかなり大事です。
特に、関数を条件判定として使ったり、関数の戻り値を execute store result で保存したりする場合は、1.20.3以降の仕様を前提に考えるのが良いです。

Java版1.21.11:execute if/unless stopwatchが追加

Java版1.21.11では、stopwatch コマンドと、execute if|unless stopwatch の構文が追加されています。

/execute if stopwatch foo:bar ..10 run say ストップウォッチが10秒以内です

これは、リアル時間を扱う新しい判定として使えます。
execute の条件分岐の幅が増えた、という見方で良いです。

また、1.21.11ではゲームルール名が名前空間付きID・スネークケースへ変更されています。
コマンドの分岐や処理上限に関係するものとしては、たとえば次のような変更があります。

旧名称 新名称 関係する内容
maxCommandChainLength minecraft:max_command_sequence_length コマンド連鎖の上限
maxCommandForkCount minecraft:max_command_forks executeなどの分岐数上限
commandBlocksEnabled minecraft:command_blocks_work コマンドブロック動作


古い記事のゲームルール名をそのまま打つと、最新版では見つからない場合があります。
コマンド装置を最新版へ移す時は、ここも確認してくださいね。

Java版26.1以降:ワールド保存形式とcommand storageの場所に注意

Java版26.1では、ワールドの保存形式に大きめの変更が入っています。
この記事のテーマに関係するところでは、command storageの保存場所も変更されています。

たとえば、以前の形式では data/command_storage_foo.dat のような形だったものが、26.1以降は data/foo/command_storage.dat のように名前空間フォルダ側へ整理される形になっています。

普通にコマンドを打つだけなら、構文そのものを急に変える必要はありません。
ただし、ワールドデータを直接触ったり、サーバー移行で保存ファイルを確認したりする場合は注意です。

統合版:1.19.70以降の新execute構文

統合版では、1.19.70以降で新しい execute 構文が導入されています。
asatifunless など、Java版に近い書き方ができます。

ただし、Java版と完全に同じではありません。
特にこの記事で扱っている execute store result/success はJava版中心の機能として見てください。

最新版のJava記事を読んでいるのに統合版で動かない
統合版のコマンドをJava版に貼ったらセレクターでエラーが出る

こういうことは普通に起きます。
コマンド記事を見る時は、必ずJava版向けか統合版向けかを確認しましょう。


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

最後に、execute store や戻り値まわりでよくある失敗をまとめます。

1. resultとsuccessを逆に使っている

かなり多いです。

「ゾンビが何体いるか」を取りたいのに、success を使ってしまう例です。

/execute store success score @s cmd_result if entity @e[type=minecraft:zombie,distance=..10]

これだと、ゾンビが何体いても成功なら1です。
数を取りたいなら、次のように result を使います。

/execute store result score @s cmd_result if entity @e[type=minecraft:zombie,distance=..10]

2. スコアボード目標を作っていない

保存先のスコアボードが存在しないと、当然保存できません。

先に作っておきましょう。

/scoreboard objectives add cmd_result dummy
/scoreboard objectives add cmd_success dummy

3. 統合版でexecute storeを使おうとしている

Java版の記事を参考にして、統合版で次のようなコマンドを打つと詰まります。

/execute store result score @s cmd_result run time query daytime

execute store はJava版限定として考えてください。
統合版では、条件判定とスコア操作を分けて組むのが基本です。

4. Java版のdistanceを統合版にそのまま貼っている

Java版では、距離指定に distance=..10 を使います。
統合版では、半径指定に r=10 を使う場面が多いです。

Java版:

@e[type=minecraft:zombie,distance=..10]

統合版:

@e[type=zombie,r=10]

ここは、Java版と統合版のコマンド差でかなり引っかかりやすいです。

5. storageの名前空間を付け忘れている

storage を使う時は、名前空間付きIDで指定します。

/execute store result storage yuzukaki:cmd daytime int 1 run time query daytime

yuzukaki:cmd のように、namespace:path の形で書くのが基本です。
データパックでは、自分の名前空間に合わせてください。

6. scaleや型で混乱している

score に保存する場合は、scaleやNBT型を指定しません。

/execute store result score @s cmd_result run time query daytime

一方、storageentityblock に保存する場合は、型とscaleが必要です。

/execute store result storage yuzukaki:cmd daytime int 1 run time query daytime

この違いです。
初心者さんは、まず score 保存で慣れてから、storage やNBT保存へ進むのが安全です。

チェックリスト

うまく動かない時は、下の項目を確認してみてください。

  • [ ] Java版の記事を統合版でそのまま使っていないか?
  • [ ] resultsuccess を逆にしていないか?
  • [ ] スコアボード目標を先に作っているか?
  • [ ] セレクター引数はJava版/統合版に合っているか?
  • [ ] storage の名前空間を正しく書いているか?
  • [ ] score 保存とNBT保存の構文を混同していないか?
  • [ ] コマンドブロックで使う場合、条件付き/無条件の設定は正しいか?
  • [ ] 最新版でゲームルール名が変わっていないか?

13. まとめ

以上、マイクラのコマンドにおける成功/失敗/戻り値/result値/success値について解説しました。

最後に、この記事の要点を整理します。

  • 成功/失敗は、コマンドや条件判定が通ったかどうか
  • success countは、主にコマンドブロック側で見る成功回数
  • success値は、成功なら1、失敗なら0として保存できる値
  • result値は、コマンドが返す具体的な数値
  • Java版では execute store result/success でスコアやstorageへ保存できる
  • 統合版ではJava版の execute store をそのまま使うのではなく、条件判定とスコア操作を分けて考える

一番大事なのは、次の使い分けです。

何個あるか・いくつかを知りたい → result
成功したかだけ知りたい → success

ここさえ分かれば、execute store はかなり読みやすくなります。

コマンドは、最初は本当に分かりにくいです。
特に execute store は、構文が長くて「何をどこに保存しているのか」が見えづらいです。

でも、順番に分解するとやっていることはかなり素直です。

コマンドを実行する
↓
返ってきた値を見る
↓
scoreやstorageに保存する
↓
次の条件分岐で使う

この流れです。

まずは、score に保存する例から試してみてください。
スコアボードに数字が入るのを確認できると、一気に理解しやすくなります。

では、本日はここまでで終わります。
最後までご覧いただき、ありがとうございました。


14. 引用・参考文献

この記事を書くにあたり、以下の公式情報・英語版コミュニティWiki・ドキュメントを参考にしています。