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