在之前的第一百章——“深入地了解一下NBT”中,其中的80%都有水的成分。所以今天,我们就真正深入地了解一下NBT。
——第一节:NBT的格式
在之前,我们已经讲了很多NBT。这些NBT内容都不一样,但它们都有一个共同点:
最外层都是使用“{}”包裹起来的。
没错,NBT和JSON的格式并不一样。JSON最外层使用“[]”和“{}”都可以,NBT却只能使用“{}”。
这是NBT的基本格式。
而NBT里面,是由N个标签组成的。每个标签之间必须用英文的半角逗号来区分。标签里包含标签名称和值,它两使用英文的半角冒号分隔:
{标签:值,标签:值,标签:值}
(注:阅读平台会自动把半角改成全角,所以这里的符号是全角符号,实际上在写的时候是全是半角)
而这个标签中的标签名称,它不是什么都能写的,而是有一个规则:
1.标签名称中只能出现字母a-z和A-Z、数字0~9、下划线“_”。
2.标签名称中不允许出现空格(空格都以下划线替代)、中文以及特殊符号
3.标签名称对大小写敏感。
当违反了上述规则的时候,就会报错(或者是被游戏理解为另外一种意思)。
而标签的值,大家应该都知道标签的值类型是同标签中的标签名称或由另一个标签决定的,所以不同的标签名称,填的值格式都是不同的。
但实际上,值并不是直接写上内容就行了。当标签名称决定值的类型为特定类型时,值实际上还会有一个可填可不填的格式,我们待会就会讲到。
——第二节:NBT数据类型
在之前,我们已经提到了很多NBT数据类型的名词:
单精度浮点型
双精度浮点型
整形(整数)
复合标签({})
列表([])
整型数组([I;1,2,3,4])
字符串
可以发现,NBT的数据类型和JSON的并不一样,而且类型还比JSON多。
其实并不是类型多,而是NBT的类型分得比较细,实际上你搞个分类,就和JSON差不多了。
好的,现在请你拿出你的笔记本,并坐好,做一下心理准备,我们的车马上就要开动了!
3
2
1
GO!
NBT一共有14种数据类型,分别是:
[字符]
字符串(String)
[数值]
{整形}
字节型(Byte:B)
短整型(Short:S)
整型(Int:I)
长整型(Long:L)
{浮点型(小数)}
单精度浮点型(Float:F)
双精度浮点型(Double:D)
[数据]
复合标签(Compound)
列表(List)
[数组]
字节型数组(Byte Array:[B])
整型数组(Int Array:[I])
长整型数组(Long Array:[L])
我们从字符串(String)这个最简单的类型入手。众所周知,字符串类型的值其外层需要使用英文的半角双引号(““)来包括。当引号里的值要写上引号时,就需要使用转义符号(\)放在引号前面转义。要在里面写上反斜杠(\)时也一样。比如:
{text:“我叫\“小明\“,这是反斜杠:\\“}
你知道吗?其实NBT的字符串并不一定需要使用双引号来包括,单引号也可以,只不过这是1.14版本才更新的:
{text:'我叫\'小明\',这是反斜杠:\\'}
如上面这个例子,要在值里面写上单引号,也是需要使用转义符号(\)的。
而这个字符串还远远不止那么简单。字符串的存储上线是个字节,可以含有中文、空格和特殊字符,编码形式为UTF-8。所以这就是为什么命令方块其字符上限就是,因为这就是字符串类型的值上线了。
只不过我们都知道,就连最基础的汉字也要占用2字节的空间,而UTF-8作为万国码,存储的字符就更多了。所以UTF-8的基础汉字一个就是3字节,而字符串的上限是字节,并不是个字符。所以更准确的来说,命令方块的储存上限是:
字节(UTF-8编码)
而不是个字符,这种说法是错误的。
总之,字符串的特性就是:
1.值大小上限为字节
2.使用UTF-8编码
3.文本可含有中文、空格和特殊字符
4.需用双引号(““)或单引号('')(1.14版本及以后)包裹。
5.如需要在文本里写上引号或反斜杠,需在其前面加上转义符号(\)
本小章还未完,请点击下一页继续阅读后面精彩内容!
喜欢Minecraft指令手册请大家收藏:(m.zjsw.org)Minecraft指令手册爪机书屋更新速度全网最快。