第一百零九章 掉落物的NBT 下
(此章节内容不怎么重要,可跳过此章节)
众所周知,使用/give指令可以让你获得指定的物品。
比如指令『/give @s command_block』的作用就是让你获得一个命令方块。
但你知道你是怎么获得这个命令方块的吗?
在你运行该指令的那一刻,这条指令会被游戏进行处理,然后你就获得了这个命令方块。奇妙的是,在Java版,你似乎并不是直接获得命令方块,而是捡起了一个命令方块掉落物。
如果那真的是一个掉落物的话,那么这个掉落物的属性是什么呢?
Pickubr /Delay标签的值肯定为0,Age标签很有可能是6000。
但此时又有一个新的问题出现了:如果是在服务器中,你站在茫茫人海,但这个掉落物仍然被你精准地捡起了,这是为什么呢?(说实话还没等你捡起你家宽带以及你的电脑就要主机火苗万丈高了)
因为掉落物的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标签的用法,只不过你现在其实并不需要急着去用,因为掉落物还可能会有一个标签。
假设你在矿洞挖矿,刚刚挖到8颗钻石,你很兴奋,然后听到后面有一个........
“嘶~~~”
你转头一看:“Creebr /er?”
“BOOOOOM!”
恭喜你,你的钻石成为了一个掉落物。
这颗钻石掉落物的NBT也值得研究。
它的NBT除了上一章所说的,还有一个你从未见过的NBT标签:
Thrower——这个物品本来是谁的
和Owner一样,它的值也是一个玩家的UUID信息。当某名玩家把这个物品以某种形式丢掉了,这个物品的Thrower标签就会存储该名玩家的UUID。
Thrower的用法和上面的Owner一模一样,这里就不细讲了。
这一章到此为止。
EaseCation真好玩——唉,好像作业还没做唉。
附录:历史
Java
1.16——为适应新版本的UUID,Owner和Thrower标签的数据类型从复合标签改成Int整型数组。