第一百三十四章 生物的共通nbt-4

上一章讲到生物的共通nbt的最后一个:

brain

而这个brain里面的memories就是存储记忆的地方。记忆有这么几个:

minecraft:meeting_point——这个村民聚会的位置

minecraft:home——这个村民床的位置

minecraft:job_site——这个村民工作的地方(就是这个村民的工作站坐标)

minecraftst_slept——这个村民已经睡觉多长时间了

minecraftst_woken——这个村民已经多久没睡觉了

minecraftst_worked_at_poi——这个村民多久没工作了

minecraft:angry_at——这个猪灵的目标

minecraft:admiring_item——这个猪灵端详物品的状态

minecraft:admiring_disabled——这个猪灵拿起物品端详这个技能的冷却状态

minecraft:hunted_recently——这个猪灵追猎这个技能的冷却状态

这些记忆都带有“minecraft:”,说明mod也可以对记忆进行增加。

其中,6项都是村民的,剩下4项都是猪灵的。

现在我们来看第一项记忆:

minecraft:meeting_point——这个村民聚会的位置

这个记忆是个复合标签({}),实际上所有记忆都是复合标签:

{brain:{memories:{minecraft:meeting_point:{}}}}

里面只有一个标签value(值:复合标签):

{......:{minecraft:meeting_point:{value:{}}}}}

(老套复合标签了啊)

value里有这么几个参数:

pos(值:列表)——聚会地点的x、y、z坐标

dimension(值:字符串)——聚会地点的纬度id

{......:{minecraft:meeting_point:{value:{pos:[x,y,z],dimension:“纬度id“}}}}}

现在我们举个例子,比如这个村民它的聚会场所是在主世界的x=45,y=77,z=1862的地方,那么它的这项记忆就将是:

{......:{minecraft:meeting_point:{value:{pos:[45,77,1862],dimension:“0“}}}}}

是不是很简单?对了,这里的纬度id也就是世界id,主世界的世界id是0,下界是-1,末地是1(好像讲过了哎)。

minecraft:home(这个村民床的位置)的格式和minecraft:meeting_point几乎一样,都是:

{......:{minecraft:home:{value:{pos:[床的x,床的y,床的z],dimension:“床的纬度“}}}}}

比如一个村民的床在下界的x=45,y=87,z=106的位置,那么:

{......:{minecraft:home:{value:{pos:[45,87,106],dimension:“-1“}}}}}

嗯。对哦,村民在下界睡觉床不会爆炸吗?

还真的不会爆炸(奇怪的知识增加了!)。

既然minecraft:home的格式和minecraft:meeting_point几乎一样,而minecraft:job_site(这个村民工作的地方)也是记录着坐标,所以minecraft:job_site实际上格式也和前面两个一样:

{......:{minecraft:home:{value:{pos:[工作方块x,工作方块y,工作方块z],dimension:“工作方块的纬度“}}}}}

举例子就不用举了,都懂。

然鹅接下来这三个就不一样了:

minecraftst_slept——这个村民已经睡觉多长时间了

minecraftst_woken——这个村民已经多久没睡觉了

minecraftst_worked_at_poi——这个村民多久没工作了

它们都是存储时间的,所以格式就和之前三个存储坐标的不一样。但既然它们都是存储时间的,所以它们的格式.......

没错!它们三的格式也是完全一样的。比如minecraftst_slept(这个村民已经睡觉多长时间了)的格式是这样的:

{......:{minecraftst_slept:{value:时间(单位:刻)}}}}

举个例子,假设这个村民已经睡了2个小时了(村民:?),那么这个村民的这个记忆的值就是:

{......:{minecraftst_slept:{value:}}}}

代表着这个村民已经睡了刻了,也就是120分钟,即两小时。

而我们已经知道了minecraftst_woken(这个村民已经多久没睡觉了)和minecraftst_worked_at_poi(这个村民多久没工作了)格式都和minecraftst_slept一样,所以:

minecraftst_woken格式——

{......:{minecraftst_woken:{value:这个村民没睡觉的时间(单位:刻)}}}}

minecraftst_worked_at_poi格式——

{......:{minecraftst_worked_at_poi:{value:这个村民没工作的时间(单位:刻)}}}}

至于举例子嘛......这么简单就不用举了,况且格式都一样。

接下来就是猪灵了。猪灵一共有4个记忆,即:

minecraft:angry_at——这个猪灵的目标

minecraft:admiring_item——这个猪灵端详物品的状态

minecraft:admiring_disabled——这个猪灵拿起物品端详这个技能的冷却状态

minecraft:hunted_recently——这个猪灵追猎这个技能的冷却状态

这四个标签的内容,都有一个“ttl”标签。这个标签的值是数值,实际作用就是:

这项记忆还有多久消失(单位:刻)

又或者可以说是:

猪灵的技能冷却剩下时间(单位:刻)

当然,具体的作用会根据不同的记忆会出现一些出入。

第一个minecraft:angry_at(这个猪灵的目标),它的值有两个:

value(值:uuid整形数组)

ttl(值:数值)

ttl刚才说过了。这个value存储着uuid,再联系一下“目标”,你想到了什么?

这个value填的就是猪灵的目标实体的uuid!

嗯,没错。现在我们举个例子,假设这个猪灵已经锁定了一个uuid为[i;-,,-,-]的凋零骷髅,而且距离这个猪灵忘记这个凋零骷髅的时间还有1分57秒,那么其这项记忆就是:

{......:{minecraft:angry_at:{value:[i;-,,-,-],ttl:2340}}}}

嗯,除了uuid有点长之外,其他都挺简单的。

然后是minecraft:admiring_item(这个猪灵端详物品的状态)。其值也有两个:

value(值:布尔值)

ttl(值:数值)

这里的value是布尔值,也就是true和false。如果是true,那么就代表着这个猪灵在端详物品。false则不是。

ttl在这里的作用是:端详还剩下的时间(单位:刻)

举个例子,比如一个猪灵它正在端详,且剩下的端详时间还有7秒,那么其这项记忆就是:

{......:{minecraft:angry_at:{value:“true“,ttl:140}}

接着是minecraft:admiring_disabled(这个猪灵拿起物品端详这个技能的冷却状态)。其值仍然有两个:

value(值:布尔值)

ttl(值:数值)

既然是冷却状态,我们就得了解一下“猪灵”其“端详”这个技能的冷却会因为什么而触发。一共有3种触发方式:

1.正在转化成僵尸猪灵

2.受到伤害

3.使用完了”端详”这个技能

当上面3个条件的任意一项达成时,“端详”技能将会进入冷却。同时,该记忆也将会改变。

value在这条记忆里的作用是:

当值为true,代表“端详”技能处于冷却状态。当值为false,代表“端详”技能可以使用。

ttl在这条记忆里的作用是:

“端详”技能的剩余冷却时间(单位:刻)

举个粒子。假设一个猪灵刚刚端详完成,其“端详”技能已经进入冷却状态,冷却时间为8.4s,那么这个记忆就将是:

{......:{minecraft:admiring_disabled:{value:“true“,ttl:168}}

懂了吧?懂了就下一个:minecraft:hunted_recently(这个猪灵追猎这个技能的冷却状态)

和minecraft:admiring_disabled一样,这也是技能的冷却。但这次的技能是“追猎”。

首先,minecraft:hunted_recently仍然有这几个值:

value(值:布尔值)

ttl(值:数值)

然后,“追猎”技能会在出现以下任何一种情况都会冷却:

1.使用完“追猎”技能

最后,这里的value当为true时,就代表着“追猎”技能正在冷却。为false,就是可以正常使用。ttl跟minecraft:admiring_disabled一样,也是技能冷却的剩余时间。

举个栗子:假设一只猪灵刚刚追猎完成,其“追猎”技能已经进入冷却状态,冷却时间为1m24s,那么这个记忆就将是:

{......:{minecraft:hunted_recently:{value:“true“,ttl:1680}}

是不是简洁明了?

所以,这就是原版brain的全部内容。

太棒了!生物共通nbt终于完了!

......

——生物共通nbt:

包含所有实体共通nbt

health——生物当前生命值。值:浮点数

absorptionamount——生物可抵消攻击的值。值:浮点数

hurttime——生物已经发红的时间,单位刻。值:整数

hurtbytimestamp——生物距上次受到伤害的时间值,或是距生成的时间值,单位刻。值:整数

deathtime——距生物死亡的时间刻数。值:整数

fallflying——生物是否滑翔。值:布尔值(1 or 0)

sleepingx——生物正在睡的床x坐标。值:整数

sleepingy——生物正在睡的床y坐标。值:整数

sleepingz——生物正在睡的床z坐标。值:整数

brain——生物的记忆。值:复合标签({})

——memories——值:复合标签({})

attributes——生物的属性。值:列表()

——一个属性——值:复合标签({})

————name——属性名称id。值:字符串

————base——属性基础值。值:浮点数

————modifiers——属性修饰符。值:列表()

——————一个属性修饰符——值:复合标签({})

————————name——修饰符的名称,可随便。值:字符串

————————amount——修饰符调整属性基础值的数值。值:浮点数

————————operation——修饰符对属性修饰符调整的基础算法。值:整数

————————uuid[1.16版本及以上]——修饰符的uuid,用于区分修饰符。值:整形数组([i;1,2,3,4])

————————uuidmost[1.16以下]——修饰符的uuid高位,用于区分修饰符。值:整数

————————uuidleast[1.16以下]——修饰符的uuid低位,用于区分修饰符。值:整数

activeeffects——生物所有的状态效果。值:列表()

——一项状态效果——值:复合标签({})

————状态效果nbt(见第一百三十三章)

handitems——生物手持的物品。值:列表()

——主手手持物品——值:复合标签({})

————物品共通nbt(见第一百零八章)

——副手手持物品——值:复合标签({})

————物品共通nbt(见第一百零八章)

armoritems——生物穿在身上的物品。值:列表()

——脚上穿的物品——值:复合标签

————物品共通nbt(见第一百零八章)

——腿上穿的物品——值:复合标签

————物品共通nbt(见第一百零八章)

——胸前穿的物品——值:复合标签

————物品共通nbt(见第一百零八章)

——头上戴的物品——值:复合标签

————物品共通nbt(见第一百零八章)

handdropchances——手持物品掉落几率。值:列表()

——主手物品掉落几率。值:浮点数

——副手物品掉落几率。值:浮点数

armordropchances——盔甲掉落几率。值:列表()

——靴子栏物品掉落几率。值:浮点数

——护腿栏物品掉落几率。值:浮点数

——胸甲栏物品掉落几率。值:浮点数

——头盔栏物品掉落几率。值:浮点数

deathloottable——生物战利品表。值:字符串

deathloottableseed——生成战利品表的种子。值:整数

canpickuploot——生物是否可捡起战利品。值:布尔值(true|false)

noai——生物是否没有ai。值:布尔值(true|false)

persistencerequired——生物是否不会自然消失。值:布尔值(true|false)

lefthanded——生物是否渲染时的主手为左手。值:布尔值(true|false)

leashed——生物是否被拴住。值:布尔值(true|false)

team——生物要加入的队伍,这实际上不是生物的nbt。值:字符串

leash——这里说不清楚,具体见第一百三十三章。值:复合标签

——uuid[1.16及以上]——被拴住的生物的uuid。值:整形数组

——uuidmost[1.16以下]——被拴住的生物的uuid高位。值:整数

——uuidleast[1.16以下]——被拴住的生物的uuid低位。值:整数

——x——拴绳的位置的x坐标。值:整数

——y——拴绳的位置的y坐标。值:整数

——z——拴绳的位置的z坐标。值:整数

上一章目录+书架下一章