(此章节已于2022年8月4日重写)
首先,在正文开始前,我们先庆祝一下本书写到了100章。
好巧不巧,第一百章正好正式开讲NBT。
但估计NBT也要讲100章了.......
当然,开杯香槟酒庆祝一下那是必须的。
没香槟酒怎么办?拿雪碧也可以。
那么,正文开始!
——————————————
在第五十四章中,我们初步了解了NBT(Named Binary Tag),搞懂了SNBT的格式。在接下来的章节中,我们将会依次了解物品、实体和方块的NBT,并更加深入地研究NBT的数据类型,以及搞懂如何将NBT用于指令的方方面面。
在本卷的前面部分,我们会重点了解物品的NBT。虽然NBT仅仅只能在Java版中使用,但我们也会接触到一些基岩版的类似内容(如物品的JSON组件),所以基岩版玩家也可以来看看。
本卷的后面部分将会开始接触实体的NBT,实体NBT的相关内容起码要到第十七卷才能结束。但其实你并不需要每章都看,因为作者都是根据Minecraft Wiki上列出的那些『通用标签』来选择讲哪些NBT的,对于一些冷门的通用标签你大可不必了解,等到真正需要时再看也不迟。
第十二卷我们会暂时休息一下,然后开始深入学习JSON文本。第十五卷我们还会详细了解F3调试界面(所以这跟指令有何关系)。也就是说,尽管接下来有很多章节,但其实NBT的内容的占比不到一半。
等等,什么是『通用标签』?
在Minecraft中,难免会有一些类似的生物,比如僵尸和尸壳。但它们又是不同的实体。如果它们的NBT标签也不同的话,那么写指令的以及做开发的都很头疼。『通用标签』因此诞生。
『通用标签』,正如其名,是指多个不同种类的东西带有的相同名称和功能的标签。比如『实体通用标签』,就是指几乎每个实体都具有的标签。通用标签可以方便Mojang官方和模组开发者开发新的东西,也可以方便CBer们(CBer,Command Blocker,玩命令方块的玩家,也就是指令玩家)使用NBT。我们会在接下来的章节中,详细了解各种『通用标签』。
虽然通用标签有很多种,但常用的也不过以下几个:
①物品通用标签(最好把这个标签背下来)
②实体通用标签
③方块实体通用标签
④生物通用标签
只要你能搞懂这四个通用标签,那你的NBT基本上就过关了。至于什么『箭通用标签』、『火球通用标签』等等冷门的标签,除非你需要使用到它们,否则一般不需要学习它们的用法。这就是为什么你可以跳着看的原因。
在正式开始NBT的学习过程前,我们得详细了解Minecraft Java的一次重大更新:
JAVA1.13扁平化
我们都知道,Java1.13版本是『水域更新』,加入了珊瑚、溺尸等等新奇的东西。但Java1.13也是一个分水岭,在此次更新中,Miencraft Java的基础源代码被大量重写,导致许多模组被迫停留在1.12.2版本,甚至弃坑。但这次重写也促进了新时代模组的产生,涌现出了基于原版的数据包、Fabric、Rift等新时代的模组,使得Minecraft进入了一个全新的时代。
在指令方面,Java1.13的更新内容也不容忽视。Java1.13扁平化对许多指令以及指令的相关内容作出了很多重大改变,比如先前我们遇到的execute指令,就是一个鲜明的例子。
在扁平化中,首当其冲的就是数据值的消失。由于数据值的消失,很多id都被拆分了。比如『灰色床』,它在1.12.2是被统一到『床』(bed)里,作为数据值为7的床。而在扁平化后,『床』被拆分,『灰色床』就有了自己的id:gray_bed。当然,还有少数id被合并。比如Java1.12.2的『水』(water)和『流动的水』(flowing_water),合并之后(1.13)统一成了:水(water)。
也有些并没有被拆分或者是合并,而是被『重命名』了,比如『甘蔗』在Java1.12.2的id是『reeds』,到了1.13就变成了『sugar_cane』;岩浆块在1.12.2叫做『magma』,扁平化之后就变成了『magma_block』。
不只是这些方块、物品的id被改变,实体的id也被改变了,只不过比较少,可以全列出来:
经验球
1.12.2——xp_orb
这章没有结束,请点击下一页继续阅读!
1.13——experience_orb
附魔之瓶
1.12.2——xp_bottle