Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
Information icon.svg
此特性为Java版独有。

data
需要的权限等级

2

限制条件

/data命令允许执行者获取、合并、修改或是移除方块实体命令存储NBT数据

语法[]

/data有四个子命令(getmergemodifyremove),子命令使用的目标/来源是block <目标方块坐标>entity <目标>storage <目标>

data get block <目标方块坐标> [<路径>] [<倍率>]
data get entity <目标实体> [<路径>] [<倍率>]
data get storage <目标> [<路径>] [<倍率>]
data merge block <目标方块坐标> <nbt>
data merge entity <目标实体> <nbt>
data merge storage <目标> <nbt>
data modify block <目标方块坐标> <目标路径> (append|insert <索引>|merge|prepend|set) from block <来源方块坐标> <来源路径>
data modify block <目标方块坐标> <目标路径> (append|insert <索引>|merge|prepend|set) from entity <来源实体> <来源路径>
data modify block <目标方块坐标> <目标路径> (append|insert <索引>|merge|prepend|set) from storage <来源> <来源路径>
data modify block <目标方块坐标> <目标路径> (append|insert <索引>|merge|prepend|set) value <nbt>
data modify entity <目标实体> <目标路径> (append|insert <索引>|merge|prepend|set) from block <来源方块坐标> <来源路径>
data modify entity <目标实体> <目标路径> (append|insert <索引>|merge|prepend|set) from entity <来源实体> <来源路径>
data modify entity <目标实体> <目标路径> (append|insert <索引>|merge|prepend|set) value <>
data modify storage <目标储存> <目标路径> (append|insert <索引>|merge|prepend|set) from block <来源方块坐标> <来源路径>
data modify storage <目标储存> <目标路径> (append|insert <索引>|merge|prepend|set) from entity <来源> <来源路径>
data modify storage <目标储存> <目标路径> (append|insert <索引>|merge|prepend|set) from storage <来源> <来源路径>
data modify storage <目标储存> <目标路径> (append|insert <索引>|merge|prepend|set) value <>
data remove block <目标方块坐标> <目标路径>
data remove entity <目标实体> <路径>
data remove storage <目标储存> <目标路径>
以多种方式展示语法

参数[]

(block <目标方块坐标>|entity <目标实体>|storage <目标存储>):
  • <目标方块坐标>—指定需要改变数据标签的方块的<x> <y> <z>坐标。
  • <目标实体>—指定需要改变数据标签的实体的有效UUID或目标选择器
  • <target>—指定需要改变数据标签的存储的命名空间ID
get ... [<路径>] [<倍率>]:
  • <路径>—指定检索特定NBT的合法的路径名。
  • <倍率>—缩放获得的NBT具体数值。
merge ... <nbt>:
  • <nbt>—复合标签。最简单的合法输入是{}
modify ... <目标路径> (append|insert <索引>|merge|prepend|set):
  • <目标路径>—指定修改特定NBT的合法的路径名。
  • <索引>—指定列表中一个元素的索引,为一个有效整数。
... from (block <来源方块坐标>|entity <来源实体>|storage <来源储存>) <来源路径>:
  • <来源方块坐标>—指定需要使用其数据标签的方块的<x> <y> <z>坐标。
  • <来源实体>—指定需要使用其数据标签的实体的有效玩家名、UUID或目标选择器
  • <来源储存>—指定需要使用其数据标签的存储的命名空间ID
  • <来源路径>—指定使用特定NBT的合法的路径名。
... value <>:
  • <>—一般是修改目标NBT要使用的值。必须符合数据类型。
remove ... <路径>:
  • <路径>—指定移除特定NBT的合法的路径名,见§NBT路径

效果[]

命令触发条件Java版
任意参数不正确 无法解析
<目标方块坐标> 位于世界外或未被加载 执行失败
位于<目标方块坐标>的方块不是方块实体
<目标实体> 无法解析为单个实体(指定的玩家必须在线)
/data get ...<路径>指定了复数个标签
/data get ... <路径><路径> 不存在
/data get ... <路径> <倍率>指定的不是数字类标签
/data merge ...
/data remove ...
/data modify ...
未更改任何NBT
尝试更改玩家的NBT
/data remove ...
/data modify ... set ...
<路径> 指定了根标签
/data modify ... from block ...<来源方块坐标> 位于世界外或未被加载
位于 <来源方块坐标> 的方块不是方块实体
/data modify ... from entity ...<来源实体> 无法解析为单个实体(指定的玩家必须在线)
/data modify ... from ... <来源路径><来源路径> 不存在
/data modify ... append ...
/data modify ... insert <索引> ...
/data modify ... prepend ...
指定的标签不是数列或列表
源数据的类型不适用于列表
/data modify ... insert <索引> ...指定的索引无效
/data modify ... merge ...指定的NBT不是复合标签
来源NBT不是复合标签
任意执行成功时读取,合并,修改或删除指定NBT。
详见下:

若成功:

/data get
/data get ...
返回目标方块或实体的NBT数据,并且带有语法高亮。
若适用,成功时的返回值为1。
/data get ... <路径>
返回目标方块或实体的一部分NBT数据,不带有语法高亮。
返回值取决于获取的NBT元素的类型。
  • 获取一个数字,则返回值为数字。
  • 获取一个字符串,则返回该字符串的长度。
  • 获取一个列表会返回该列表中元素的个数。
  • 获取一个复合标签会返回该标签下一级子元素(不包括子元素的子元素)的数量。
/data get ... <路径> <倍率>
返回该标签的值并乘以<倍率>。
此时<路径>需要指向一个数字类型的标签,即该标签的类型可以为TAG_byte,TAG_short,TAG_int,TAG_long,TAG_float或TAG_double。
/data merge
将目标方块或实体的特定NBT数据与指定的<nbt>数据合并。
若适用,成功时的返回值为1。
/data modify
append
在指定列表的末尾增加一个元素。
<目标路径>必须指定一个TAG_list类型的元素,源数据应该适用于作为列表中的一个元素。
insert <索引>
将数据以第<索引>个元素插入指定列表,其后的元素的编号自动加一。
<目标路径>必须指定一个TAG_list类型的元素,源数据应该适用于作为列表中的一个元素。
merge
将源数据与指定的对象合并。
<目标路径>必须指定一个TAG_list类型的元素,源数据必须是TAG_compound类型。
prepend
在指定列表的开头增加一个元素。
<目标路径>必须指定一个TAG_list类型的元素,源数据应该适用于作为列表中的一个元素。
set
<目标路径>指定的标签设定为源数据。
若适用,成功时的返回值为1。
/data remove
移除指定方块或实体的<路径>指向的NBT数据。无法移除玩家的NBT数据。
若适用,成功时的返回值为1。

NBT路径[]

主条目:NBT路径格式

存储[]

参见:命令存储格式

使用NBT数据保存的命令存储是访问或储存NBT数据的有效方法,且其无需通过方块实体实体读取或写入NBT数据。

每个命令存储都保存着通用的键值对。命令存储使用命名空间ID进行区分。

/data get/data modify可以读取存储,而/data merge/data modify/data remove/execute store可以写入存储。

命令存储也可以通过原始JSON文本读取。

历史[]

Java版
1.1317w45b加入了/data
18w03a带有路径的/data get现在适用于非数字的值。
1.1418w43a加入了/data modify
1.1519w38a加入了命令存储
加入了storage <命名空间ID>作为来源或目标。
19w39a为NBT storage加入了聊天组件


Advertisement