第一百章 开启nbt时代来,开杯香槟酒庆祝一下,100章了

(此章节已于2022年8月4日重写)

首先,在正文开始前,我们先庆祝一下本书写到了100章。

好巧不巧,第一百章正好正式开讲nbt。

但估计nbt也要讲100章了.......

当然,开杯香槟酒庆祝一下那是必须的。

没香槟酒怎么办?拿雪碧也可以。

那么,正文开始!

——————————————

在第五十四章中,我们初步了解了nbt(named binary tag),搞懂了snbt的格式。在接下来的章节中,我们将会依次了解物品、实体和方块的nbt,并更加深入地研究nbt的数据类型,以及搞懂如何将nbt用于指令的方方面面。

在本卷的前面部分,我们会重点了解物品的nbt。虽然nbt仅仅只能在java版中使用,但我们也会接触到一些基岩版的类似内容(如物品的json组件),所以基岩版玩家也可以来看看。

本卷的后面部分将会开始接触实体的nbt,实体nbt的相关内容起码要到第十七卷才能结束。但其实你并不需要每章都看,因为作者都是根据minecraft wiki上列出的那些『通用标签』来选择讲哪些nbt的,对于一些冷门的通用标签你大可不必了解,等到真正需要时再看也不迟。zuqi.org 葡萄小说网

第十二卷我们会暂时休息一下,然后开始深入学习json文本。第十五卷我们还会详细了解f3调试界面(所以这跟指令有何关系)。也就是说,尽管接下来有很多章节,但其实nbt的内容的占比不到一半。

等等,什么是『通用标签』?

在minecraft中,难免会有一些类似的生物,比如僵尸和尸壳。但它们又是不同的实体。如果它们的nbt标签也不同的话,那么写指令的以及做开发的都很头疼。『通用标签』因此诞生。

『通用标签』,正如其名,是指多个不同种类的东西带有的相同名称和功能的标签。比如『实体通用标签』,就是指几乎每个实体都具有的标签。通用标签可以方便mojang官方和模组开发者开发新的东西,也可以方便cber们(cber,mand blocker,玩命令方块的玩家,也就是指令玩家)使用nbt。我们会在接下来的章节中,详细了解各种『通用标签』。

虽然通用标签有很多种,但常用的也不过以下几个:

1物品通用标签(最好把这个标签背下来)

2实体通用标签

3方块实体通用标签

4生物通用标签

只要你能搞懂这四个通用标签,那你的nbt基本上就过关了。至于什么『箭通用标签』、『火球通用标签』等等冷门的标签,除非你需要使用到它们,否则一般不需要学习它们的用法。这就是为什么你可以跳着看的原因。

在正式开始nbt的学习过程前,我们得详细了解minecraft java的一次重大更新:

扁平化

我们都知道,版本是『水域更新』,加入了珊瑚、溺尸等等新奇的东西。但也是一个分水岭,在此次更新中,miencraft java的基础源代码被大量重写,导致许多模组被迫停留在1.12.2版本,甚至弃坑。但这次重写也促进了新时代模组的产生,涌现出了基于原版的数据包、fabric、rift等新时代的模组,使得minecraft进入了一个全新的时代。

在指令方面,的更新内容也不容忽视。扁平化对许多指令以及指令的相关内容作出了很多重大改变,比如先前我们遇到的execute指令,就是一个鲜明的例子。

在扁平化中,首当其冲的就是数据值的消失。由于数据值的消失,很多id都被拆分了。比如『灰色床』,它在1.12.2是被统一到『床』(bed)里,作为数据值为7的床。而在扁平化后,『床』被拆分,『灰色床』就有了自己的id:gray_bed。当然,还有少数id被合并。比如的『水』(water)和『流动的水』(flowing_water),合并之后(1.13)统一成了:水(water)。

也有些并没有被拆分或者是合并,而是被『重命名』了,比如『甘蔗』在的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

1.13——experience_bottle

末影之眼

1.12.2——eye_of_ender_signal

1.13——eye_of_ender

末影水晶

1.12.2——ender_crystal

1.13——end_crystal

烟花火箭

1.12.2——fireworks_rocket

1.13——firework_rocket

命令方块矿车

1.12.2——mandblock_minecart

1.13——mand_block_minecart

雪傀儡

1.12.2——snowman

1.13——snow_golem

铁傀儡

1.12.2——viger_golem

1.13——iron_golem

唤魔者尖牙

1.12.2——evocation_fangs

1.13——evoker_fangs

唤魔者

1.12.2——evocation_iger

1.13——evoker

卫道士

1.12.2——vindication_iger

1.13——vindicator

幻术师

1.12.2——illusion_iger

1.13——illusioner

除了方块、实体、物品的命名空间id被改变,就连生物群系(这是几乎都被重命名了)、粒子、声音、画、名字(这个并不是指id,而是它们显示出来的名字)很多也被改变,具体情况可以自己上minecraft wiki查阅。其中,画、粒子的id也有了命名空间(minecraft:)。而方块状态这个我们还不怎么了解的东西也做了大量的改变。

记分板准则也有了命名空间,比如『击杀生物』这个准则:

1.12——<实体id>

1.13——:namespace.<实体id>

并且在1.13更新后,这个准则和另外一个准则(被实体击杀)所选择的实体其范围也不止能用刷怪蛋生成的实体,而是所有实体都可以用。

nbt也有很大的改变,比如『物品通用标签』中的damage标签,在1.12.2中的作用是存储物品的数据值,而到了1.13就被调到了tag标签下,成为了『物品的损坏值』(具体见第一百零三章)。

命令的改变,大部分就是类似于\/give的改变——数据值、方块状态和nbt与命名空间id参数的合并。受到这种影响的指令有:

\/clear

\/clone

\/fill

\/give

\/receitem

\/setblock

还有一些其他的小改变,本书就不列出了,想看的话就到minecraft wiki上自己去查『扁平化』。

夕阳的光辉消失在远方的地平线上,银白色的方月自东方缓缓升起。一位钻套玩家疾跑在桦木林中,他手上的火把如同暗淡的星光点亮了前进的道路。朝前望去,在无数灰白方柱的掩映下,一座由橡木制成的房子缓缓出现,房子上的火把似乎有着无穷的魔力,吸引着这名玩家不断靠近。

咔嚓一声,房子的橡木门被打开。房子内也有一位戴着钻套的玩家。听到房门打开的声音,他的目光从工作台上移开,看向了那位从遥远的主城跑过来的玩家——张三。

那位叫做张三的玩家率先发了一条消息:『嘿李四,你知道吗,我搞到了腐竹箱子里的一把级锋利的下界合金剑!我们要发财了!』

『???』

『你怎么偷的?那里可是有出生点保护的啊!』

『额这个其实并不是我偷的,是一个管理员偷的。告诉你,这把剑可是我花了100多大洋弄到的』

『那还等什么啊?赶紧趁服务器没其他人去刷啊!』

『你确定这把剑附魔的是级的锋利?』一位叫做王五的玩家插嘴到。

『千真万确』张三把那把剑丢了出来。

『?』

『老子昨天听别人说这附魔等级最高也才啊?这腐竹是开挂了吗?!』

『好像腐竹开挂挺正常的啊』李四打趣到。

『等等』张三不知为何突然紧张了起来,捡起了那把剑。

『刚刚腐竹在群里说要上线!赶紧撤!』

→张三退出了游戏

→王五退出了游戏

→李四推出了游戏

......

→[超级管理]一只可爱的猫加入了游戏

→[服主]某某不是女装大佬加入了游戏

上一章目录+书架下一章