需要注意,如果是『-1001-1001-1001-』这样的,可不要想着缩写成:
11-11-11-11-11
不然游戏会以为这个UUID是『00000011-0011-0011-0011-000000000011』的缩写。
这种缩写不仅仅在『有连字符的十六进制』形式中可用,在其他形式中照样可用。
现在你知道了十六进制形式的UUID。那之前的UUIDMost(UUID高位)和UUIDLeast(UUID低位)到底是啥呢?
在解答之前,作者建议你先去找一个进制转换器,以方便现学现做。
以刚才的『00000001-0001-0001-0001-000000000001』举例,现在它是十六进制。
把前面三段(00000001-0001-0001)和后面两段(0001-000000000001)分开,并分别划成10进制,变成:和这两个数。
这两个数就是这个UUID的高位以及低位了。其实高位以及低位就是将十六进制的UUID切成两半然后划成10进制得出的数,说明白点,就是:
xxxxxxxx-xxxx-xxxx 这一段转换成10进制就是UUID Most
xxxx-xxxxxxxxxxxx 这一段转换成10进制就是UUID Least
(在NBT中,这两个标签的数据类型都为Long长整型)
但要注意,如果没有特别指明,你是不知道一个16进制的数字到底是正还是负。
小主,
原因的话,百度/谷歌一下,你就知道(毕竟这是Minecraft指令教学,不是计算机课)。
这种高位和低位的UUID形式,被称为『高低位(Most/Least)』。这种形式在Minecraft Java1.16版本更新前几乎遍地都是,但在Java1.16更新中却几乎绝迹了。
为何?因为在1.16版本更新后,NBT中大部分UUID再也不是『高低位』形式,而是使用了一个全新的表现方式:整型数组(int-array)
其样式我们在之前已经碰过好几次了。比如下面这一串:
[I;-,,-,-]
好像这种形式的UUID和其他形式没有太大关系。
但其实这种UUID和其他形式的UUID也可以互相转换,不然正版玩家的UUID就得重新设置。
如果你不想了解的话,可以跳过这一段,去看看UUID到底该如何获取。
但如果你想了解的话,不妨也来看一看。
仔细观察这一串数组,你会发现这4串数字有正负号,并且没有出现字母,加上这是个『整型数组』。这些证据都证明,这四串数,是十进制。
既然是十进制,那就好办了。根据UUID Most以及UUID Least的经验,这四串数,极有可能是十六进制的UUID平均分成4段再分别划成十进制的数。