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