Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement

通用唯一识别码(UUID,Java类是128位长的数字,在Minecraft中用来区分不同的对象实例。

表示方式[]

  • 有连字符的十六进制(Hyphenated hexadecimal):UUID的一种十六进制表示方式,中间用连字符将其划分为几个部分。通常的一种划分格式是将UUID分成8-4-4-4-12格式的数字,其中每个数字代表对应区间内的十六进制字符个数。进一步详细信息在技术型方面段落中。其中的一个代表示例是f81d4fae-7dec-11d0-a765-00a0c91e6bf6
    • 由于每一部分都是单独作为一个数字处理的,因此每个部分开头可以为空。例如,00000001-0002-0003-0004-0000000000051-2-3-4-5会被看作相同的UUID。
  • 十六进制(Hexadecimal):和有连字符的十六进制表示方法相同,只是每个部分之间没有连字符用来分隔。这种表示方式的一个示例是,00000001000200030004000000000005。和常规的字符串不同,里面的0不能被省略。
  • 高低位(Most/Least):将高64位和低64位分开表示。两个数字分开存储,并在游戏内使用Long(长整型)数据类型。这种格式是过期的,因为仅用于1.16之前并完全被整型数组格式取代。这种表示方法的一个示例是UUIDMost:-568210367123287600UUIDLeast:-6384696206158828554
  • 整型数组(int-array):用4个32位数字表示。每一部分存储在由高到低的整型数组中。这种表示方式的一个示例为[I;-132296786,2112623056,-1486552928,-920753162]

出现场合[]

下面的表格展示了所有玩家在游戏中可以接触到的使用UUID的地方:

位置(通用) 位置(路径) 格式 用途
所有实体(NBT) UUID 整型数组 自身的UUID
属性修饰符(NBT) UUID 整型数组 自身的UUID
属性修饰符(战利品表 id 有连字符的十六进制数字 set_attributes函数中设置修饰符的UUID
/attribute - 有连字符的十六进制数字 用来修改修饰符
可驯服生物(NBT) Owner 整型数组 主人
信任玩家的生物(NBT) Trusted 整型数组 标记部分生物信任的玩家
弹射物(NBT) Owner 整型数组 扔出弹射物的实体
物品实体(NBT) Owner 整型数组 /give命令的目标玩家
物品实体(NBT) Thrower 整型数组 扔出物品的实体
潜影贝导弹(NBT) Target 整型数组 攻击的目标实体
潮涌核心(NBT) Target 整型数组 攻击的目标实体
玩家头颅(NBT) SkullOwner.Id 整型数组 皮肤的所有者
玩家头颅(NBT) SkullOwner.Properties.textures[].Value.ProfileId 十六进制 皮肤的所有者
生物(NBT) Leash.UUID 整型数组 牵引拴着此生物的实体
可繁殖生物(NBT) LoveCause 整型数组 喂养此生物的玩家
僵尸村民(NBT) ConversionPlayer 整型数组 治疗此僵尸村民的玩家
除了猪灵之外的中立生物(NBT) AngryAt 整型数组 攻击该中立生物的玩家或实体
蜜蜂僵尸猪灵(NBT) HurtBy 整型数组 伤害蜜蜂或僵尸猪灵的实体
村民(NBT) Gossips[].Target 整型数组 引发言论的玩家
玩家(NBT) RootVehicle.Attach 整型数组 玩家骑乘的实体ID
目标选择器(命令) - 有连字符的十六进制 选中的实体

技术型方面[]

值域[]

每个UUID都可以被表示为128位整数,也就是说其支持从-(2127)(2127)-1的所有整数值。需要注意的是,上述并不指向游戏内生成的值的值域,只是为了强调这种格式的容量。

带连字符的十六进制格式各部分的名称[]

连字符的十六进制格式UUID遵循xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx的格式。

部分名称 比特位区间
起始 结束 大小 字符
time-low 96 127 32 8
time-mid 80 95 16 4
time-high-and-version 54 79 16 4
clock-seq-and-reserved 36 53 8 2
clock-seq-low 48 45 8 2
node 0 47 48 12

(这些名称只对第1、第2版的UUID有效,但是沿袭到了其他全部的UUID形式。)

版本和变种[]

UUID有五个版本。第1、2版基于当前的时间和MAC地址,第3、5版基于字符串哈希值,第4版基于完全随机的生成。“版本”值占4个位元,位于UUID字符串格式内,位置由一个“A”指定。

“B”位置是UUID的变种(格式)。占用高达1到3个位元,取决于具体变种:

  • 0xx是Apollo NCS 1.5的“变种0”,一种非常旧的UUID类型。
  • 10x是IETF RFC 4122 (Leach-Salz)的变种1。Java内为“变种2”。
  • 110是旧的Microsoft product的“变种2”。Java内为“变种6”。
  • 111是“保留变种”。Java内称为“变种7”。

Minecraft中[]

Minecraft使用了第4版,第1类(RFC)UUID,也就是说除了元数据(版本与变种)外,整串数字都是随机生成的。Java的UUID.randomUUID()函数负责处理这一项任务。

逐位展开版本

折叠版本

外部工具[]

语言

Advertisement