Minecraft Wiki
Advertisement
印刷用ページはサポート対象外です。表示エラーが発生する可能性があります。ブラウザーのブックマークを更新し、印刷にはブラウザーの印刷機能を使用してください。
Information icon
この項目はJava Edition限定の要素です。 
data
必要権限レベル

2

実行制限

なし

ブロックエンティティエンティティNBTストレージNBTデータの取得・統合・編集・削除を行うことができる。

構文

/dataコマンドにはgetmergemodifyremoveの4種類の構文がある。

dataコマンドではNBT操作の対象を次のように指定する。

  • ブロックエンティティ:block <対象の座標>
  • エンティティ:entity <対象>
  • NBTストレージ:storage <対象>
    • <対象>にはNBTストレージの名前空間IDが指定できる。

get

構文
/data get (block <対象の座標>|entity <対象>|storage <対象>) [<NBTパス>] [<倍率>]

/data get構文では、対象のNBTを取得することができる。<NBTパス>を指定すると、特定のNBTタグのみを取得することもできる。<倍率>を指定した場合は取得する数値が定数倍される。

merge

構文
/data merge (block <対象の座標>|entity <対象>|storage <対象>) [<NBT>]

/data merge構文では、対象のNBTに<NBT>で指定したNBTデータを「統合」することができる。「統合」の仕様の詳細は次の通り。

  • <NBT>で指定されたタグのうち、対象のNBTに同名のタグが存在しないものはそのまま追加する。
  • <NBT>で指定されたタグのうち、対象のNBTに既に同名のタグが存在する場合は値だけを上書きする。
    • 値の型が Compoundの場合は例外的に、Compound内に対しても同様に「統合」の操作を行う。 Listに関しては他の値の型と同様にリストの要素がすべて新しいものに置き換えられ、元の値は削除される。
  • <NBT>で指定されていないタグはそのまま維持される。

modify

大まかな構文
/data modify <対象のパス> <操作> <取得方法>

/data modify構文では、<対象のパス>の位置にあるNBTデータを以下の5種類の<操作>のうちいずれかを用いて編集できる。

  • prepend - 指定の Listの先頭に取得したNBTデータを追加する。
  • insert <番号> - 指定の List<番号>-1番目の場所に取得したNBTデータを挿入する。
  • append - 指定の Listの最後に取得したNBTデータを追加する。
  • merge - 指定の Compoundに対し取得したNBTデータを「統合」する。
  • set - 指定のNBTタグの値を取得した値に変更する。

操作に使用するNBTデータの<取得方法>には以下の3種類がある。

  • from (block <取得元の座標>|entity <取得元>|storage <取得元>) [<取得元のパス>]
    • ブロックエンティティ、エンティティ、NBTストレージからNBTを取得して操作に使用する。[<取得元のパス>]を指定すると、特定のパスのNBTデータだけを使用できる。
  • string (block <取得元の座標>|entity <取得元>|storage <取得元>) [<取得元のパス>] [<最初の文字数>] [<最後の文字数>]
    • ブロックエンティティ、エンティティ、NBTストレージの持つ特定の文字列タグまたは数値タグから[<最初の文字数>]~[<最後の文字数>]文字目の範囲を切り取って操作に使用する。
  • value <値>
    • 使用するNBTデータを直接入力する。

remove

構文
/data remove block (<取得元の座標>|entity <取得元>|storage <取得元>) [<取得元のパス>]) <NBTパス>

/data remove構文では、対象のNBTデータのうち<取得元のパス>指定したパスにあるタグを削除できる。

引数

<対象の座標>ブロック座標
NBTデータ操作の対象とするブロックエンティティの座標を指定する。
整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
<対象>エンティティentity <対象>構文の場合)
NBTデータ操作の対象とするエンティティを指定する。
プレイヤー名、ターゲットセレクターまたはUUIDで指定する。また、ターゲットセレクターは単一のものである必要がある。
<対象>名前空間付IDstorage <対象>構文の場合)
NBTデータ操作の対象とするNBTストレージを指定する。
名前空間IDで指定する。
<NBTパス>NBTパス
操作の対象とするNBTのパスを指定する。
NBTパスで指定する。
<倍率>倍精度浮動小数点数
コマンドの戻り値の倍率を指定する。
倍精度浮動小数点数を指定する。
<NBT>Compound型のNBT
統合に使用する Compoundタグを指定する。
SNBTフォーマットのcompound NBTで指定する。
<対象のパス>NBTパス
編集するNBTのパスを指定する。
NBTパスで指定する。
<番号>32ビット整数
リストにNBTデータを挿入する際の位置を指定する。<番号>-1番目の位置に挿入される。
32ビットの整数値で指定する。また、値は-2,147,483,648以上2,147,483,647以下で指定する。
<取得元の座標>ブロック座標
NBTの参照元とするブロックエンティティの座標を指定する。
整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
<取得元>エンティティentity <取得元>構文の場合)
NBTの参照元とするエンティティを指定する。
プレイヤー名、ターゲットセレクターまたはUUIDで指定する。また、ターゲットセレクターは単一のものである必要がある。
<取得元>名前空間付IDentity <取得元>構文の場合)
NBTの参照元とするNBTストレージを指定する。
名前空間IDで指定する。
<取得元のパス>NBTパス
modifyのNBT参照元を指定する。
NBTパスで指定する。
<最初の文字数>32ビット整数
文字列として切り取る範囲の開始地点を指定する。非負数の場合は先頭から最初の文字数 + 1文字目から、負数の場合は後ろから-最初の文字数文字目から切り取りを開始する。
32ビットの整数値で指定する。また、値は-2,147,483,648以上2,147,483,647以下で指定する。
<最後の文字数>32ビット整数
文字列として切り取る範囲の終了地点を指定する。非負数の場合は先頭から最初の文字数文字目まで、負数の場合は後ろから-最初の文字数 + 1文字目まで切り取りを行う。
32ビットの整数値で指定する。また、値は-2,147,483,648以上2,147,483,647以下で指定する。
<value>NBTタグ
NBTの編集に使用する値を指定する。編集対象のNBTと同じデータ型でなければならない。
SNBTフォーマットでのNBTタグで指定する。

結果

コマンドトリガーJava Edition
任意引数が正しく指定されていない 構文解析不能
<対象の座標>が読み込み範囲外・ワールド外 失敗
<対象の座標>にあるブロックがブロックエンティティでない
entity ...モードで、<対象>に対応するエンティティが一人もいないか、逆に複数検出された
/data get ...タグが複数取得された
/data get ... <path><NBTパス>にタグが存在しない場合
/data get ... <path> <scale>取得したタグが数値タグでない
/data merge ...
/data remove ...
/data modify ...
変更点がない
プレイヤーのデータを編集しようとした
/data remove ...
/data modify ... set ...
<NBTパス>が最上位の Compoundタグである
/data modify ... (from|string) block ...<取得元の座標>がワールド外または読み込み範囲外である
<取得元の座標>のブロックがブロックエンティティでない
/data modify ... (from|string) entity ...<取得元>に対応するエンティティが一人もいないか、逆に複数検出された
/data modify ... (from|string) ... <取得元><取得元のパス>にタグが存在しない場合
/data modify ... append ...
/data modify ... insert <番号> ...
/data modify ... prepend ...
対象のタグが Listでない場合
参照元のデータ型がリストに追加できる型でない場合
/data modify ... string ... <取得元のパス> <start> <end><取得元のパス>にあるタグが文字列でないか、文字列への変換が不能な場合
<最初の文字数><最後の文字数>が0~231-1の範囲外の場合
<最初の文字数><最後の文字数>より大きい場合
<end>が文字列長より大きい場合
/data modify ... insert <番号> ...<番号>が無効な場合
/data modify ... merge ...指定のパスに Compoundタグがない場合
参照元のデータが Compoundタグでない場合
任意成功時NBTデータを取得、併合、編集、削除する。

出力

コマンドエディション状況成功回数/execute store success .../execute store result ...
任意Java Edition失敗時000
/data get ...成功時111
/data get ... <NBTパス>数値タグが取得された場合11取得した数値の小数部分を切り捨てた値
 Listタグが取得された場合11リストの要素数
 Stringタグが取得された場合11文字列の文字数
 Compoundタグが取得された場合11そのCompoundタグの一階層下の要素数
/data get ... <NBTパス> <倍率>成功時11取得した値を<倍率>倍し、小数部分を切り捨てた値
/data merge ...成功時111
/data remove ...成功時111
/data modify ... append ...
/data modify ... insert <index> ...
/data modify ... prepend ...
成功時11リストに新しく追加された要素数
/data modify ... set ...成功時11編集に成功したタグの数
/data modify ... merge ...成功時11編集に成功したCompoundタグの数

使用例

  • 実行者の隠し満腹度を取得する:
    /data get entity @s foodSaturationLevel
  • 10ブロック以内に落ちているアイテムのうち最も近いものをプレイヤーが拾えないようにする:
    /data modify entity @e[type=item,distance=..10,limit=1,sort=nearest] PickupDelay set value -1
  • 落ちているアイテムのうちランダムで選んだ1つのY座標を取得する:
    /data get entity @e[type=item,limit=1,sort=random] Pos[1]
  • 最も近くにいるプレイヤーのホットバーの一番左のアイテムのIDを取得する:
    /data get entity @p Inventory[{Slot:0b}].id
  • 座標(0, 64, 0)から最も近いイルカの防御力を20に設定する:
    /data modify entity @e[x=0,y=64,z=0,type=dolphin,limit=1] Attributes[{Name:"generic.armor"}].Base set value 20
  • 座標(1, 64, 1)にあるチェストの最初のスロットをダイヤモンドブロックに変更する(元々そのスロットにあったアイテムのNBTデータも引き継ぐ):
    /data modify block 1 64 1 Items[0].id set value "minecraft:diamond_block"
  • 最も近いゾンビが、死亡時に左手のアイテムを80%の確率で、右手のアイテムの0%の確率でドロップように設定する:
    /data merge entity @e[type=zombie,limit=1,sort=nearest] {HandDropChances: [0f, 0.8f]}
  • 最も近いゾンビが、死亡時に左手のアイテムを80%の確率でドロップするように設定する。右手のアイテムの確率は変更しない:
    /data modify entity @e[type=zombie,limit=1,sort=nearest] HandDropChances[1] set value 0.8f

NBTストレージ

NBTストレージは、コマンドで読み込むためのNBTを保存しておくために使用できるシステムである。これを使用することで、NBT保存用の代理のブロックエンティティエンティティを立てることなくNBTを保存・読み込みできる。

NBTストレージはワールドごとに管理されており、一つのワールドに対して目的別に複数のストレージを立てることが可能である。それぞれのNBTストレージは名前空間付IDで区別されるため、目的にあったID、名前空間に設定し分けることができる。

NBTストレージには/data merge/data remove/execute storeで書き込むことができる。この際まだ存在しないIDを指定して実行すると、そのNBTストレージが作成される。

そしてNBTストレージに書き込んだNBTデータは/data get/data modifyマクロ関数実行時の/functionコマンド、JSONテキスト nbtから読み込み、使用することができる。

ワールド1つにつき、NBTストレージは2304個まで保存できる。

歴史

Java Edition
1.1317w45b/dataが追加された。
17w47aコマンド /blockdata/entitydata が削除され /data に併合された。
18w03aパスを指定した/data get (block|entity|storage)で、数字でない値も取得できるようになった。
1.1418w43a/data modify (block|entity|storage)が追加された。
1.1519w38aNBTストレージが対象・参照元に使用できるようになった。
1.19.423w03astringが参照方式として追加された。
1.20Pre-release 1string構文において、負の値を指定した場合に末尾から数えた場所の値を指定したものとして見做されるようになった。

脚注

Advertisement