上一章讲到生物的共通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坐标。值:整数