登陆注册
66052300000149

第149章 真正深入了解NBT 上

在之前的第一百章——“深入地了解一下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的字符串并不一定需要使用双引号来包括,单引号也可以:

{text:'我叫\'小明\',这是反斜杠:\\'}

如上面这个例子,要在值里面写上单引号,也是需要使用转义符号(\)的。

而这个字符串还远远不止那么简单。字符串的存储上线是32767个字节,可以含有中文、空格和特殊字符,编码形式为UTF-8。所以这就是为什么命令方块其字符上限就是32767,因为这就是字符串类型的值上线了。

只不过我们都知道,就连最基础的汉字也要占用2字节的空间,而UTF-8作为万国码,存储的字符就更多了。所以UTF-8的基础汉字一个就是3字节,而字符串的上限是32767字节,并不是32767个字符。所以更准确的来说,命令方块的储存上限是:

32767字节(UTF-8编码)

而不是32767个字符,这种说法是错误的。

总之,字符串的特性就是:

1.值大小上限为32767字节

2.使用UTF-8编码

3.文本可含有中文、空格和特殊字符

4.需用双引号(““)或单引号('')包裹。

5.如需要在文本里写上引号或反斜杠,需在其前面加上转义符号(\)

然后是我们的数值:

{整形}

字节型(Byte:B)

短整型(Short:S)

整型(Int:I)

长整型(Long:L)

{浮点型(小数)}

单精度浮点型(Float:F)

双精度浮点型(Double:D)

可以发现,NBT的数值细分到了整数和浮点数(小数)。我们先从整数入手,整数类型的类型有:

字节型(Byte:B)

短整型(Short:S)

整型(Int:I)

长整型(Long:L)

实际上这些都是存储整数。它们的明显差别只不过是名字的不同和数值上下限的不同。

最小的字节型(Byte:B),其值是存储一个绝对值很小的整数,范围是:

-128~127「-(2?)~2?-1」

很简单对吧?

其实不简单。在第一节的最后,作者提到特定类型的值还有可填可不填的格式。这个字节型就是其中之一,其格式其实是这样的:

{Byte:数值b}

没错,字节型的值需要你在填完数值之后再加上一个特定的字母,通常是这个类型其英文缩写的小写形式,比如字节型的Byet缩写就是B,再小写一下就是b。

为什么要这样呢?其实这就是起到一个区分的作用,实际上你不在最后面写b也是可以的,游戏大部分情况会自动帮你加上去。当出现错误时可能才需要用到。短整型和长整型以及其他的一些类型也是数值后面有类型字母的,当然大部分情况它们不填也是可以的。

实际上Byte类型值不仅仅是个数值,它还有另一种值:

布尔值(false|true)

没错,Byte值也是布尔值,这个布尔值一般是字母形式的:

true|false

极少数情况下是1和0。

当为字母形式时,就不用填最后的b了,只需要类似于字符串那样加上引号就可以了(好像不加也可以)。

这就是Byte类型。按理来说一个普通的MC指令教程说到这就可以了,但这本书并不普通。所以接下来我们要研究一个问题:

为什么这个值类型叫做“字节型”呢?

其实答案很简单。刚才的数值范围大家也都知道,是:

-128~127,

也就是-(2?)~2?-1(二的七次幂的相反数到二的七次幂减一的差)

我们的一个字节,也就是:

8bit(8个二进制数字)

字节型数值的绝对值最大值是128,即2?,7位加上1位(因为第1位是1,次方是从第二位才开始算的,所以需要加上它),就8位了,刚好一字节。

这就是字节型这个名称的由来,是不是灰常简单?

总之,字节型(Byte:B)的特性就是:

1.值为整数或布尔值

2.当值为数值时,数值范围为-128~127

3.当值为数值时,需要在值最后加上类型字母b

4.占用空间只有1字节

比字节型范围稍大的短整型(Short:S),在上面就有提到其也是有类型字母的。而这个类型字母就是:s,具体这个放在哪里大家都应该知道的。

短整形的数值范围是:

-32768~32767「-(21?)~21?-1」(占用2字节)

是不是很熟悉?没错,1.13版本以下附魔的等级值就是短整形,所以当时的附魔最大等级才是32767。

所以我们可以根据这个附魔的标签来举个例子:

{ench:[{lvl:32767s,id:18s}]}——这就是短整形的最大值,也就是附魔等级的最大值

{ench:[{lvl:-32768s,id:18s}]}——这就是短整形的最小值,也是附魔等级的理论最小值(LV.-32767?)

(细心的朋友可能注意到了,1.13以前的id其值也是短整形)

到了1.13以后,情况就不一样了。Mojang把lvl值类型改成了int整形,附魔的上限也就升级到了2147483647。但实际上,在新版本,lvl其值是int和Short混用的。具体是这样的:

用附魔台附魔或战利品表生成的,是Short短整形,但是读取时是按照int整形的时候来读取的。其他的就直接是int了。

只不过这些东西,我们以后再说。现在回到正题。

Short的内容就是这么多。总的来说,Short短整形的特性就是:

1.值范围是-32768~32767(整数)

2.类型字母为s

OK NBT标签的内容就暂且到这里了,我们下一章再见。

同类推荐
  • 大航海时代2415

    大航海时代2415

    什么?唐家三少被人砍飞了脑袋?贼眉鼠眼居然是个热血的宅男游戏迷!这个牛逼的数据分析高手是谁?大烟缸?好熟悉的名字!这么多起点大神在跑龙套,你还等什么!快一起来看吧!
  • 第五人格之最皮庄园主

    第五人格之最皮庄园主

    威廉·莫里斯托一觉醒来赫然惊悚发现自己竟然穿越到了《第五人格》中,既然穿越了那就随遇而安吧!然鹅,在不断的作死中莫里斯托赫然惊悚发现欧利蒂丝庄园中暗流涌动,整个庄园逐渐不平静起来.每周六日更新哦
  • 崩坏三无垠战纪

    崩坏三无垠战纪

    英雄已逝,时代再临!人类,死士,崩坏兽的未来将走向何方?往事与未来交织,温情与热血碰撞,当天命与逆熵泯灭于历史的车轮下之时,群雄逐鹿与乱世的舞台已然开启,朵尔利拉骑士团将永远向辉煌的黎明前进!读者交流群598638837
  • 完美机甲剑神

    完美机甲剑神

    进入大宇宙时期的人类,在星空遭遇黑暗魔族,双方血战星空。少年张远重生十年前,借游戏《英雄》加入星空战场,一代机甲剑神横空出世。新书《最后一个炼金师》已发。
  • 联盟之超越巅峰

    联盟之超越巅峰

    天才是什么?是一手德莱文大杀四方,中韩双服砍上王者。是小试牛刀轻松斩获全国电子竞技大赛冠军。是出道一年便帮助队友打破联赛连胜记录,最终扛起世界冠军奖杯,为自己的成人礼准备了最好的礼物。是跨过那座高山之后仍旧不忘初心。因为未成年,所以进网吧都永远是战战兢兢。还是因为年龄,一度只能混迹在次级联赛。世界冠军的背后是在傲人的连胜记录下接连痛失两冠......
热门推荐
  • 美女的近身狂兵

    美女的近身狂兵

    萧枫,本是‘地狱’王者,因为一庄血案回归都市保护美女老板。这下好了,店里的美女员工,清纯校花,高冷女警,女神千金……一个个都围了过来,在接近萧枫的同时,还想要跟萧枫发展一下‘纯洁的友谊’——喂,你们别这样,我可是有原则有节操有下限的,请你们放尊重点好吗?面对敌人,萧枫可以用一双铁拳专治各种不服。可是面对这些莺莺燕燕,萧枫实在是无招架之力:“别怪自己不纯洁,只怪这些女人实在太流氓。”这下,美女老板不乐意了:“我才是大房好吧?你们统统都给我老实的排队去,不然不翻你们牌子。”猛龙过江,必定是腥风血雨。万花丛中过的
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 遨游诸界星辰

    遨游诸界星辰

    宇宙,星辰以及...未知面对无尽的黑暗,无穷的危机,少年夏宇会做出怎样的选择?当然,危机往往伴随着机遇,他能否抓住机遇取得成功?
  • 重生之我的黑白公子

    重生之我的黑白公子

    少年时期的她很强,强到他在她手底下从来过不了三招!她的恶作剧很多,对他各种百般捉弄,阻碍他的修炼!他对她所有的所作所为咬牙切齿,恨之入骨.....后来,在她重伤虚弱的时候,他亲手将她一剑刺死.......十二年后,她重生归来......他变着各种花样在帮她,宠她,保护着她.......他好想她再变回从前那个,自信得无法无天,极度自在与逍遥的她!如果她愿意,他还想任她欺负,任她轻狂,任她玩笑,任她爱......然而......
  • 我捡的猫是只大佬

    我捡的猫是只大佬

    方阳热爱的安逸生活被一只猫打破了。“什么?你要去影院看大片?你还要我努力为你打工挣钱讨老婆?你只是一只猫啊”。“等等,你还有这个能力,我考虑下吧”。于是男主带着这只猫,吃大餐、泡网吧,寻找他成为猫的真相。有热血、推理、悬疑、搞笑、哲理等元素,描写细致,喜欢细节的朋友来吧。这是一只猫和一个人的故事。【1群:1084980595】
  • 有你的余生才是圆满的

    有你的余生才是圆满的

    秦沫萱,一个叛逆的漂亮女孩,她只想着复仇,但是,在她复仇之路上,竟然蹦出几个渣渣!于是她一边虐渣,一边复仇。一场有预谋的绑架,她被卷入其中。令她没想到是,她竟然栽在慕燃的手中,慕燃见到秦沫萱后就觉的这女孩与众不同,激起了他浓浓的征服欲,他对全世界宣布到,我的宝贝萱萱很柔弱,谁都不能欺负她!在监狱中的几位大佬冷笑道“呵呵,你可真会开玩笑,柔弱?用在她身上合适么?难不成,这监狱是我们自己进来的?”慕燃在外蹭破了手指头,急忙回家,找他的宝贝吹吹,顺便休了一个月假。热搜头条:惊!世界首富慕燃被当红影后苏若怡碰了一下,回家跪了搓衣板,有图有真相!全网沸腾。全世界都知道,慕燃有多宠秦沫萱,青城最不能惹的人就是秦沫萱,青城名媛全都不服“她秦沫萱不就靠她那张脸么,我们男神被糟蹋了”,不服?瞬间几个神级马甲把众人给砸懵了。慕燃笑道“我老婆就是牛逼,但是这个家我说了算”众人“…………您能先从搓衣板上起来么?”这是一个高冷暗黑女王遇见腹黑偏执小狼狗变成可爱小萝莉的故事。(>ω<)甜宠文,不虐。
  • 凤临异世之天顾红颜

    凤临异世之天顾红颜

    (亲爱的宝宝们,谢谢你们的支持!但这本小说已经无法再继续,对此我深表遗憾,到现在才知道原来真的有人很喜欢它。不过子柒已经开了新书,欢迎大家支持哟!。。。)本该逃过义兄围杀的墨倾月,却由于计算失误牺牲在了自己设计的炸弹中。奈何天顾红颜,她重生在了同名同姓东安大陆墨家小天才墨倾月的身上,爹爹疼爱,祖父看重,没有惹人厌的庶母庶子。本应美美哒生活却因为娘亲的失踪而被打破。为求真相,进学院,学炼丹,学炼器,养神兽一步一步朝着真相逼近....谁知却遇到冷酷霸道又无赖的某人,某人轻抚着墨倾月如墨般的发丝,邪魅的声音悠悠传入她的耳中:‘一切有我,安心..
  • 如果受害者有超能力

    如果受害者有超能力

    君依光妥协了一生,身死后被选中成为任务者,从此穿梭在一个又一个世界中替他人实现愿望
  • 航海世纪

    航海世纪

    葡萄牙的首都里斯本位于欧洲大陆的最西端,坐落在多罗河入海口。随着《马可.波罗游记》在欧洲的广泛流传,不断激起了欧洲人对东方文明与财富的倾慕与贪婪,最终引发了新航路和新大陆的发现。十六世纪,一个航海事业蓬勃发展的年代,一个欧洲疯狂扩张的年代,在这座靠海而生的城市上,不知孕育了多少航海家。而我们的故事,就从这开始...``〖起点第一组编辑推荐作品〗``推荐几本书哦:《太古魔君》书号150270《跑跑卡丁车之车神时代》书号147791《骇人游戏》书号154271《魔王男仆邪行录》书号156378《附身玄德》书号152859
  • 重生西游送外卖

    重生西游送外卖

    张小天问:“猴子来份外卖”猴子:“。。。”唐僧:“紧箍咒走起。。。”猴子:“我给钱还不行吗”。张小天问:“猴子给我来一份签名”猴子:“。。。”唐僧:“紧箍咒走起。。。”猴子:“我签还不行吗”。张小天问:“猴子插播一段广告”猴子:“。。。”唐僧:““唵、嘛、呢、叭、咪、吽。。。”猴子:“天团外卖举世无双,才女佳人独一无二,你值得拥有。”