Minecraft 用户名:1-16个字符,仅限三种类型;UUID 有两种写法
字母、数字、下划线。没有连字符、点或空格。UUID 带不带破折号都接受——这就是为什么一个查询失败而另一个相同的查询却成功的原因。
查找皮肤意味着将用户输入的内容转换为 Mojang 能够识别的内容,而这只有两种可能。两者都有精确的规则,而 UUID 的规则有一个“小插曲”,导致大量“未找到”的报告。
用户名规则
^[A-Za-z0-9_]{1,16}$
仅限三种字符类型:字母、数字、下划线。长度为 1 到 16。
排除项是重点:
- 没有连字符——这是人们最常尝试的字符
- 没有点、没有空格、没有
@ - 不超过 16 个字符,也不能为空
因此,服务器的显示名称、Discord 句柄或电子邮件都无法解析,即使它们看起来像名称。如果查询失败且文本包含连字符,这几乎总是原因——而连字符正是让人们转向另一种格式的字符。
UUID 规则,以及为什么它有两种写法
^[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{12}$
请注意每个 -?:每个破折号都是可选的。以下两者代表同一个账户,并且都接受:
069a79f4-44e9-4726-a5be-fca90e38aaf5 dashed
069a79f444e94726a5befca90e38aaf5 undashed
32 个十六进制数字,分组为 8-4-4-4-12。大小写也无关紧要——A-F 和 a-f 都匹配。
这很重要,因为这两种形式来自不同的地方。对玩家执行的 /data get、usercache.json、插件的配置以及 Mojang 自己的 API 在发出哪种形式上并不一致,因此你会遇到两种情况,而一个只接受其中一种形式的工具会有一半时间看起来像是坏的。
-? 是按分隔符而不是全有或全无的,因此部分带破折号的字符串也通过。这比严格正确更宽松,并且是故意的:因为有人少了一个破折号就拒绝粘贴对任何人都没有帮助。
为什么名称和 UUID 不可互换
用户名可以更改和重复使用;UUID 不能。因此,用户名查询回答的是“现在谁拥有这个名称”,而 UUID 查询回答的是“这个特定的账户,无论它今天叫什么”。
对于你存储的任何内容——白名单、计分板、数据包、头颅——UUID 是保持正确的那个。用户名是方便输入的那个。
四种动画,它们是随时间变化的姿势
查看器提供站立、行走、奔跑和飞行。这些是动画而不是静态姿势,这对于判断皮肤很重要:一个静止时看起来不错的纹理,一旦手臂摆动,可能会看起来不对劲,因为手臂的侧面——你在平面预览中永远看不到的面——会进入视野。
这就是为什么需要预览动态皮肤,而不仅仅是渲染正面和背面。