登陆注册
66052300000145

第145章 生物的共通NBT-1

在第一百一十二章到一百一十三章这两章里,我详细地介绍了实体的通用NBT,或者说是实体的基础NBT。在此基础上,Mojang又添加了一些新的NBT,这些新的NBT加上原来的实体NBT,就变成了:

生物的共通NBT

生物的共通NBT的内容相较于实体基础NBT增加了很多,以至于要用更多的篇幅去讲述它。当然这些并不一定要背下来,稍微了解个大概,需要用的时候过来看就行了。有时候用着用着说不定就记下来了呢!(当然,荒废一段时间还是会还回去的)

那么这些共通的NBT到底是什么呢?

我们知道,一个生物,最基础的就是血量,所以共通NBT自然而然就有血量:

Health(值:数值)

这个Health就是生物的血量值。但如果你玩过游戏,应该就会知道一个生物的血量至少要有两个变量:

1.当前的血量

2.血量最大值

而这个Health就是指当前的血量,比如现在有一只猪它有1滴血,它的NBT就是:

{Health:1}

但实际上,很多时候这个Health并不是个整数,而是个小数(准确的来说是“浮点数”)。比如你徒手去攻击一位全是钻石套的大佬,你别看它的心数没变,就认为你的攻击没起到作用,实际上是因为伤害过小被约没了而已,因为这个大佬在受伤后的的Health是:

{Health:19.927367235714243}

你给这位大佬造成了0.072632764285757滴血的伤害,相当于这位大佬血量的3.631638214288‰

嗯,确实够小的。

而有时候,Health也可以达到负数,比如你一击就秒了对方,那么对方在临终前的血量就是:

{Health:-623.5}

嗯,这伤害都够同时秒末影龙和一只JAVA版的凋零了。

而如果这个Health的值超过了所允许的最大值,比如你通过修改器把自己的血量修改成了2147483647会怎么样?

答案是你进入游戏后就会拥有2147483647滴血,只不过这并没有什么卵用,因为当你遭受到了伤害,就算是一点点,游戏也会:

本次攻击共造成了0.00635滴血的伤害,正在扣除中

我靠,这家伙的血量怎么超过了这个生物属性里的generic.maxHealth*数值!

(*关于generic.maxHealth早在第一百零五章时就讲到了,当时就已经讲到了生物的属性,建议忘记的同学赶紧回去复习一下)

不行,这家伙绝对开挂了!必须要干点什么。

也不知道这家伙在修改之前的生命值是多少。算了,直接改成允许的最大值吧!

——Health的值从2147483647变成了20

——Health的值从20变成了19.99365

恭喜你,你的血量一夜回到了解放前!

所以说以后改血量的时候最好先把最大值改了,不然改个毛线。

上面说过,要弄血量至少需要两个变量。但MC作为一个十多年还在焕发活力的老游戏,只有两个血量的变量,未免有些奇怪。所以MC不只两个血量变量,而是还有:

AbsorptionAmount(值:数值)

(哎作者,最大值还没讲呢!)

呃,其实早就讲过了,最大值其实就是一个属性,在第一百零五章时就讲过了。

AbsorptionAmount的作用是指通过伤害吸收效果所获得的额外生命值,就是那个吃了金苹果生命值多了的那个黄色小心心。

为什么Mojang要单独添加这个属性呢?

因为Minecraft还有一个和伤害吸收作用很相似的效果:生命提升

但这只是表面相似,实际上生命提升是直接提升generic.maxHealth生命最大值,所以显示出来的是红心,而且掉了还可以回。伤害吸收就不一样了,那黄色生命是一次性的,生命最大值还是最大值,提升的实际上并不是生命,而是添加了类似于盾牌的效果,只不过抵挡的生命值是可以直观显示的。

所以,AbsorptionAmount这个属性的作用是指能抵消的伤害量,并不是指提升的血量。

比如:

{Health:20,AbsorptionAmount:4}

这样子显示成心的话将会是10颗红心+2颗黄心。

.......一个并不华丽的分割线......

“......看,红队那名玩家刚刚挖了蓝队的床,蓝队的那些成员都围在那红队的旁边。可以看到有一名胆小的蓝队跑了,虽然这看起来有些背叛其他人,但接下来那名红队玩家以一挡五,使用了单身起码15年的手速迅速地先干掉两名离他最近的蓝队,将其打下虚空。剩下那3名蓝队竟然没有溃逃,而是团结在了一起,重新像那红队发起进攻。红队那名玩家看动作应该是打算先虚张声势一下,趁蓝队恍惚间逃走,但没想到蓝队反应速度之快,将其打个措手不及,死亡......”

相信你一定玩过起床战争,就算没玩过也起码干过PVP或PVE。在攻击敌方时,敌方受到攻击都会发红,这点在羊身上特别明显,一白一红的强烈反差述说着那羊的痛苦,以及引出了一个新的问题:

这个发红的时间是否有跟生物本身的NBT有关?

确实有关。

在生物的共通NBT里,有这么一个标签:

HurtTime

这个英文简直是太简单了,按照现在的神童标准出生不到一分钟就可以翻译了:

疼痛时间

这个疼痛时间其也是一个数值,存储着生物被击中后发红了多长时间,单位是刻。生物不红之后值返回0,即代表着:生物最近未被击中。如:

{Health:4.65,AbsorptionAmount:0,HurtTime:16}

说明这个生物发红已经持续16刻了。

这个标签是控制生物的发红时间的,我们不需要太深入研究。

而另外一个标签:

HurtByTimestamp(值:数值)

和HurtTime也与伤害有关,只不过这个标签记录的是“距离该生物上次受到伤害的时间”,单位也是刻,比如:

{Health:6,HurtByTimestamp:853,HurtTime:0}

就说明该生物距离上次受到伤害已经过去853刻的时间了。

真的是这么理解的吗?

实际上还有另外一种理解方式:

就说明该生物距离生成或出生已经过去853刻的时间了。

没错,如果该生物这生还没受到伤害,那么这个值将会记录它已经出生或生成多久了。

而当该生物死亡了呢?

如果这个生物不是玩家的话,那就没了。

但如果是玩家,实际上生物的共通NBT里有这么一个标签:

DeathTime(值:数值)

这对于生物本身没什么用,但它在玩家的NBT里就有用了——它记录者玩家距离上次死亡多久了,主要是用于控制死亡动画,单位当然也是刻。

这个标签我们当然不需要深究,但我们却可以思考一个问题:

为什么生物的NBT里有这个玩家才用得到的标签呢?

答案很不简单,作者猜是这样的:

上古时期(JAVA-Classic),贫瘠的Minecraft迎来了第一个生命——人类。这个神奇的生物不会饥饿,不会口渴,更不会死亡。它们会在世界里乱跑,乱跳。正是因为它们的存在,Minecraft才出现了树、史蒂夫、羊、牛、鸡等物种,给这片本来贫瘠的大地带来勃勃生机。

(哎作者,Minecraft的第一个生命不是草吗?)

所以玩家是由生物进化而来的,自然而然玩家就遗传了生物的DNA(NBT)。

嗯,这样子就解释得通了。

OK生物的共通NBT就先讲到这,我们下章再见!

同类推荐
  • 第二世之沸腾三国

    第二世之沸腾三国

    因山贼袭村结识传奇三兄弟……击杀仙级妖魔成为玩家第一……生吃僵尸赢得变态称号……效仿桃源义结颜良文丑……掩护曹操结识亦敌亦友……行刺董卓成为天下英雄……贪污七宝刀、偷盗七星剑、狂劈木偶将军取得战兵巨阙……挽救孤女貂婵于洛阳火坑、力战猛将华雄于大河侧翼、捍斗狂人张郃于邺城郊外、结识百级赵云于龙虎之颠没有太过深奥的道理,不讨论过于沉重的话题,全书轻松幽默,只希望能带给您一点点乐趣。一群:1361596,二群:27677292(新群)谢谢小孩
  • 千玄无双

    千玄无双

    网游千玄变内测时被称为最接近‘鬼’的沐城,因其阴沉的个性在内测之后销声匿迹。后因千玄变第一届全球范围比赛,带着他未完成的武器——寂灭苍穹与天罪回归千玄变,重返巅峰之鬼。失去的,我不一定拿得回来,但谁也别想让我再度失去。
  • 虫虫大将军

    虫虫大将军

    .......刚考上公务员的孙剑剑没有想到,自己一觉醒来就穿越到了星际争霸的世界,变成了一条蛲虫,噢,不对,是脑虫。"苍天啊,大地呀!怎么我就这么倒霉啊!"他哭泣,他咒骂,他装死,可这都已经无法改变现实,他真的已经变成了一条虫子。游戏异世界迎来了一名新成员,他会改变虫族、人类和神族的命运吗?敬请收看新人新书新赛季《虫虫大将军》,有点诙谐,有些搞笑,喜欢请投票!谢谢!
  • 英雄联盟之一丝不挂

    英雄联盟之一丝不挂

    一套神奇的LOL英雄附身卡片!一个艾欧尼亚战火纷争的梦境!他,一个平凡的学生狗,一个苦恋无果的穷屌丝,却上演了一场宏大的丝血不挂还反杀的竞技游戏……命运,由你自己掌控!
  • 这个世界很超凡

    这个世界很超凡

    我有一个很无敌的游戏系统。而我应对超凡世界的战略是:打钱,发育,升级,猥琐,不浪,演。嗯。没错。猥琐才是王道。
热门推荐
  • 快穿女王之反派是好人

    快穿女王之反派是好人

    沐烟是一个……‘司机’。然后遇到系统被‘强迫签约’了。令系统想不到的是……沐烟的人品值负到爆炸……童话故事里的恶毒女巫是她。 现代社会里人人皆知的高智商变态连续杀人凶手是她。 沾染上无数个怨念气息的恐怖死神也是她。 【宿主,我们要让别人知道我们是好人。】“为什么要当好人呢,当坏人多好。 不喜欢……都毁了。”
  • 凯源玺之那片属于我们的花海

    凯源玺之那片属于我们的花海

    内容纯属虚构,写的不好,请不要喷我!可能没多大的笔墨写千千,但是我是爱千千的,他是我的光!
  • 美食攻略

    美食攻略

    什么也无法阻挡,一个吃货对美食的向往,正经的技能一个不擅长,歪门邪道的本领各种风光,一身厨艺引得众行会哄抢,一颗玲珑心,赢得腹黑好儿郎O(∩_∩)O~
  • 血无极

    血无极

    我欲为仙,大道无边,我欲为魔,天下有我
  • 刁钻神偷只偷心

    刁钻神偷只偷心

    一朝穿越成了相府千金,从此富贵荣华取之不尽!然而还没高兴两天,神偷门门主便大驾光临,不偷财物,却偷了她……至此之后,神偷门永无宁日!本领没学两样,那些个偷奸耍滑,吃里扒外,无赖外加痞子的本事却无一不精通。而当她再度回到相府,神偷还能再变回相女吗?某师父偷笑,瘟神终于送走了!情节虚构,切勿模仿。
  • 天行

    天行

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

    无限记事

    玛丽苏的世界里只有一个女主角。但在不同人的眼中有着不同的世界。
  • 人生自是有情痴

    人生自是有情痴

    《人生自是有情痴:那些时光深处的情种》讲述历史上帝王与才子中著名的情种的爱情故事,作者在确凿史实的基础上,用动人的笔法演绎那些时光中不曾褪色的爱情悲歌。
  • 清净观世音普贤陀罗尼经

    清净观世音普贤陀罗尼经

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 欢尽顾余生

    欢尽顾余生

    六年前,江时欢从一个单纯无知的小女孩变成一个铁血无情的人,面对嘲讽,歧视,轻蔑她的人,她的处理结果至始至终就是两个方法:1.轻则不理2.重则上手!不要问为什么,只因为她是欢姐!长得好是好,耐不住成绩差啊!什么?全国IT大神?音乐界殿坛级长笛大师?第一电竞团队SOK原队长?娱乐圈最神秘最有才华的鬼马歌手?欢姐,我的小心脏不好,宁能捂好你的马甲吗?