更新日:
1. 基本の形
execute store result score <だれ> <スコア名> run <コマンド>
execute store success score <だれ> <スコア名> run <コマンド>
result はコマンドが返した数字(数えた数や取り出した値)を入れます。success は成功したら1、失敗したら0を入れます。入れる先は score のほかに、entity(Mobのデータ)、block(ブロックのデータ)、storage、bossbar が選べます。
2. 準備
/scoreboard objectives add count dummy
/scoreboard objectives add y dummy
/scoreboard objectives add hp dummy
このページの例で使うスコアを作っておきます。
3. 人数を数える
execute store result score #players count if entity @a[gamemode=adventure]
if entity で終わると、条件に合ったエンティティの数がそのまま入ります。ミニゲームで「残り何人か」を数えるときに使います。#players は画面に出ない仮の名前です。
4. 座標や体力をスコアに入れる
execute as @a store result score @s y run data get entity @s Pos[1]
execute as @a store result score @s hp run data get entity @s Health
data get で読んだ値がスコアに入ります。小数は切り捨てられるので、Y座標64.5は64になります。as @a と @s を組み合わせると、全員がそれぞれ自分の値を持てます。データの読み方は dataコマンドの使い方 にまとめています。
5. 日数や時刻を入れる
execute store result score #day count run time query minecraft:day repetitions
execute store result score #time count run time query minecraft:day
time query の結果がスコアに入ります。Java版26.1以降の書き方で、1.21.11以前は time query day と time query daytime と書きます。画面に出す方法は 日数と時刻を表示するコマンド を見てください。
6. スコアをボスバーやMobの体力に入れる
execute store result bossbar minecraft:timer value run scoreboard players get #time count
execute store result entity @e[type=zombie,tag=boss,limit=1] Health float 1 run scoreboard players get #hp count
逆向きに、スコアの値をほかの場所へ入れることもできます。1行目は残り時間をゲージに出す例です(bossbarコマンドの使い方)。2行目の float 1 は「小数の型で、1倍して入れる」という意味で、0.5にすると半分の値が入ります。
7. 成功したかどうかで分ける
execute as @a store success score @s count run clear @s minecraft:diamond 1
execute as @a[scores={count=1}] run give @s minecraft:golden_apple
ダイヤを1個取れた人だけに金のリンゴを渡す、簡単なお店です。ダイヤを持っていない人は0になるので何も起きません。
うまくいかないときの確認ポイント
- プレイヤーのデータが書き換わらない:
store result entityはプレイヤーには使えません。Mobかスコアに入れます。 - 小数が消える:スコアは整数だけです。
data getの最後に倍率(例:Pos[1] 10)を付けると、10倍して小数1けたまで残せます。 - 統合版で使いたい:統合版には execute store がありません。人数を数えるなら、スコアを0にしてから
execute as @a run scoreboard players addで1ずつ足します。
よくある質問
resultとsuccessはどう使い分けますか?
数そのものが欲しいときはresult、できたかどうかだけ知りたいときはsuccessを使います。
1つのexecuteでスコアを2つ同時に入れられますか?
storeを2回続けて書くと、同じ結果を2か所に入れられます。
execute storeは統合版でも使えますか?
使えません。Java版だけのしくみです。