MC Toolkit

指南 / 命令与数据

Minecraft 用户名是 1–16 个字符,且只由三种东西组成;而 UUID 有两种写法

字母、数字、下划线。没有连字符,没有点,没有空格。而 UUID 带不带连字符都能被接受——这就是为什么同一次查询,一次失败,一次却成功,UUID 由 32 个十六进制字符组成,按 8-4-4-4-12 分组,大小写都能识别。

查询皮肤,就是把某个人输入的文本变成 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 都能匹配。

这一点很重要,因为这两种形式来自不同的地方。usercache.json、插件的配置文件和 Mojang 自己的 API 在输出哪一种上并不一致——而玩家身上的 /data get 输出的两者都不是,而是一个由四个整数组成的数组([I; …])——所以两种你都会遇到,而一个只接受其中一种的工具,有一半时间看起来就是坏的。

-? 是逐个分隔符判断的,而不是全有或全无,所以一个只带部分连字符的字符串也能通过。这比严格正确要宽松,而且是刻意为之:因为某人少打了一个连字符就拒绝一次粘贴,对谁都没好处。

为什么用户名和 UUID 不能互换

用户名可以更改,也可以被重新使用;UUID 不能。所以用户名查询回答的是“现在谁在用这个名字”,而 UUID 查询回答的是“这个特定的账号,无论它今天叫什么”。

对于任何你要存储的东西——白名单、计分板、数据包、头颅——UUID 才是始终正确的那一个。用户名则是那个打起来方便的那一个。

四种动画,它们是随时间变化的姿势

查看器提供 idle、walk、run 和 fly。这些是动画而不是静态姿势,这在判断一个皮肤时很重要:一个静止站着时看起来不错的材质,一旦手臂摆动起来就可能显得不对,因为手臂的侧面——那些你在平面预览里永远看不到的面——会进入视野。

这就是要在运动中预览皮肤、而不是只渲染正面和背面的理由。

皮肤查看器 →

更多指南

查看全部 →