首頁(yè) 游戲

Minecraft指令手冊(cè)

第一百三十八章 真正深入了解NBT-4

Minecraft指令手冊(cè) 你好MC 1400 2020-11-22 21:01:02

  在前三章,我已經(jīng)講完了字符和數(shù)值類型的數(shù)據(jù)類型,現(xiàn)在我們?cè)賮砜纯聪卤恚?p>  [字符]

  字符串(String)

  [數(shù)值]

  {整形}

  字節(jié)型(Byte:B)

  短整型(Short:S)

  整型(Int:I)

  長(zhǎng)整型(Long:L)

  {浮點(diǎn)型(小數(shù))}

  單精度浮點(diǎn)型(Float:F)

  雙精度浮點(diǎn)型(Double:D)

  [數(shù)據(jù)]

  復(fù)合標(biāo)簽(Compound)

  列表(List)

  [數(shù)組]

  字節(jié)型數(shù)組(Byte Array:[B])

  整型數(shù)組(Int Array:[I])

  長(zhǎng)整型數(shù)組(Long Array:[L])

  按照順序,接下來就應(yīng)該到了[數(shù)據(jù)]這個(gè)數(shù)據(jù)類型了。而里面的這兩個(gè):

  復(fù)合標(biāo)簽(Compound)

  列表(List)

  都是我們已經(jīng)非常熟悉的數(shù)據(jù)類型了,因?yàn)檫@兩個(gè)數(shù)據(jù)類型特別常見。但神奇的是,它們也經(jīng)常被忽略。

  為何?

  因?yàn)樗鼈冋f到底,就是兩種符號(hào):

  {}——復(fù)合標(biāo)簽(Compound)

  []——列表(List)

  數(shù)據(jù)可以套娃在它們里面,而多個(gè)數(shù)據(jù)需要用英文半角逗號(hào)分割。

  只不過,它們兩的差別,是不是只有符號(hào)和名字的差別呢?

  當(dāng)然不是。

  實(shí)際上,它們兩絕對(duì)不是你想的那么簡(jiǎn)單。

  首先,它們兩的作用準(zhǔn)確的來說是:

  復(fù)合標(biāo)簽(Compound):包含一段獨(dú)立的NBT標(biāo)簽。如{killname:“MNG“,killtime:6000}

  列表(List):存儲(chǔ)多個(gè)類型相同的數(shù)據(jù)。如{time:[2020,12,21]}。

  看起來似乎也沒什么不同的地方對(duì)吧?

  我們知道,一個(gè)NBT最外層就是由{}來包裹著的,而里面存儲(chǔ)著各個(gè)標(biāo)簽,每個(gè)標(biāo)簽用英文半角逗號(hào)分割。而復(fù)合標(biāo)簽也是這樣子的,所以,復(fù)合標(biāo)簽的作用才這樣說:包含一段獨(dú)立的NBT標(biāo)簽。

  如果你看不懂,那也沒關(guān)系,我們可以通過名字理解。“復(fù)合標(biāo)簽”這個(gè)名字是由“復(fù)合”和“標(biāo)簽”。

  “標(biāo)簽”這個(gè)詞的意思相信大家都知道。那么“復(fù)合”又是什么意思呢?

  答案很簡(jiǎn)單:指物體等因某種原因而結(jié)合起來

  理解了“復(fù)合”的意思,再來看看“復(fù)合標(biāo)簽”,我們很快就可以理解這個(gè)詞:

  指多個(gè)標(biāo)簽結(jié)合起來

  不得不說,漢語(yǔ)真是博大精深。那么接下來,我們?cè)賮砜纯戳斜怼?p>  上面已經(jīng)說了,列表的作用就是:存儲(chǔ)多個(gè)類型相同的數(shù)據(jù)。翻譯這個(gè)為人話就是:把多個(gè)同樣類型的東西統(tǒng)一存儲(chǔ)起來。

  這就說明了什么?這就說明了列表的“[]”包含的只能是指定類型的數(shù)據(jù),實(shí)際上還屬于值的范圍。而{}包含的就不是指定類型的數(shù)據(jù)了,而是標(biāo)簽!這就是兩種數(shù)據(jù)類型的不同之處。

  所以在列表中才不用寫數(shù)據(jù)類型,因?yàn)榇蠹叶家粯?。這就像是乘法分配律,把公因數(shù)都提取出來,進(jìn)行簡(jiǎn)化算式。

  現(xiàn)在搞懂這兩個(gè)的區(qū)別了吧?我相信你已經(jīng)搞懂了。

  如果你還不懂,看看上面的兩個(gè)例子。

  好了,相信各位都已經(jīng)準(zhǔn)備好了,那么接下來我們就進(jìn)入下一階段。

  我們知道,列表可以存儲(chǔ)多個(gè)類型相同的數(shù)據(jù)。那么當(dāng)數(shù)據(jù)是復(fù)合標(biāo)簽時(shí),該怎么辦?

  很簡(jiǎn)單,其實(shí)這種情況我們已經(jīng)遇見過很多次了,比如我們最了解的Enchantments(/?n?t??ntm?nts/)標(biāo)簽,我們都知道它的格式是這樣的:

  {Enchantments:[{id:<魔咒id:String字符串>,lvl:<級(jí)數(shù):Int整形>}]}

  可以發(fā)現(xiàn),這里就出現(xiàn)了[{}]這種組合。如果你細(xì)心觀察,你就會(huì)發(fā)現(xiàn):列表里每項(xiàng)復(fù)合標(biāo)簽里的標(biāo)簽名稱、格式都是完全一樣的。

  這說明了什么?這就說明了如果列表的項(xiàng)是復(fù)合標(biāo)簽,那么每個(gè)復(fù)合標(biāo)簽里的格式、標(biāo)簽名稱都是完全一樣的。

  這很簡(jiǎn)單對(duì)吧?

  實(shí)際上到此為止,關(guān)于復(fù)合標(biāo)簽和列表這兩項(xiàng)數(shù)據(jù)類型就已經(jīng)講完了。

  ........

  但此時(shí),仍然有一個(gè)未解之謎:

  我們知道,列表的項(xiàng)可以有很多。那么列表的項(xiàng)數(shù)到底有沒有上限呢?

  答案很簡(jiǎn)單:在沒有明確規(guī)定列表的格式時(shí),列表的項(xiàng)數(shù)理論上是無上限的。(明確規(guī)定列表格式的,比如在第一百三十二章講到的ArmorDropChances)

  只不過在實(shí)際操作過程中,列表還是有上限的:硬件。

  嗯.......這可真是對(duì)了那句話:硬件決定上限,軟件決定下限。

  OK那么這一章就到這里了,我們下一章再見。

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁(yè)
返回書頁(yè)
指南