首页 男生 游戏竞技 Minecraft指令手册

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

Minecraft指令手册 你好MC 2153 2024-07-09 15:29

  在前三章,我已经讲完了字符和数值类型的数据类型,现在我们再来看看下表:

  [字符]

  字符串(String)

  [数值]

  {整形}

  字节型(Byte:B)

  短整型(Short:S)

  整型(Int:I)

  长整型(Long:L)

  {浮点型(小数)}

  单精度浮点型(Float:F)

  双精度浮点型(Double:D)

  [数据]

  复合标签(Combr /ound)

  列表(List)

  [数组]

  字节型数组(Byte Array:[B])

  整型数组(Int Array:[I])

  长整型数组(Long Array:[L])

  按照顺序,接下来就应该到了[数据]这个数据类型了。而里面的这两个:

  复合标签(Combr /ound)

  列表(List)

  都是我们已经非常熟悉的数据类型了,因为这两个数据类型特别常见。但神奇的是,它们也经常被忽略。

  为何?

  因为它们说到底,就是两种符号:

  {}——复合标签(Combr /ound)

  []——列表(List)

  数据可以套娃在它们里面,而多个数据需要用英文半角逗号分割。

  只不过,它们两的差别,是不是只有符号和名字的差别呢?

  当然不是。

  实际上,它们两绝对不是你想的那么简单。

  首先,它们两的作用准确的来说是:

  复合标签(Combr /ound):包含一段独立的NBT标签。如{killname:“MNG“,killtime:6000}

  列表(List):存储多个类型相同的数据。如{time:[2020,12,21]}。

  看起来似乎也没什么不同的地方对吧?

  我们知道,一个NBT最外层就是由{}来包裹着的,而里面存储着各个标签,每个标签用英文半角逗号分割。而复合标签也是这样子的,所以,复合标签的作用才这样说:包含一段独立的NBT标签。

  如果你看不懂,那也没关系,我们可以通过名字理解。“复合标签”这个名字是由“复合”和“标签”。

  “标签”这个词的意思相信大家都知道。那么“复合”又是什么意思呢?

  答案很简单:指物体等因某种原因而结合起来

  理解了“复合”的意思,再来看看“复合标签”,我们很快就可以理解这个词:

  指多个标签结合起来

  不得不说,汉语真是博大精深。那么接下来,我们再来看看列表。

  上面已经说了,列表的作用就是:存储多个类型相同的数据。翻译这个为人话就是:把多个同样类型的东西统一存储起来。

  这就说明了什么?这就说明了列表的“[]”包含的只能是指定类型的数据,实际上还属于值的范围。而{}包含的就不是指定类型的数据了,而是标签!这就是两种数据类型的不同之处。

  所以在列表中才不用写数据类型,因为大家都一样。这就像是乘法分配律,把公因数都提取出来,进行简化算式。

  现在搞懂这两个的区别了吧?我相信你已经搞懂了。

  如果你还不懂,看看上面的两个例子。

  好了,相信各位都已经准备好了,那么接下来我们就进入下一阶段。

  我们知道,列表可以存储多个类型相同的数据。那么当数据是复合标签时,该怎么办?

  很简单,其实这种情况我们已经遇见过很多次了,比如我们最了解的Enchantments(/ɛnˈtʃæntmənts/)标签,我们都知道它的格式是这样的:

  {Enchantments:[{id:<魔咒id:String字符串>,lvl:<级数:Int整形>}]}

  可以发现,这里就出现了[{}]这种组合。如果你细心观察,你就会发现:列表里每项复合标签里的标签名称、格式都是完全一样的。

  这说明了什么?这就说明了如果列表的项是复合标签,那么每个复合标签里的格式、标签名称都是完全一样的。

  这很简单对吧?

  实际上到此为止,关于复合标签和列表这两项数据类型就已经讲完了。

  ........

  但此时,仍然有一个未解之谜:

  我们知道,列表的项可以有很多。那么列表的项数到底有没有上限呢?

  答案很简单:在没有明确规定列表的格式时,列表的项数理论上是无上限的。(明确规定列表格式的,比如在第一百三十二章讲到的ArmorDrobr /Chances)

  只不过在实际操作过程中,列表还是有上限的:硬件。

  嗯.......这可真是对了那句话:硬件决定上限,软件决定下限。

  OK那么这一章就到这里了,我们下一章再见。

目录
设置
手机
书架
书页
评论