关灯 巨大 直达底部
亲,双击屏幕即可自动滚动
第一百五十九章 深入了解NBT树和NBT路径

在上一章,你应该已经理解了什么叫作NBT树,但理解不代表会运用。要真正搞懂NBT树的理念,我们得投入实践,学会阅读NBT树甚至表示出一个NBT树。

NBT数据树常常会表示成下面这样的格式:

<数据类型>[root或其他具体名称]:根、父级标签或其他具体的名称或描述

├<数据类型>[名称]:值或描述

......

└<数据类型>[名称]:值或描述

注:在上面的格式中,<>代表必定会出现,[]代表可能会出现(含义跟指令格式中的一样)。

许多网站和程序,比如Minecraft Wiki、常用的Java版NBT编辑器NBTExplorer,都采用了上述格式来表示NBT。

举个简单的例子,在Minecraft Wiki上,Java版书与笔的物品NBT是这么表示出来的:

? tag:父级标签

└? pages:书与笔的各个页面。

空└?:一个单页。每一页是一个字符串,不能超过个字符。

在上面的这个例子中,由于Minecraft Wiki使用一个图片标识来表示数据类型,所以这里用一些特殊符号来代替:

?——Compound复合标签

?——List列表

?——String字符串

仔细观察Minecraft Wiki给出的NBT树,结合我们前面所学的知识,你应该不难得出上面这个例子所表示的意思:

『对于物品书与笔,在其物品NBT标签中的tag复合标签下,有一个名为pages的列表型标签。这个pages列表是一个由多个字符串类型的值组成的列表,每个值都代表着书与笔中的一页,且每个值都不得拥有超过个字符。』

什么?你很难理解?或许我们需要睁大眼睛,逐行研究上面的例子。

第一行:? tag:父级标签

根据上面的格式『<数据类型>[root或其他具体名称]:根、父级标签或其他具体的名称或描述』,我们不难知道这在表示一个名为tag的复合标签。同时,它被解释为『父级标签』,说明Minecraft Wiki在这里给出的NBT树是在描述这个标签的孩子(也就是值)。

等等,为什么Minecraft Wiki不直接从根开始,而是从这个tag标签开始呢?