Minecraft Wiki

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

了解更多

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

NBT路径(NBT path)是用来从NBT数据树中指定一系列特定元素的描述性标签。路径的基本格式为节点.….节点,其中每个节点声明了可以从先前标签中选择哪种类型的子元素。

节点[]

有6种可用的节点(node)。

标签集合(tags collection)仅从一个元素开始(例如根标签)并随路径中的节点一同改变。NBT路径会在最后一个标签集合生效。

名称 格式 描述 选择结果 示例 示例描述
根复合标签 {tag},其中tag是复合NBT内容,可以为空。 只有在开始标签匹配给定的复合标签(若有)则选择开始标签。
只能应用于路径中的第一个元素。
开始标签,或者匹配失败时无。 {Invisible:1b} 如果其子标签 Invisible的值为1则选择根标签。
{} 选择根标签。
命名标签 name,其中name可以是直接的或转义的字符串。 选择上个标签中有叫做name的子标签。 标签的集合;其中元素个数可能超过上个标签集合。可能为空。 VillagerData 选择VillagerData子标签。
"A cool name[]" 选择A cool name[]子标签。
命名复合标签 name{tag},其中name可以是直接的或转义的字符串,tag是复合NBT内容且可以为空。 选择匹配给定的且上个标签中命名为name复合标签(如有)的子复合标签。 复合标签集合;其中元素个数不超过上个标签集合。可能为空。 VillagerData{profession:"minecraft:nitwit"} 选择 VillagerData标签,前提是有子标签 profession且值为minecraft:nitwit
VillagerData{} 选择 VillagerData标签,前提是这是一个复合标签。
命名列表或数组标签的元素 name[index],其中name可以是直接的或转义的字符串,index是整数。 选择上个标签中命名为name的列表(或数组)中位于index处(如果index是负数,则是位于(列表长度+index)处)的元素。 标签集合;其中元素个数不超过上个标签集合。可能为空。 Pos[0] 选择Pos子列表(或数组)中的第一个子标签。
Inventory[-1] 选择Inventory子列表(或数组)中的最后一个子标签。
命名列表或数组标签的所有元素 name[] 选择上个标签中命名为name的子列表(或数组)中的所有元素。 标签集合,其中元素个数可能超过上个标签集合,可能为空。 ActiveEffects[] 选择最后一个标签的ActiveEffects子标签的所有元素。
命名列表标签的复合元素 name[{tag}],其中name可以是直接的或转义的字符串,tag是复合NBT内容且可以为空。 选择上个标签中匹配给定的(如有)和列表中命名为name的复合标签的复合元素。 复合标签集合;其中元素个数可能超过上个标签集合,可能为空。 Inventory[{Count:25b}] 选择拥有 Count子标签且其值为25 Inventory标签的元素。
Foo[{}] 选择 Foo标签的元素。
命名列表标签的子列表(或数组)的元素 name[index或者空][index或者空][index或者空]......[indextag],其中name可以是直接的或转义的字符串,index是整数,tag是复合NBT内容且可以为空。 选择上个标签中命名为name的列表中的子元素的子元素。 标签集合;其中元素个数可能超过上个标签集合,可能为空。 foo[][{}] 选择 foo标签中子列表的元素。
foo.bar[0][0].baz 选择 foo标签中的bar列表的第一个元素的第一个元素的baz标签。

路径中的.(点)字符将节点分隔开来。节点可以是混合的或匹配的,但带有对象的根节点(如有)必须是路径中首先出现的。

名称转义[]

路径的合法的字符集(Valid character set)似乎是所有的非空字符,只要所有的未闭合的方括号和花括号([{)被正确闭合,并位于每一项的结尾即可(即其后只有一个句点或路径的结尾—. )。也就是说,定义一个NBT标签的合理的字符集包括大小写字母、数字、下划线、点、方括号和花括号(用正则表达式表示就是[][}{a-zA-Z0-9.]*)。

如果键的名称需要转义,可以使用引号括起来,比如"Lorem ipsum"

示例[]

混合路径[]

  • {}——指定根标签
  • {foo:4.0f}——指定根标签,如果其foo子标签的值为4.0f
  • foo——指定根标签下命名为foo的标签。
  • foo.barfoo{}.bar——指定foo的命名为bar的子标签。
  • foo.bar[0]——指定列表(或数组)bar的第一个元素。
  • foo.bar[-1]——指定列表(或数组)bar的最后一个元素。
  • foo.bar[0]."A [crazy name]!"——指定第一个元素下命名为"A [crazy name]!"的子标签。
  • foo.bar[0]."A [crazy name]!".baz——指定上述子标签中命名为baz的子标签。
  • foo.bar[]——指定列表(或数组)bar的所有元素。
  • foo.bar[].baz——指定(或数组)列表bar的所有元素中命名为baz的子标签。
  • foo.bar[{baz:5b}]——指定列表bar中所有拥有baz子标签且其值为5b的元素。
  • foo{bar:"baz"}——指定所有foo标签,如果其子标签bar的值为"baz"
  • foo{bar:"baz"}.bar——指定foo标签中的bar标签,如果其值为baz。

示例1[]

/data get entity @p foo.bar[0]."A [crazy name]!".baz

这些名称是随意取的,仅用于演示。

  • foo——指定根标签下命名为foo的子标签。
  • foo.bar——指定foo的命名为bar的子标签。
  • foo.bar[0]——指定上述列表bar中的第一个元素。
  • foo.bar[0]."A [crazy name]!"——指定上述第一个元素中的命名为"A [crazy name]!"的子标签。
  • foo.bar[0]."A [crazy name]!".baz——指定上述子标签中命名为baz的子标签。

示例2[]

/data get block ~ ~ ~ Items[1].tag.pages[3]

某玩家写了一本书,将其放在了脚下的箱子里。Alex要一步步尝试拆解这条命令,最终运行上述命令。

语言

Advertisement