Minecraft Wiki
Advertisement
Information icon
この項目はJava Edition限定の要素です。 
data
必要権限レベル

2

実行制限

なし

ブロックエンティティおよびエンティティNBTデータの取得(get)、併合(merge)、編集(modify)、削除(remove)を行う。

構文[]

/dataには4つの命令文(getmergemodifyremove)があり、それぞれの命令で対象/参照元にblock <targetPos>entity <target>storage <target>を選択できる。

/data ...
... get
... (block <targetPos>|entity <target>|storage <target>) [<path>] [<scale>]
<taegetPos>座標のブロック、<target>で指定したエンティティ、<target>で指定したストレージのNBTデータ全体もしくは一部を取得する。<scale>が指定されている場合その値でスケーリング(乗算)される.
... merge
... (block <targetPos>|entity <target>|storage <target>) <nbt>
<taegetPos>座標のブロック、<target>で指定したエンティティ、<target>で指定したストレージのNBTデータを<nbt>で指定したデータで併合(merge)する。
... modify (block <targetPos>|entity <target>|storage <target>) <targetPath> ...
... append from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... append string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... append value <value>
参照元のデータを対象のリストの末尾に追加する。
... insert <index> from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... insert <index> string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... insert <index> value <value>
参照元のデータを対象のリストの<index>の位置に挿入する、リストにある挿入位置以上の<index>は末尾方向にずれる。
... merge from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... merge string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... merge value <value>
参照元のデータで対象のリストを併合する。
... prepend from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... prepend string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... prepend value <value>
参照元のデータを対象のリストの先頭に追加する。リストのデータは末尾方向にずれる。
... set from (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>]
... set string (block <sourcePos>|entity <source>|storage <source>) [<sourcePath>] [<start>] [<end>]
... set value <value>
指定した<targetPath>のデータを参照元のデータに設定する。
... remove
... (block <targetPos>|entity <target>|storage <target>) <path>
<taegetPos>座標のブロック、<target>で指定したエンティティ、<target>で指定したストレージの<path>にあるデータを削除する。プレイヤーのNBTデータは削除できない。

様々な形式での表記

引数[]

<targetPos>ブロック座標
NBTデータ操作の対象とするブロックエンティティの座標。
整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
<target>エンティティ (in entity <target> mode)
NBTデータ操作の対象とするエンティティの指定。
プレイヤー名、ターゲットセレクターまたはUUIDで指定する。また、ターゲットセレクターは単一のものである必要がある。
<target>resource_location (in storage <target> mode)
NBTデータ操作の対象とするストレージの指定。
名前空間IDで指定する。
<path>NBTパス
取り出す、もしくは削除するNBT指定する。
NBTパスで指定する。
<scale>倍精度浮動小数点数
コマンドの返り値をスケーリングする値。
倍精度浮動小数点数を指定する。
<nbt>Compound型のNBT
併合の参照元にするcompound tagを指定する。
SNBTフォーマットのcompound NBTで指定する。
<targetPath>NBTパス
編集するNBTを指定する。
NBTパスで指定する。
<index>32ビット整数
リスト内の添字を指定する。
32ビットの整数値で指定する。また、値は-2,147,483,648以上2,147,483,647以下で指定する。
<sourcePos>ブロック座標
NBTを参照するブロックエンティティの座標を指定する。
整数またはチルダ・キャレット表記法で表記された<x>、<y>、<z>でブロック座標を指定する。
<source>エンティティ (in entity <source> mode)
modifyのNBT参照元にするエンティティを指定する。
プレイヤー名、ターゲットセレクターまたはUUIDで指定する。また、ターゲットセレクターは単一のものである必要がある。
<source>resource_location (in storage <source> mode)
modifyのNBT参照元にするストレージを指定する。
名前空間IDで指定する。
<sourcePath>NBTパス
modifyのNBT参照元を指定する。
NBTパスで指定する。
<start>32ビット整数
文字列に含める最初の文字の位置を前から何文字目かで指定する。負の数を指定した場合は、後ろから何文字目かを指定したものとしてみなされる。
32ビットの整数値で指定する。また、値は-2,147,483,648以上2,147,483,647以下で指定する。
<end>32ビット整数
文字列から除外する最初の文字の位置を前から何文字目かで指定する。負の数を指定した場合は、後ろから何文字目かを指定したものとしてみなされる。
32ビットの整数値で指定する。また、値は-2,147,483,648以上2,147,483,647以下で指定する。
<value>NBTタグ
対象NBTの編集に使用する値。同じデータ型でなければならない。
SNBTフォーマットでのNBTタグで指定する。

結果[]

コマンドトリガーJava Edition
任意引数の指定が正しくない場合 構文解析不能
<targetPos>がロードされた範囲でないもしくはワールドの外の場合 失敗
<targetPos>のブロックがブロックエンティティでない場合
<target>で1つ以上の(in entity <target> mode)に解決できない場合(名前のついたプレイヤーはオンラインでなければならない)
/data get ...複数のタグが取得された場合
/data get ... <path><path>が存在しない場合
/data get ... <path> <scale>取得したタグが数値でない場合
/data merge ...
/data remove ...
/data modify ...
変更点がない場合
プレイヤーのデータを編集しようとした場合
/data remove ...
/data modify ... set ...
<path>が複合タグのルートだった場合
/data modify ... (from|string) block ...<sourcePos>のブロックがブロックエンティティでない場合
<sourcePos>のブロックがブロックエンティティでない場合
/data modify ... (from|string) entity ...<sourceEntity>で1つ以上のエンティティに解決できない場合(名前のついたプレイヤーはオンラインでなければならない)
/data modify ... (from|string) ... <sourcePath><sourcePath>が存在しない場合
/data modify ... append ...
/data modify ... insert <index> ...
/data modify ... prepend ...
対象のタグがリストや配列でない場合
参照元のデータ型がリストに追加できる型でない場合
/data modify ... string ... <sourcePath> <start> <end><sourcePath>が文字列でないか、文字列への変換が不能な場合
<start><end>が0〜231-1の範囲外の場合
<start><end>より大きい場合
<end>が文字列長より大きい場合
/data modify ... insert <index> ...<index>が無効な場合
/data modify ... merge ...編集対象に指定の複合タグがない場合
参照元のデータが複合タグでない場合
任意成功時NBTデータを取得、併合、編集、削除する。

出力[]

コマンドエディション状況成功回数/execute store success .../execute store result ...
任意Java Edition失敗000
/data get ...成功111
/data get ... <path>数値が取得された場合11取得した数値を丸めこみした値[1]
リストか配列が取得された場合11リストか配列の要素数
文字列が取得された場合11文字列の文字数
複合タグが取得された場合11その複合タグの直接の子の数
/data get ... <path> <scale>成功11取得した値を<scale>倍後、丸めこみした値[2]
/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編集に成功した複合タグの数

使用例[]

  • 実行者の満腹度を取得する:
    /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)から最も近いイルカの防御力(attribute)を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

ストレージ[]

command storage format」も参照

NBTデータのコマンドストレージはブロックエンティティエンティティへの書き込みや読み込み負荷なしに、commandsで効率的にNBTデータにアクセスできる方法です。 それぞれのコマンドストレージは、汎用のキーとデータがセットになった形式で、意図しない競合を防ぐためにresource locationによって識別される。 /data get/data modify はストレージから読み込みが、/data merge/data modify/data remove/execute store はストレージに書き込むことができる。

コマンドストレージはJSON textを用いても同じ様にアクセスできる。

歴史[]

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

注釈[]

  1. double n = (double)value;
    int output = n < (int)n ? (int)n - 1 :(int)n;
  2. double n = (double)value * scale;
    int output = n < (int)n ? (int)n - 1 :(int)n;


Advertisement