首頁 游戲

Minecraft指令手冊(cè)

第一百三十三章 生物的共通NBT-3

Minecraft指令手冊(cè) 你好MC 2448 2020-10-05 22:00:54

  在上一章我們講到了HandItems和HandDropChances,這兩個(gè)標(biāo)簽都跟生物的兩只手有關(guān)。而一個(gè)生物,它不光擁有手,還擁有一個(gè)可以穿戴東西的身體。

  所以,NBT里除了HandItems,還有ArmorItems——用于存儲(chǔ)生物的頭、胸、腿、腳都穿了些什么鬼東西。

  ArmorItems的值和HandItems一樣,都是列表。列表內(nèi)有4個(gè)空,分別用于填寫四個(gè)部位所穿戴的物品:

  {ArmorItems:[{靴子},{護(hù)腿},{胸甲},{頭盔}]}

  舉個(gè)例子,現(xiàn)在這里有個(gè)僵尸,它頭上戴著皮革帽子(leather_helmet),胸前穿著鎖鏈胸甲(leather_chestplate),腿上是個(gè)附了保護(hù)I的的鉆石護(hù)腿(diamond_leggings),腳上穿著鐵靴子(iron_boots),那么這個(gè)僵尸的ArmorItems就是:

  {ArmorItems:[{Count:1,id:“iron_boots“},{Count:1,id:“diamond_leggings“,tag:{Enchantments:[{id:“protection“,lvl:1}]}},{Count:1,id:“l(fā)eather_chestplate“},{Count:1,id:“l(fā)eather_helmet“}]}

  哦不!這個(gè)僵尸死了!那么它掉落身上裝備的幾率是多少呢?

  我們不知道有多少,但我們可以更改成自己想的,這樣子就知道了!

  和HandItems一樣,ArmorItems標(biāo)簽也有一個(gè)控制掉落幾率的親兄弟:ArmorDropChances,格式和HandDropChances當(dāng)然也差不多,都是:

  {ArmorDropChances:[靴子掉落幾率,護(hù)腿掉落幾率,胸甲掉落幾率,頭盔掉落幾率]}

  這里的幾率也照樣是單精度浮點(diǎn)數(shù)。舉個(gè)例子:

  {ArmorDropChances:[1.0,0.32,0.65,0.99]}

  這樣子的話這個(gè)僵尸其裝備的掉落幾率就是:

  靴子——100%

  護(hù)腿——32%

  胸甲——65%

  頭盔——99%

  是不是灰常簡(jiǎn)單?

  當(dāng)然,別忘了,擊殺一個(gè)生物,掉落的不光是它拿的東西以及穿的東西,還有這個(gè)生物的戰(zhàn)利品表所規(guī)定掉落的物品。

  控制生物戰(zhàn)利品表的標(biāo)簽就是:DeathLootTable,這個(gè)的值是個(gè)字符串,所以它填的戰(zhàn)利品表一般是游戲已經(jīng)封裝好的,比如這個(gè)僵尸,它的默認(rèn)戰(zhàn)利品表就是:

  {DeathLootTable:“l(fā)oot_tables/entities/zombie“}

  也就是僵尸的戰(zhàn)利品表。

  當(dāng)然,你也可以自定義戰(zhàn)利品表,只不過你可能需要用到很多的轉(zhuǎn)義符號(hào)(\)。

  具體的戰(zhàn)利品表介紹已經(jīng)在第八十九章就詳細(xì)的講過了,只不過好像很多人都沒看懂哎。

  沒事,沒看懂很正常,6000多字的內(nèi)容可不是一時(shí)半會(huì)能消化得完的。

  戰(zhàn)利品表是隨機(jī)的,但這個(gè)隨機(jī)并不是戰(zhàn)利品表自身的,而是要通過種子來完成:

  DeathLootTableSeed

  DeathLootTableSeed的用途是生成戰(zhàn)利品表的種子,當(dāng)為0或?yàn)榭諘r(shí)將會(huì)隨機(jī)生成一個(gè)種子。

  上面的DeathLootTableSeed和DeathLootTable都是關(guān)于戰(zhàn)利品表的。但如果一個(gè)生物沒有戰(zhàn)利品呢?

  除了它的戰(zhàn)利品表是loot_tables/empty外,還有一種可能:

  它沒有DeathLootTableSeed和DeathLootTable這兩個(gè)標(biāo)簽。

  沒錯(cuò),實(shí)際上這兩個(gè)標(biāo)簽是可選的,就算把它兩刪了也不會(huì)出什么驚天大事的。

  但下面這個(gè),就不能刪了:

  CanPickUpLoot(值:true|fasle布爾值)

  CanPickUpLoot這個(gè)標(biāo)簽控制著這個(gè)生物它到底會(huì)不會(huì)撿起物品(或者說是戰(zhàn)利品)。當(dāng)為true,這個(gè)生物就會(huì)撿東西,然后把可以用的東西用起來,比如撿起靴子就穿上靴子之類的——這點(diǎn)在僵尸上特別突出:相信你應(yīng)該經(jīng)歷過苦力怕把你箱子炸了,僵尸緊接著跑過來把你東西拿了,我都懷疑這苦力怕是不是和這僵尸心有靈犀,咋配合得這么默契呢?

  所以,如果你不想讓僵尸拿起你的劍去砍你,就把這個(gè)CanPickUpLoot改成false吧!

  生物的共通NBT還有許多和CanPickUpLoot一樣是布爾值的標(biāo)簽,且都很簡(jiǎn)單:

  NoAI(值:true|fasle布爾值)——這個(gè)生物是否沒有AI。true為沒有AI,false為有AI。

  PersistenceRequired(值:true|fasle布爾值)——這個(gè)生物是否不會(huì)被自然刪除。true為不會(huì)被自然刪除,false為會(huì)被自然刪除。

  LeftHanded(值:true|fasle布爾值)——這個(gè)生物渲染的主手是否為左手。true為渲染時(shí)主手為左手,false為渲染時(shí)主手為右手。

  Leashed(值:true|fasle布爾值)——這個(gè)生物是否被拴住。true為被拴住,false為沒有被拴住。

  而其中,最復(fù)雜的應(yīng)該要數(shù)Leashed。當(dāng)這個(gè)為true時(shí),就會(huì)有一個(gè)新的標(biāo)簽:

  Leash

  這個(gè)Leash稍微有點(diǎn)復(fù)雜,它有兩種記錄方式:

  1.該實(shí)體為拴繩的頭(沒錯(cuò),就是欄桿上那個(gè)長方形狀的拴繩頭,那也是個(gè)實(shí)體)或拿著拴的實(shí)體,那么將會(huì)記錄它拴住的實(shí)體的UUID(1.15版本及以下是UUIDMost和UUIDLeast),即:

  {Leash:{UUID:[I;-211674134,1944866746,-1405592313,1790609596]}}

 ?。?.15版本及以下:

  {Leash:{UUIDMost:-909133480994254918,UUIDLeast:-6036973014053386052}})

  2.該實(shí)體為被拴住的生物,那么將會(huì)記錄拴住它的拴繩頭或拿著拴著它的繩子的實(shí)體位置,即:

  {Leash:{X:921,Y:65,Z=343}}

  嗯,還是挺簡(jiǎn)單的。

  到目前為止,我們已經(jīng)了解了大部分生物的共通NBT,只剩下了三個(gè)沒講的了:

  Team(值:字符串)

  Brain(值:復(fù)合標(biāo)簽{})

  ActiveEffects(值:列表[])

  其中,Team是這里面最簡(jiǎn)單的。但是它的作用并不是存儲(chǔ)這個(gè)生物所加入的隊(duì)伍,而是:

  如果Team的值里面有填東西,該生物將會(huì)自動(dòng)且立馬加入Team所填的隊(duì)伍,加入后自動(dòng)清空Team的值。

  所以這個(gè)標(biāo)簽實(shí)際上并不是個(gè)生物的NBT數(shù)據(jù),而是方便在創(chuàng)建生物時(shí)讓生物加入隊(duì)伍。

  所以這個(gè)標(biāo)簽的用武之地就是——

  實(shí)現(xiàn)起床戰(zhàn)爭(zhēng)召喚自家隊(duì)伍的鐵傀儡!

  ........

  然后是ActiveEffects。Brain最復(fù)雜,我們留最后。

  ActiveEffects的作用是存儲(chǔ)這個(gè)生物所有的狀態(tài)效果。如果這個(gè)生物沒有狀態(tài)效果,就不會(huì)有這個(gè)標(biāo)簽。

  ActiveEffects的格式是這樣的:

  {ActiveEffects:[{效果1},{效果2},{效果3},...]}

  而這個(gè)效果,就要涉及到——效果的NBT(效果沒有共通之說,因?yàn)樾Ч腘BT都是一樣的):

  Id——效果id(值:數(shù)值)

  Amplifier——效果等級(jí),實(shí)際等級(jí)是這里的數(shù)值加上1。如這邊填0,等級(jí)將是1(值:數(shù)值,范圍:0~255)

  Duration——距離效果消失的時(shí)間刻數(shù)。或者說是效果的剩余時(shí)間,單位為刻(值:數(shù)值[int整型])

  Ambient——這個(gè)效果是否是信標(biāo)施加。如果是由信標(biāo)施加,則為true,將會(huì)減弱粒子效果。不是則為false(值:true|fasle布爾值)

  ShowParticles——是否顯示粒子效果。顯示則為true,不顯示則為false(值:true|fasle布爾值)

  ShowIcon——是否顯示效果圖標(biāo)(這個(gè)挺有用,配合ShowParticles可以神不知鬼不覺給人附上效果,比如用于起床戰(zhàn)爭(zhēng))。顯示圖標(biāo)則為true,不顯示為false。(值:true|fasle布爾值)

  HiddenEffect——相同類型但效果等級(jí)更低的效果,將會(huì)暫時(shí)放在這邊。如果上面的狀態(tài)效果失效將會(huì)立刻取代它。當(dāng)然,存在這邊的效果剩余時(shí)間仍然會(huì)減少。(值:復(fù)合標(biāo)簽{})

  都懂了吧?這已經(jīng)說得很詳細(xì)了。舉個(gè)例子,假設(shè)一個(gè)村民被玩家使用指令施加了110級(jí)時(shí)長3分30秒的跳躍提升,那么這個(gè)村民的ActiveEffects將是:

  {ActiveEffects:[{id:8,Amplifier:109,Duration:4200,Ambient:“false“,ShowParticles:“true“,ShowIcon:“true“}]}

  但如果這時(shí)候玩家又給這個(gè)村民添加一個(gè)相同類型的狀態(tài)效果,但等級(jí)達(dá)到了120級(jí),時(shí)長只有1分鐘,將會(huì)怎么樣?

  這時(shí)候就要了解一下HiddenEffect標(biāo)簽里的東西了,實(shí)際上還是一樣的:

  Id

  Amplifier

  Duration

  Ambient

  ShowParticles

  ShowIcon

  HiddenEffect

  可以發(fā)現(xiàn)這里又有HiddenEffect。沒錯(cuò),確實(shí)是可以套狀態(tài)效果的,想套多少都可以。

  所以這時(shí)候村民的ActiveEffects就成了:

  {ActiveEffects:[{id:8,Amplifier:119,Duration:1200,Ambient:“false“,ShowParticles:“true“,ShowIcon:“true“,HiddenEffect:{id:8,Amplifier:109,Duration:4200,Ambient:“false“,ShowParticles:“true“,ShowIcon:“true“}}]}

  懂了吧?其實(shí)灰常簡(jiǎn)單的。

  最后就只剩下Brain(值:復(fù)合標(biāo)簽{})了。

  Brain相當(dāng)于這個(gè)生物的記憶,所以很高級(jí)。高級(jí)到什么程度呢?在生物里,到1.16,只有村民和豬靈有記憶。

  Brain的內(nèi)容只有一個(gè):

  memories(值:復(fù)合標(biāo)簽{})

  而memories的值,就多了:

  minecraft:meeting_point

  minecraft:home

  minecraft:job_site

  minecraft:last_slept

  minecraft:last_woken

  minecraft:last_worked_at_poi

  minecraft:angry_at

  minecraft:admiring_item

  minecraft:admiring_disabled

  minecraft:hunted_recently

  只不過這些內(nèi)容,由于太多了,我們只好放到下一章再來講了。

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南