第一百三十四章 生物的共通NBT-4
上一章講到生物的共通NBT的最后一個(gè):
Brain
而這個(gè)Brain里面的memories就是存儲(chǔ)記憶的地方。記憶有這么幾個(gè):
minecraft:meeting_point——這個(gè)村民聚會(huì)的位置
minecraft:home——這個(gè)村民床的位置
minecraft:job_site——這個(gè)村民工作的地方(就是這個(gè)村民的工作站坐標(biāo))
minecraft:last_slept——這個(gè)村民已經(jīng)睡覺(jué)多長(zhǎng)時(shí)間了
minecraft:last_woken——這個(gè)村民已經(jīng)多久沒(méi)睡覺(jué)了
minecraft:last_worked_at_poi——這個(gè)村民多久沒(méi)工作了
minecraft:angry_at——這個(gè)豬靈的目標(biāo)
minecraft:admiring_item——這個(gè)豬靈端詳物品的狀態(tài)
minecraft:admiring_disabled——這個(gè)豬靈拿起物品端詳這個(gè)技能的冷卻狀態(tài)
minecraft:hunted_recently——這個(gè)豬靈追獵這個(gè)技能的冷卻狀態(tài)
這些記憶都帶有“minecraft:”,說(shuō)明mod也可以對(duì)記憶進(jìn)行增加。
其中,6項(xiàng)都是村民的,剩下4項(xiàng)都是豬靈的。
現(xiàn)在我們來(lái)看第一項(xiàng)記憶:
minecraft:meeting_point——這個(gè)村民聚會(huì)的位置
這個(gè)記憶是個(gè)復(fù)合標(biāo)簽({}),實(shí)際上所有記憶都是復(fù)合標(biāo)簽:
{Brain:{memories:{minecraft:meeting_point:{}}}}
里面只有一個(gè)標(biāo)簽value(值:復(fù)合標(biāo)簽):
{......:{minecraft:meeting_point:{value:{}}}}}
?。ɡ咸讖?fù)合標(biāo)簽了?。?p> value里有這么幾個(gè)參數(shù):
pos(值:列表)——聚會(huì)地點(diǎn)的X、Y、Z坐標(biāo)
dimension(值:字符串)——聚會(huì)地點(diǎn)的緯度id
{......:{minecraft:meeting_point:{value:{pos:[X,Y,Z],dimension:“緯度id“}}}}}
現(xiàn)在我們舉個(gè)例子,比如這個(gè)村民它的聚會(huì)場(chǎng)所是在主世界的X=45,Y=77,Z=1862的地方,那么它的這項(xiàng)記憶就將是:
{......:{minecraft:meeting_point:{value:{pos:[45,77,1862],dimension:“0“}}}}}
是不是很簡(jiǎn)單?對(duì)了,這里的緯度id也就是世界id,主世界的世界id是0,下界是-1,末地是1(好像講過(guò)了哎)。
minecraft:home(這個(gè)村民床的位置)的格式和minecraft:meeting_point幾乎一樣,都是:
{......:{minecraft:home:{value:{pos:[床的X,床的Y,床的Z],dimension:“床的緯度“}}}}}
比如一個(gè)村民的床在下界的X=45,Y=87,Z=106的位置,那么:
{......:{minecraft:home:{value:{pos:[45,87,106],dimension:“-1“}}}}}
嗯。對(duì)哦,村民在下界睡覺(jué)床不會(huì)爆炸嗎?
還真的不會(huì)爆炸(奇怪的知識(shí)增加了?。?。
既然minecraft:home的格式和minecraft:meeting_point幾乎一樣,而minecraft:job_site(這個(gè)村民工作的地方)也是記錄著坐標(biāo),所以minecraft:job_site實(shí)際上格式也和前面兩個(gè)一樣:
{......:{minecraft:home:{value:{pos:[工作方塊X,工作方塊Y,工作方塊Z],dimension:“工作方塊的緯度“}}}}}
舉例子就不用舉了,都懂。
然鵝接下來(lái)這三個(gè)就不一樣了:
minecraft:last_slept——這個(gè)村民已經(jīng)睡覺(jué)多長(zhǎng)時(shí)間了
minecraft:last_woken——這個(gè)村民已經(jīng)多久沒(méi)睡覺(jué)了
minecraft:last_worked_at_poi——這個(gè)村民多久沒(méi)工作了
它們都是存儲(chǔ)時(shí)間的,所以格式就和之前三個(gè)存儲(chǔ)坐標(biāo)的不一樣。但既然它們都是存儲(chǔ)時(shí)間的,所以它們的格式.......
沒(méi)錯(cuò)!它們?nèi)母袷揭彩峭耆粯拥摹1热鏼inecraft:last_slept(這個(gè)村民已經(jīng)睡覺(jué)多長(zhǎng)時(shí)間了)的格式是這樣的:
{......:{minecraft:last_slept:{value:時(shí)間(單位:刻)}}}}
舉個(gè)例子,假設(shè)這個(gè)村民已經(jīng)睡了2個(gè)小時(shí)了(村民:?),那么這個(gè)村民的這個(gè)記憶的值就是:
{......:{minecraft:last_slept:{value:144000}}}}
代表著這個(gè)村民已經(jīng)睡了144000刻了,也就是120分鐘,即兩小時(shí)。
而我們已經(jīng)知道了minecraft:last_woken(這個(gè)村民已經(jīng)多久沒(méi)睡覺(jué)了)和minecraft:last_worked_at_poi(這個(gè)村民多久沒(méi)工作了)格式都和minecraft:last_slept一樣,所以:
minecraft:last_woken格式——
{......:{minecraft:last_woken:{value:這個(gè)村民沒(méi)睡覺(jué)的時(shí)間(單位:刻)}}}}
minecraft:last_worked_at_poi格式——
{......:{minecraft:last_worked_at_poi:{value:這個(gè)村民沒(méi)工作的時(shí)間(單位:刻)}}}}
至于舉例子嘛......這么簡(jiǎn)單就不用舉了,況且格式都一樣。
接下來(lái)就是豬靈了。豬靈一共有4個(gè)記憶,即:
minecraft:angry_at——這個(gè)豬靈的目標(biāo)
minecraft:admiring_item——這個(gè)豬靈端詳物品的狀態(tài)
minecraft:admiring_disabled——這個(gè)豬靈拿起物品端詳這個(gè)技能的冷卻狀態(tài)
minecraft:hunted_recently——這個(gè)豬靈追獵這個(gè)技能的冷卻狀態(tài)
這四個(gè)標(biāo)簽的內(nèi)容,都有一個(gè)“ttl”標(biāo)簽。這個(gè)標(biāo)簽的值是數(shù)值,實(shí)際作用就是:
這項(xiàng)記憶還有多久消失(單位:刻)
又或者可以說(shuō)是:
豬靈的技能冷卻剩下時(shí)間(單位:刻)
當(dāng)然,具體的作用會(huì)根據(jù)不同的記憶會(huì)出現(xiàn)一些出入。
第一個(gè)minecraft:angry_at(這個(gè)豬靈的目標(biāo)),它的值有兩個(gè):
value(值:UUID整形數(shù)組)
ttl(值:數(shù)值)
ttl剛才說(shuō)過(guò)了。這個(gè)value存儲(chǔ)著UUID,再聯(lián)系一下“目標(biāo)”,你想到了什么?
這個(gè)value填的就是豬靈的目標(biāo)實(shí)體的UUID!
嗯,沒(méi)錯(cuò)?,F(xiàn)在我們舉個(gè)例子,假設(shè)這個(gè)豬靈已經(jīng)鎖定了一個(gè)UUID為[I;-478658285,1942176603,-2057916122,-1995913697]的凋零骷髏,而且距離這個(gè)豬靈忘記這個(gè)凋零骷髏的時(shí)間還有1分57秒,那么其這項(xiàng)記憶就是:
{......:{minecraft:angry_at:{value:[I;-478658285,1942176603,-2057916122,-1995913697],ttl:2340}}}}
嗯,除了UUID有點(diǎn)長(zhǎng)之外,其他都挺簡(jiǎn)單的。
然后是minecraft:admiring_item(這個(gè)豬靈端詳物品的狀態(tài))。其值也有兩個(gè):
value(值:布爾值)
ttl(值:數(shù)值)
這里的value是布爾值,也就是true和false。如果是true,那么就代表著這個(gè)豬靈在端詳物品。false則不是。
ttl在這里的作用是:端詳還剩下的時(shí)間(單位:刻)
舉個(gè)例子,比如一個(gè)豬靈它正在端詳,且剩下的端詳時(shí)間還有7秒,那么其這項(xiàng)記憶就是:
{......:{minecraft:angry_at:{value:“true“,ttl:140}}
接著是minecraft:admiring_disabled(這個(gè)豬靈拿起物品端詳這個(gè)技能的冷卻狀態(tài))。其值仍然有兩個(gè):
value(值:布爾值)
ttl(值:數(shù)值)
既然是冷卻狀態(tài),我們就得了解一下“豬靈”其“端詳”這個(gè)技能的冷卻會(huì)因?yàn)槭裁炊|發(fā)。一共有3種觸發(fā)方式:
1.正在轉(zhuǎn)化成僵尸豬靈
2.受到傷害
3.使用完了”端詳”這個(gè)技能
當(dāng)上面3個(gè)條件的任意一項(xiàng)達(dá)成時(shí),“端詳”技能將會(huì)進(jìn)入冷卻。同時(shí),該記憶也將會(huì)改變。
value在這條記憶里的作用是:
當(dāng)值為true,代表“端詳”技能處于冷卻狀態(tài)。當(dāng)值為false,代表“端詳”技能可以使用。
ttl在這條記憶里的作用是:
“端詳”技能的剩余冷卻時(shí)間(單位:刻)
舉個(gè)粒子。假設(shè)一個(gè)豬靈剛剛端詳完成,其“端詳”技能已經(jīng)進(jìn)入冷卻狀態(tài),冷卻時(shí)間為8.4s,那么這個(gè)記憶就將是:
{......:{minecraft:admiring_disabled:{value:“true“,ttl:168}}
懂了吧?懂了就下一個(gè):minecraft:hunted_recently(這個(gè)豬靈追獵這個(gè)技能的冷卻狀態(tài))
和minecraft:admiring_disabled一樣,這也是技能的冷卻。但這次的技能是“追獵”。
首先,minecraft:hunted_recently仍然有這幾個(gè)值:
value(值:布爾值)
ttl(值:數(shù)值)
然后,“追獵”技能會(huì)在出現(xiàn)以下任何一種情況都會(huì)冷卻:
1.使用完“追獵”技能
最后,這里的value當(dāng)為true時(shí),就代表著“追獵”技能正在冷卻。為false,就是可以正常使用。ttl跟minecraft:admiring_disabled一樣,也是技能冷卻的剩余時(shí)間。
舉個(gè)栗子:假設(shè)一只豬靈剛剛追獵完成,其“追獵”技能已經(jīng)進(jìn)入冷卻狀態(tài),冷卻時(shí)間為1m24s,那么這個(gè)記憶就將是:
{......:{minecraft:hunted_recently:{value:“true“,ttl:1680}}
是不是簡(jiǎn)潔明了?
所以,這就是原版Brain的全部?jī)?nèi)容。
太棒了!生物共通NBT終于完了!
......
——生物共通NBT:
包含所有實(shí)體共通NBT
Health——生物當(dāng)前生命值。值:浮點(diǎn)數(shù)
AbsorptionAmount——生物可抵消攻擊的值。值:浮點(diǎn)數(shù)
HurtTime——生物已經(jīng)發(fā)紅的時(shí)間,單位刻。值:整數(shù)
HurtByTimestamp——生物距上次受到傷害的時(shí)間值,或是距生成的時(shí)間值,單位刻。值:整數(shù)
DeathTime——距生物死亡的時(shí)間刻數(shù)。值:整數(shù)
FallFlying——生物是否滑翔。值:布爾值(1 or 0)
SleepingX——生物正在睡的床X坐標(biāo)。值:整數(shù)
SleepingY——生物正在睡的床Y坐標(biāo)。值:整數(shù)
SleepingZ——生物正在睡的床Z坐標(biāo)。值:整數(shù)
Brain——生物的記憶。值:復(fù)合標(biāo)簽({})
——memories——值:復(fù)合標(biāo)簽({})
Attributes——生物的屬性。值:列表([])
——一個(gè)屬性——值:復(fù)合標(biāo)簽({})
————Name——屬性名稱id。值:字符串
————Base——屬性基礎(chǔ)值。值:浮點(diǎn)數(shù)
————Modifiers——屬性修飾符。值:列表([])
——————一個(gè)屬性修飾符——值:復(fù)合標(biāo)簽({})
————————Name——修飾符的名稱,可隨便。值:字符串
————————Amount——修飾符調(diào)整屬性基礎(chǔ)值的數(shù)值。值:浮點(diǎn)數(shù)
————————Operation——修飾符對(duì)屬性修飾符調(diào)整的基礎(chǔ)算法。值:整數(shù)
————————UUID[1.16版本及以上]——修飾符的UUID,用于區(qū)分修飾符。值:整形數(shù)組([I;1,2,3,4])
————————UUIDMost[1.16以下]——修飾符的UUID高位,用于區(qū)分修飾符。值:整數(shù)
————————UUIDLeast[1.16以下]——修飾符的UUID低位,用于區(qū)分修飾符。值:整數(shù)
ActiveEffects——生物所有的狀態(tài)效果。值:列表([])
——一項(xiàng)狀態(tài)效果——值:復(fù)合標(biāo)簽({})
————狀態(tài)效果NBT(見(jiàn)第一百三十三章)
HandItems——生物手持的物品。值:列表([])
——主手手持物品——值:復(fù)合標(biāo)簽({})
————物品共通NBT(見(jiàn)第一百零八章)
——副手手持物品——值:復(fù)合標(biāo)簽({})
————物品共通NBT(見(jiàn)第一百零八章)
ArmorItems——生物穿在身上的物品。值:列表([])
——腳上穿的物品——值:復(fù)合標(biāo)簽
————物品共通NBT(見(jiàn)第一百零八章)
——腿上穿的物品——值:復(fù)合標(biāo)簽
————物品共通NBT(見(jiàn)第一百零八章)
——胸前穿的物品——值:復(fù)合標(biāo)簽
————物品共通NBT(見(jiàn)第一百零八章)
——頭上戴的物品——值:復(fù)合標(biāo)簽
————物品共通NBT(見(jiàn)第一百零八章)
HandDropChances——手持物品掉落幾率。值:列表([])
——主手物品掉落幾率。值:浮點(diǎn)數(shù)
——副手物品掉落幾率。值:浮點(diǎn)數(shù)
ArmorDropChances——盔甲掉落幾率。值:列表([])
——靴子欄物品掉落幾率。值:浮點(diǎn)數(shù)
——護(hù)腿欄物品掉落幾率。值:浮點(diǎn)數(shù)
——胸甲欄物品掉落幾率。值:浮點(diǎn)數(shù)
——頭盔欄物品掉落幾率。值:浮點(diǎn)數(shù)
DeathLootTable——生物戰(zhàn)利品表。值:字符串
DeathLootTableSeed——生成戰(zhàn)利品表的種子。值:整數(shù)
CanPickUpLoot——生物是否可撿起戰(zhàn)利品。值:布爾值(true|false)
NoAI——生物是否沒(méi)有AI。值:布爾值(true|false)
PersistenceRequired——生物是否不會(huì)自然消失。值:布爾值(true|false)
LeftHanded——生物是否渲染時(shí)的主手為左手。值:布爾值(true|false)
Leashed——生物是否被拴住。值:布爾值(true|false)
Team——生物要加入的隊(duì)伍,這實(shí)際上不是生物的NBT。值:字符串
Leash——這里說(shuō)不清楚,具體見(jiàn)第一百三十三章。值:復(fù)合標(biāo)簽
——UUID[1.16及以上]——被拴住的生物的UUID。值:整形數(shù)組
——UUIDMost[1.16以下]——被拴住的生物的UUID高位。值:整數(shù)
——UUIDLeast[1.16以下]——被拴住的生物的UUID低位。值:整數(shù)
——X——拴繩的位置的X坐標(biāo)。值:整數(shù)
——Y——拴繩的位置的Y坐標(biāo)。值:整數(shù)
——Z——拴繩的位置的Z坐標(biāo)。值:整數(shù)