第一百章 開啟NBT時(shí)代(來,開杯香檳酒慶祝一下,100章了)
?。ù苏鹿?jié)已于2022年8月4日重寫)
首先,在正文開始前,我們先慶祝一下本書寫到了100章。
好巧不巧,第一百章正好正式開講NBT。
但估計(jì)NBT也要講100章了.......
當(dāng)然,開杯香檳酒慶祝一下那是必須的。
沒香檳酒怎么辦?拿雪碧也可以。
那么,正文開始!
——————————————
在第五十四章中,我們初步了解了NBT(Named Binary Tag),搞懂了SNBT的格式。在接下來的章節(jié)中,我們將會(huì)依次了解物品、實(shí)體和方塊的NBT,并更加深入地研究NBT的數(shù)據(jù)類型,以及搞懂如何將NBT用于指令的方方面面。
在本卷的前面部分,我們會(huì)重點(diǎn)了解物品的NBT。雖然NBT僅僅只能在Java版中使用,但我們也會(huì)接觸到一些基巖版的類似內(nèi)容(如物品的JSON組件),所以基巖版玩家也可以來看看。
本卷的后面部分將會(huì)開始接觸實(shí)體的NBT,實(shí)體NBT的相關(guān)內(nèi)容起碼要到第十七卷才能結(jié)束。但其實(shí)你并不需要每章都看,因?yàn)樽髡叨际歉鶕?jù)Minecraft Wiki上列出的那些『通用標(biāo)簽』來選擇講哪些NBT的,對于一些冷門的通用標(biāo)簽?zāi)愦罂刹槐亓私猓鹊秸嬲枰獣r(shí)再看也不遲。
第十二卷我們會(huì)暫時(shí)休息一下,然后開始深入學(xué)習(xí)JSON文本。第十五卷我們還會(huì)詳細(xì)了解F3調(diào)試界面(所以這跟指令有何關(guān)系)。也就是說,盡管接下來有很多章節(jié),但其實(shí)NBT的內(nèi)容的占比不到一半。
等等,什么是『通用標(biāo)簽』?
在Minecraft中,難免會(huì)有一些類似的生物,比如僵尸和尸殼。但它們又是不同的實(shí)體。如果它們的NBT標(biāo)簽也不同的話,那么寫指令的以及做開發(fā)的都很頭疼。『通用標(biāo)簽』因此誕生。
『通用標(biāo)簽』,正如其名,是指多個(gè)不同種類的東西帶有的相同名稱和功能的標(biāo)簽。比如『實(shí)體通用標(biāo)簽』,就是指幾乎每個(gè)實(shí)體都具有的標(biāo)簽。通用標(biāo)簽可以方便Mojang官方和模組開發(fā)者開發(fā)新的東西,也可以方便CBer們(CBer,Command Blocker,玩命令方塊的玩家,也就是指令玩家)使用NBT。我們會(huì)在接下來的章節(jié)中,詳細(xì)了解各種『通用標(biāo)簽』。
雖然通用標(biāo)簽有很多種,但常用的也不過以下幾個(gè):
?、傥锲吠ㄓ脴?biāo)簽(最好把這個(gè)標(biāo)簽背下來)
②實(shí)體通用標(biāo)簽
?、鄯綁K實(shí)體通用標(biāo)簽
④生物通用標(biāo)簽
只要你能搞懂這四個(gè)通用標(biāo)簽,那你的NBT基本上就過關(guān)了。至于什么『箭通用標(biāo)簽』、『火球通用標(biāo)簽』等等冷門的標(biāo)簽,除非你需要使用到它們,否則一般不需要學(xué)習(xí)它們的用法。這就是為什么你可以跳著看的原因。
在正式開始NBT的學(xué)習(xí)過程前,我們得詳細(xì)了解Minecraft Java的一次重大更新:
JAVA1.13扁平化
我們都知道,Java1.13版本是『水域更新』,加入了珊瑚、溺尸等等新奇的東西。但Java1.13也是一個(gè)分水嶺,在此次更新中,Miencraft Java的基礎(chǔ)源代碼被大量重寫,導(dǎo)致許多模組被迫停留在1.12.2版本,甚至棄坑。但這次重寫也促進(jìn)了新時(shí)代模組的產(chǎn)生,涌現(xiàn)出了基于原版的數(shù)據(jù)包、Fabric、Rift等新時(shí)代的模組,使得Minecraft進(jìn)入了一個(gè)全新的時(shí)代。
在指令方面,Java1.13的更新內(nèi)容也不容忽視。Java1.13扁平化對許多指令以及指令的相關(guān)內(nèi)容作出了很多重大改變,比如先前我們遇到的execute指令,就是一個(gè)鮮明的例子。
在扁平化中,首當(dāng)其沖的就是數(shù)據(jù)值的消失。由于數(shù)據(jù)值的消失,很多id都被拆分了。比如『灰色床』,它在1.12.2是被統(tǒng)一到『床』(bed)里,作為數(shù)據(jù)值為7的床。而在扁平化后,『床』被拆分,『灰色床』就有了自己的id:gray_bed。當(dāng)然,還有少數(shù)id被合并。比如Java1.12.2的『水』(water)和『流動(dòng)的水』(flowing_water),合并之后(1.13)統(tǒng)一成了:水(water)。
也有些并沒有被拆分或者是合并,而是被『重命名』了,比如『甘蔗』在Java1.12.2的id是『reeds』,到了1.13就變成了『sugar_cane』;巖漿塊在1.12.2叫做『magma』,扁平化之后就變成了『magma_block』。
不只是這些方塊、物品的id被改變,實(shí)體的id也被改變了,只不過比較少,可以全列出來:
經(jīng)驗(yàn)球
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——commandblock_minecart
1.13——command_block_minecart
雪傀儡
1.12.2——snowman
1.13——snow_golem
鐵傀儡
1.12.2——villager_golem
1.13——iron_golem
喚魔者尖牙
1.12.2——evocation_fangs
1.13——evoker_fangs
喚魔者
1.12.2——evocation_illager
1.13——evoker
衛(wèi)道士
1.12.2——vindication_illager
1.13——vindicator
幻術(shù)師
1.12.2——illusion_illager
1.13——illusioner
除了方塊、實(shí)體、物品的命名空間ID被改變,就連生物群系(這是幾乎都被重命名了)、粒子、聲音、畫、名字(這個(gè)并不是指id,而是它們顯示出來的名字)很多也被改變,具體情況可以自己上Minecraft Wiki查閱。其中,畫、粒子的id也有了命名空間(minecraft:)。而方塊狀態(tài)這個(gè)我們還不怎么了解的東西也做了大量的改變。
記分板準(zhǔn)則也有了命名空間,比如『擊殺生物』這個(gè)準(zhǔn)則:
1.12——stat.killEntity.<實(shí)體ID>
1.13——minecraft.killed:namespace.<實(shí)體ID>
并且在1.13更新后,這個(gè)準(zhǔn)則和另外一個(gè)準(zhǔn)則(被實(shí)體擊殺)所選擇的實(shí)體其范圍也不止能用刷怪蛋生成的實(shí)體,而是所有實(shí)體都可以用。
NBT也有很大的改變,比如『物品通用標(biāo)簽』中的Damage標(biāo)簽,在1.12.2中的作用是存儲(chǔ)物品的數(shù)據(jù)值,而到了1.13就被調(diào)到了tag標(biāo)簽下,成為了『物品的損壞值』(具體見第一百零三章)。
命令的改變,大部分就是類似于/give的改變——數(shù)據(jù)值、方塊狀態(tài)和NBT與命名空間id參數(shù)的合并。受到這種影響的指令有:
/clear
/clone
/fill
/give
/replaceitem
/setblock
還有一些其他的小改變,本書就不列出了,想看的話就到Minecraft Wiki上自己去查『扁平化』。
夕陽的光輝消失在遠(yuǎn)方的地平線上,銀白色的方月自東方緩緩升起。一位鉆套玩家疾跑在樺木林中,他手上的火把如同暗淡的星光點(diǎn)亮了前進(jìn)的道路。朝前望去,在無數(shù)灰白方柱的掩映下,一座由橡木制成的房子緩緩出現(xiàn),房子上的火把似乎有著無窮的魔力,吸引著這名玩家不斷靠近。
咔嚓一聲,房子的橡木門被打開。房子內(nèi)也有一位戴著鉆套的玩家。聽到房門打開的聲音,他的目光從工作臺(tái)上移開,看向了那位從遙遠(yuǎn)的主城跑過來的玩家——張三。
那位叫做張三的玩家率先發(fā)了一條消息:『嘿李四,你知道嗎,我搞到了腐竹箱子里的一把2147483647級鋒利的下界合金劍!我們要發(fā)財(cái)了!』
『???』
『你怎么偷的?那里可是有出生點(diǎn)保護(hù)的??!』
『額這個(gè)其實(shí)并不是我偷的,是一個(gè)管理員偷的。告訴你,這把劍可是我花了100多大洋弄到的』
『那還等什么???趕緊趁服務(wù)器沒其他人去刷??!』
『你確定這把劍附魔的是2147483647級的鋒利?』一位叫做王五的玩家插嘴到。
『千真萬確』張三把那把劍丟了出來。
『?』
『老子昨天聽別人說這附魔等級最高也才32767???這腐竹是開掛了嗎?!』
『好像腐竹開掛挺正常的啊』李四打趣到。
『等等』張三不知為何突然緊張了起來,撿起了那把劍。
『剛剛腐竹在群里說要上線!趕緊撤!』
→張三退出了游戲
→王五退出了游戲
→李四推出了游戲
......
→[超級管理]一只可愛的貓加入了游戲
→[服主]某某不是女裝大佬加入了游戲