更新日:
データを見る(data get)
| やりたいこと | 書き方 |
|---|---|
| 自分の座標を見る | /data get entity @s Pos |
| 近くのゾンビの体力を見る | /data get entity @e[type=minecraft:zombie,limit=1,sort=nearest] Health |
| 手に持っているアイテムを見る | /data get entity @s SelectedItem |
| チェストの中身を見る | /data get block 100 64 100 Items |
最後の名前(Pos や Health)を省くと、すべてのデータが表示されます。とても長くなるので、見たい項目を指定するのがおすすめです。
データを書き換える(data merge)
/data merge entity @e[type=minecraft:villager,limit=1,sort=nearest] {NoAI:1b,Invulnerable:1b}
近くの村人を「動かない・ダメージを受けない」状態にします。{ } の中に書いた項目だけが上書きされ、ほかのデータはそのまま残ります。よく使う項目は次のとおりです。
| 項目 | 意味 |
|---|---|
NoAI:1b | 動かない・攻撃しない |
Invulnerable:1b | ダメージを受けない |
Silent:1b | 鳴き声を出さない |
PersistenceRequired:1b | 離れても消えない |
Glowing:1b | 壁越しに光って見える |
元に戻すときは 1b を 0b にして、もう一度 merge します。
値をコピーする(data modify)
/data modify entity @e[type=minecraft:armor_stand,limit=1,sort=nearest] HandItems[0] set from entity @s SelectedItem
自分が手に持っているアイテムを、近くの防具立ての手にコピーします(1.21.4以前の書き方。1.21.5以降は防具立ての装備が equipment にまとめられたため、equipment.mainhand と書きます)。set value … で値を直接入れることもできます。
値をスコアボードに入れる
/scoreboard objectives add hp dummy
/execute store result score @s hp run data get entity @s Health 1
execute store を使うと、data get で読んだ数字をスコアに保存できます。サイドバーに表示したり、execute if score で比べたりできます。最後の数字は倍率です。体力は17.5のような小数なので、1 の代わりに 10 にすると小数第1位まで残せます(175になります)。
データを消す(data remove)
/data remove entity @e[type=minecraft:villager,limit=1,sort=nearest] CustomName
いちばん近い村人の名前を消します。merge や modify で設定できる項目は、remove で消せます。
ストレージに値を保存する
/data modify storage mypack:temp round set value 1
/data get storage mypack:temp round
ストレージは、エンティティにもブロックにも属さないデータの置き場所です。ワールドと一緒に保存されるので、データパックの設定やカウンターに便利です。コロンの前は自分で決める名前です。
プレイヤーのデータは書き換えられない
/data get はプレイヤーにも使えますが、merge や modify でプレイヤーのデータを変えることはできません。プレイヤーの体力や持ち物を変えるときは、attribute、item、effect などの専用のコマンドを使います。
うまくいかないときの確認ポイント
- 「対象が見つかりません」:
limit=1を付けて1体に絞ります。/data は一度に1つの対象しか扱えません。 - 書き換えても戻る:プレイヤーには使えません。また、Mobによっては毎ティック上書きされる項目があります。
- 項目の名前が分からない:まず
/data getで全体を表示し、そこに出てくる名前を使います。版によって名前が変わることがあります。 - 統合版で使えない:統合版には /data がありません。
よくある質問
summonで付けるNBTと同じですか?
同じ名前の項目を使います。summonで付け忘れた設定を、あとからdata mergeで付け足せます。
数字の後ろの b や s は何ですか?
値の種類を表す記号です。b は小さい整数(真偽値によく使う)、s は short、f は小数(float)です。項目ごとに決まった種類で書きます。
data getの結果をスコアに入れられますか?
/execute store result score @s 名前 run data get entity @s Pos[1] のように書くと、Y座標をスコアに入れられます。