第一百零九章 掉落物的NBT 下
?。ù苏鹿?jié)內(nèi)容不怎么重要,可跳過(guò)此章節(jié))
眾所周知,使用/give指令可以讓你獲得指定的物品。
比如指令『/give @s command_block』的作用就是讓你獲得一個(gè)命令方塊。
但你知道你是怎么獲得這個(gè)命令方塊的嗎?
在你運(yùn)行該指令的那一刻,這條指令會(huì)被游戲進(jìn)行處理,然后你就獲得了這個(gè)命令方塊。奇妙的是,在Java版,你似乎并不是直接獲得命令方塊,而是撿起了一個(gè)命令方塊掉落物。
如果那真的是一個(gè)掉落物的話,那么這個(gè)掉落物的屬性是什么呢?
PickupDelay標(biāo)簽的值肯定為0,Age標(biāo)簽很有可能是6000。
但此時(shí)又有一個(gè)新的問(wèn)題出現(xiàn)了:如果是在服務(wù)器中,你站在茫茫人海,但這個(gè)掉落物仍然被你精準(zhǔn)地?fù)炱鹆?,這是為什么呢?(說(shuō)實(shí)話還沒(méi)等你撿起你家寬帶以及你的電腦就要主機(jī)火苗萬(wàn)丈高了)
因?yàn)榈袈湮锏腘BT還有一個(gè)可能不存在的標(biāo)簽:Owner
Owner標(biāo)簽的數(shù)據(jù)類(lèi)型是復(fù)合標(biāo)簽,在Java1.16及以上版本是Int整型數(shù)組。它的值本質(zhì)上是一個(gè)玩家的UUID,用來(lái)決定這個(gè)掉落物可以被哪個(gè)玩家撿起。
舉個(gè)栗子,假設(shè)有這么一個(gè)叫做『Liu_HuaQiang』的玩家,如果你要生成一個(gè)只能夠被它撿起的掉落物,那Owner標(biāo)簽就得這樣子填:
{Owner:{UUIDMost:2332601084025456724L,UUIDLeast:-8594334449601351938L}}
\\Java1.16版本以下\\
{Owner:[I;543101011,-939046828,-2001024422,1385950974]}
\\Java1.16及以上版本\\
其中,UUIDMost和UUIDLeast這兩個(gè)標(biāo)簽填的是這名玩家的UUID高位和UUID低位。我們會(huì)在下一章講到UUID。
這就是Owner標(biāo)簽的用法,只不過(guò)你現(xiàn)在其實(shí)并不需要急著去用,因?yàn)榈袈湮镞€可能會(huì)有一個(gè)標(biāo)簽。
假設(shè)你在礦洞挖礦,剛剛挖到8顆鉆石,你很興奮,然后聽(tīng)到后面有一個(gè)........
“嘶~~~”
你轉(zhuǎn)頭一看:“Creeper?”
“BOOOOOM!”
恭喜你,你的鉆石成為了一個(gè)掉落物。
這顆鉆石掉落物的NBT也值得研究。
它的NBT除了上一章所說(shuō)的,還有一個(gè)你從未見(jiàn)過(guò)的NBT標(biāo)簽:
Thrower——這個(gè)物品本來(lái)是誰(shuí)的
和Owner一樣,它的值也是一個(gè)玩家的UUID信息。當(dāng)某名玩家把這個(gè)物品以某種形式丟掉了,這個(gè)物品的Thrower標(biāo)簽就會(huì)存儲(chǔ)該名玩家的UUID。
Thrower的用法和上面的Owner一模一樣,這里就不細(xì)講了。
這一章到此為止。
EaseCation真好玩——唉,好像作業(yè)還沒(méi)做唉。
附錄:歷史
Java
1.16——為適應(yīng)新版本的UUID,Owner和Thrower標(biāo)簽的數(shù)據(jù)類(lèi)型從復(fù)合標(biāo)簽改成Int整型數(shù)組。