首頁(yè) 游戲

Minecraft指令手冊(cè)

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

Minecraft指令手冊(cè) 你好MC 2332 2020-10-04 18:07:25

  在上一章的末尾,我們發(fā)現(xiàn)玩家和生物其本身的NBT很多是互通的。所以,你能在生物的共通NBT中找到一些玩家身上也有的NBT。

  比如:FallFlying(值:布爾值)

  FallFlying是個(gè)布爾值,一般來(lái)說(shuō)它是0。如果是1,生物(或者是說(shuō)“非玩家實(shí)體”)就會(huì)像用鞘翅滑翔般滑翔起來(lái)。而如果是玩家,那么玩家當(dāng)然是在滑翔時(shí)這個(gè)值才會(huì)是1,所以FallFlying被用于檢測(cè)一個(gè)玩家是否在滑翔。

  那么這到底有什么用呢?

  或許就是讓非玩家實(shí)體滑翔起來(lái)吧,或者是用于服務(wù)器防飛行掛的鞘翅飛行檢測(cè),防止誤判。

  這是一個(gè)玩家和生物NBT互通的例子,而在生物的共通NBT中,還有很多這樣的例子,比如這三個(gè):

  SleepingX(值:數(shù)值)

  SleepingY(值:數(shù)值)

  SleepingZ(值:數(shù)值)

  這三個(gè)標(biāo)簽并不是時(shí)時(shí)刻刻都會(huì)出現(xiàn),因?yàn)檫@三個(gè)標(biāo)簽的作用是:

  記錄實(shí)體當(dāng)前正在睡覺(jué)的床的坐標(biāo)

  為什么還要記錄呢?直接使用實(shí)體本身的坐標(biāo)不行嗎?

  肯定不行,因?yàn)镸C是一個(gè)充滿特性的世界。如果你哪天在MC里睡覺(jué),沒(méi)想到觸發(fā)了一個(gè)特性,讓你飄離床,在飛天神曲的沐浴下經(jīng)過(guò)了流沙河,翻越了火焰山,到達(dá)了西天大雷音寺這樣子在睡夢(mèng)中完成了西天取經(jīng)的十萬(wàn)八千里。然后你醒來(lái)了,如果游戲就是采用直接使用實(shí)體本身的坐標(biāo)的話,那么——

  “我是誰(shuí)?我在哪?我在干什么?”

  (過(guò)了一會(huì))

  這時(shí)東土大唐邊境河州衛(wèi),玄奘正要離開驛館。突然觀音菩薩出現(xiàn)在玄奘面前,告訴他有人已經(jīng)提前一步拿到了大乘佛法了。

  玄奘:.........

  所以Mojang為了避免這種情況的發(fā)生,使用了在玩家睡覺(jué)的時(shí)候就記錄床位置的方法,這樣子就算玩家飄離了十萬(wàn)八千里再起來(lái):

  “啊~又是新的一天啊?!?p>  “應(yīng)該給自己的豪宅再升級(jí)一下了?!?p>  (于是玩家挖了幾塊泥土)

  “真不錯(cuò)。”

  所以這三個(gè)標(biāo)簽是極其重要的。

  只不過(guò)生物會(huì)睡覺(jué)嗎?好像只有村民會(huì)哦。

  比如現(xiàn)在這里有個(gè)村民,他睡在X=564,Y=87,Z=65這個(gè)床上,那么他這個(gè)時(shí)候的這三個(gè)值就是:

  {

   SleepingX:564,

   SleepingY:87,

   SleepingZ:65

  }

  ——————一個(gè)很不華麗的分界線———————

  在上一章我們講到,生命的最大值其實(shí)就是一個(gè)屬性。如果我們要修改這個(gè)屬性,該怎么辦呢?

  生物的共通NBT里就有這么個(gè)標(biāo)簽:

  Attributes(值:列表)

  這是一個(gè)列表,所以它的值是這樣的:

  {Attributes:[A,B,C]}

  那么這些ABC該填什么?

  答案是屬性:

  {Attributes:[{A屬性},{B屬性},{C屬性}]}

  既然是屬性,我們就不妨復(fù)習(xí)一下一百零五章的屬性修飾符:

  “{AttributeModifiers:[{}]}

  在這個(gè)文件夾里,有這么幾個(gè)文件,需要我們修改一下(記得去“*”號(hào)):

  AttributeName*——要修改的屬性id

  Name*——要修改的屬性名字

  Slot*——指定生效的槽位

  Operation*——屬性數(shù)值是怎樣運(yùn)算的

  Amount*——屬性數(shù)值

  UUIDMost*——這個(gè)屬性UUID的高位

  UUIDLeast*——這個(gè)屬性UUID的低位”

  可以發(fā)現(xiàn),當(dāng)時(shí)講到的屬性修飾符,里面有很多個(gè)標(biāo)簽。

  但別忘了,屬性修飾符是屬性的修飾符啊,我們現(xiàn)在才深入到屬性啊,所以我們得先看看一個(gè)屬性需要幾個(gè)標(biāo)簽:

  Name——屬性的名稱

  Base——屬性的基礎(chǔ)值

  Modifiers——屬性的修飾符

  只有三個(gè),看起來(lái)非常簡(jiǎn)單。實(shí)際上也非常簡(jiǎn)單,比如我們的生命最大值,它就是這樣的:

  {Attributes:[{Name:“generic.max_health“,Base:20}]}

  我們要修改,除了給這個(gè)屬性添加修飾符,還可以直接把Base值修改。

  那么Base可以修改到什么程度呢?

  這個(gè)Base值的類型是“雙精度浮點(diǎn)型”,比我們上一章提到的“單精度浮點(diǎn)型”高級(jí)了一倍。

  注意,這里的“高級(jí)了一倍”不是作者自己猜的,而是有實(shí)際依據(jù)的,因?yàn)椋?p>  單精度浮點(diǎn)型——占用空間:32位(4字節(jié))

  雙精度浮點(diǎn)型——占用空間:64位(8字節(jié))

  占用空間增加了一倍,確實(shí)是高級(jí)了一倍。

  但如果按照這樣子說(shuō)的話,64位系統(tǒng)豈不只是32位系統(tǒng)的兩倍?

  那肯定是不對(duì)的。所以我們的這兩個(gè)浮點(diǎn)型,它們雖然占用空間是兩倍的關(guān)系,但實(shí)際可儲(chǔ)存的數(shù)值是:

  單精度浮點(diǎn)型——取值范圍:-3.4E38~3.4E38

  雙精度浮點(diǎn)型——取值范圍:-1.79769313486232E308~1.79769313486232E308

  嗯,確實(shí),是高級(jí)了億倍.......好像還不止

  所以,其實(shí)你的生命值上限最高并不是2048,也不是60000,而是:

  1.79769313486232×3081?!

  所以,你還敢說(shuō)你的創(chuàng)世之刃是能秒殺一切的武器了嗎?

  剩下的Modifiers就很簡(jiǎn)單了,因?yàn)槲覀冊(cè)缭诘谝话倭阄逭戮椭v到了。只不過(guò)這里的Modifiers有些不一樣,它只剩下了四個(gè)參數(shù)(1.16及以上5個(gè)):

  Name——要修改的屬性名字

  Operation——屬性數(shù)值是怎樣運(yùn)算的

  Amount——屬性數(shù)值

  UUIDMost——該修飾符的UUID高位

  UUIDLeast——該修飾符的UUID低位

 ?。?.16版本UUIDMost和UUIDLeast合并成了UUID)

  具體的用法就不再細(xì)說(shuō)了,自己去一百零五章看吧。

 ?。ㄋ坪跗粔?,再來(lái)一點(diǎn)吧)

  接下來(lái)的標(biāo)簽是:

  HandItems(值:列表)

  HandItems很容易理解,就是生物拿著的東西。又因?yàn)镸C的生物都是有兩只手的(你跟我說(shuō)史萊姆有手?),所以HandItems的列表是固定兩個(gè)項(xiàng)目,一個(gè)主手,一個(gè)副手:

  {HandItems:[{主手},{副手}]}

  而這個(gè)主手和副手內(nèi)填的就聯(lián)系到我們的物品共通標(biāo)簽了:

  Count——物品數(shù)量(值:數(shù)值)

  id——物品ID(值:字符串)

  tag——物品的額外標(biāo)簽(值:復(fù)合標(biāo)簽——{})

  具體的我就不再講了,已經(jīng)講了很多次了,況且才4個(gè)標(biāo)簽(還有一個(gè)Slot),非常簡(jiǎn)單,傻子都能記住。

  舉個(gè)例子,比如村民的主手正拿著一個(gè)面包,那么他的HandItems值就是:

  {HandItem:[{Count:1,id:“minecraft:bread“}]}

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

  但如果這個(gè)村民拿著這個(gè)面包就被殺死了(哦天吶?。?,掉落這個(gè)面包的幾率是多少呢?

  雖然我們不知道幾率是多少,但我們可以更改幾率,這樣子我們就知道了!

  控制村民的手中物品掉落幾率的標(biāo)簽是:

  HandDropChances

  這也是個(gè)列表,也有兩個(gè)項(xiàng)目,分別代表著主手和副手掉落物品的幾率。

  這個(gè)幾率的值是單精度浮點(diǎn)型,所以如果你想更改主手和副手掉落物品的幾率為78%的話,那么需要這么改:

  {HandDropChances:[0.78,0.78]}

  這樣子就可以了,還是灰常簡(jiǎn)單的。

  OK這一章我們就先講到這,我們下一章再見!

  (不知不覺(jué)國(guó)慶就已經(jīng)過(guò)完一半了啊.......)

  

  

  

  

  

  

  

  

  

  

  現(xiàn)在是中午12點(diǎn)整,王五和趙六正坐在橡木樓梯上刷B站。突然王五像觸電似的站了起來(lái):“wǒ cáo?”

  “發(fā)生了什么事?”趙六瞟了一下王五,繼續(xù)看敖廠長(zhǎng)的新視頻。

  “wòcào!”王五突然又叫了一聲。

  “哎你能不能別......”趙六話還沒(méi)說(shuō)完,王五又來(lái)了第三聲:“wòcào太棒了!”

  “你老是臥槽臥槽干什么啊?”趙六決定看看王五到底在看什么,于是把頭伸了過(guò)去。

  “wǒ cáo?”

  “wòcào!”

  “wòcào太棒了!”

  只見那個(gè)視頻的標(biāo)題是:

  《洞穴更新成了!Minecraft 1.17 更新特性匯總!洞穴與峭壁更新!》

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