
在接下来的所有指令教学中,我会使用不同颜色的字强调不同种类的内容,方便大家阅读与查看。凡例:
深蓝色 标题
橙色 技术类文字
深绿色 专有名词
红色 强调
粉色 区分数字内容
紫色 范例
前排提示:在后面的部分我会将“命令”改为笔者的习惯用法“指令”,之前在编写内容时使用的“命令”是Word的替换功能转换而来的,敬请谅解!
在这一节里我会为大家讲解指令中大家可能共同的噩梦——NBT标签。不过与我预期相反的是,我不会花大篇幅讲解这部分内容,反而会将主体部分放到自主探索部分中。有句话叫“授之以鱼不如授之以渔”,大家学会了自主探索的方法,以后无论遇到什么NBT标签都不会棘手,这也是我将这一部分内容放在“命令基础知识”的部分而不是作为进阶内容来教学的原因。
NBT(二进制命名标签)是Minecraft存储数据的一种格式,NBT呈树形结构,通过路径读取数据。
有时候你会发现有些数据后面会有不同的字母,这是因为这些标签的类型不同。常见的标签类型如下表:

NBT标签类型与举例
在了解这些之后,下面的内容会让你亲自探索NBT标签的世界。探索之旅,马上开始。此方法为本人由wiki上对应指令介绍启发自行研究得到,接下来的讲解内容为B站甚至是全国首发,内容完全原创。
NBT从不是逐个讲解的内容,玩家都需要一点点自主地探索这个领域。而1.13新增的一条指令,为广大NBT苦手带来了一项巨大的福利。这条指令就是/data。这次我只讲解与本节有关的内容/data get,其他三个modify、merge和storage我会放到第二章指令教学部分讲解。
这条指令的目的是获取方块实体或实体的NBT标签。格式如下:
/data get [block(方块实体)|entity(实体)|storage(目标存储,这里可以无视,具体内容会放到第二章)] {方块坐标或实体(实体可以使用目标选择器)或存储路径(同样可以无视)} {NBT路径}
注意:以后的指令教学会使用以下格式:
1. [a|b|c]代表这个位置需要填写a,b,c中的一个。
2. {汉字内容}代表这个位置需要填写对应的内容。
3.(内容)代表这个位置的内容可以省略不写,如果紧跟在英文后面则是具体的解释说明。
我们来讲一讲具体的探索过程。
情节环境:你的面前有一个箱子,箱子的第一格有一把钻石剑,这把剑的附魔为锋利V击退II耐久III经验修补。你想要获得“耐久III”的NBT路径和沿途NBT对应的含义。
步骤1:踩在箱子上,将准星对准箱子,执行指令/data get block ~ ~ ~。这时候屏幕上出现了以下内容:

步骤1结果
这条指令的输出结果人性化地帮你区分了各内容的颜色。你可以一一寻找绿色字和橙色字中你想要找的内容,同时从首尾向中间对应方括号和大括号。
知识点:指令格式
从这个指令运行的结果我们可以得到指令输入的一般模式:
1. 如果母标签的值内包含子标签,则这些子标签外面需要一层大括号。(举例:tag)
2. 如果一个标签的值内包含多个并列的值,则这些值外面需要一层方括号(举例:Items)
3. 如果一个标签的值不是数字而是字符串,则这个字符串要使用双引号扩起来。如果字符串内容是与Minecraft有关的内部ID等信息,则字符串前面要加上“minecraft:”字头。
4. NBT的标签大小写不可以更改,数字尽可能不要省略标签类型。
5. 在1.14以后,你可以使用单引号替换某些方括号,避免括号层数过多的情况。
这个时候,你找到了绿色字“minecraft:unbreaking”(耐久),发现包含它的最外层标签是Items。
步骤2:输入指令/data get block ~ ~ ~ Items。这时候屏幕出现了以下内容:

步骤2结果
我们知道,一个小箱子有27个栏位。而你想探索的钻石剑在第一格栏位。在Minecraft中,所有列表型标签读取编号都是从0开始,也就是说这27个栏位的编号是0~26。因此你选取了编号为0的栏位。而且你发现Slot标签的值也是0,于是推测出Slot是存储栏位的标签。
步骤3:输入指令/data get block ~ ~ ~ Items[0](并列值的序号需要用中括号括起来,紧贴母标签)。这时候屏幕出现了以下内容:

步骤3结果
你发现最外面一层方括号去掉了。也就是说你选定了这些栏位中的一个。你发现附魔标签都在“tag”中。
步骤4:输入指令/data get block ~ ~ ~ Items[0].tag(不同层的标签中间用“.”连接)。这时候屏幕出现了以下内容:

步骤4结果
你发现这些附魔在标签“Enchantments”中,并且耐久在第三个大括号内,而且Enchantments标签也是列表型标签,所以耐久附魔的编号是2。
步骤5:输入指令/data get block ~ ~ ~ Items[0].tag.Enchantments[2]。这时候屏幕出现了以下内容:

步骤5结果
这个时候你发现附魔名称是存储在“id”标签,等级存储在“lvl”中。
步骤6:输入指令/data get block ~ ~ ~ Items[0].tag.Enchantments[2].lvl。这时候屏幕出现了以下内容:

步骤6结果
探索完成,而且你发现附魔等级的数字是短整型(s)。这个时候得到的“Items[0].tag.Enchantments[2].lvl”就是这把钻石剑耐久附魔的等级3的NBT路径。
不只是实体方块,任何实体都可以进行这样的探索。如果你无法选中这个实体,你可以在输入指令的时候将准星对准目标实体,在调取实体名称时按tab就可以获得这个实体的UUID(实体唯一码)。
通过这个过程你可以获得所有实体的所有NBT标签。如果你看不懂英文,随时查就好了。NBT的含义简洁明了,它的字面意思就是这个NBT的实际含义。如果实在是不明白,查找wiki也是个非常不错的选择,但自己探索得到的结论总更加令你喜悦。相信你通过不断地探索一定会积累许多知识。
本章小结
1. 指令、指令方块的功能和使用
2. 三种坐标
3. 目标选择器
4. 样式代码和原始JSON文本格式
5. NBT种类和探索
打实了基础,下一章关于各个指令的描述和介绍就会简单很多。
下一篇 第二章 指令介绍 2.1 简单指令(第一部分)