定位栏颜色比对
把服务器里的人都加进来,在模拟定位栏上并排查看各自的标记颜色——并直接告诉你哪几对在游戏里根本分不清。
还没有玩家
添加两位以上玩家,即可开始比对标记颜色。
这个定位栏颜色对比工具在比什么
Java 版定位栏上每一个标记的颜色都来自实体的 UUID,而不是服务器发的调色板。本工具把你添加的每个名字解析成 UUID,跑一遍客户端在跑的同一个哈希,然后把结果两两拿去比。
推导过程一段话说完:java.util.UUID.hashCode() 先把 UUID 的两个 64 位半段异或,再把结果的高低 32 位异或成一个有符号 32 位整数;低三个字节作为红、绿、蓝;绘制前每个通道再乘以 0.9。没有随机数,没有服务端状态,也没有对照表。想自己复现的话,完整推演一步一步都写着。
「比对」正是单次查询给不了的东西。纸面上不同的两个十六进制值,落到几像素宽的标记上可能完全分不出来,所以本页会测量队伍里每一对颜色之间的距离,把太接近的挑出来。十二个人就是六十六对,靠肉眼过不现实。
为什么队友之间会撞色
24 位一共 16,777,216 种颜色,听上去远远够用。但实际上有两件事在吃掉这个数字。
你比的是圆点,不是色号。
标记是个很小的图标,还是在你干别的事情时用余光扫到的。那 1600 多万个值里有几十万个都会塌缩成「一种灰蓝色」,所以肉眼能区分的结果数远远小于可能的结果数。
组合数涨得比人数快。
四个人是六对,十个人就是四十五对。每多一个人,出现撞色的概率上升得都比直觉快得多——就是常说的生日问题。
0.9 的加深也在帮倒忙:它把每个通道的上限从 255 压到 229,整个色彩空间往黑的方向收了一点。这些都不是 bug。这套颜色的设计目标是稳定且零成本,而不是保证唯一,所以为撞色做好准备本来就是组队的一部分。
哪些输入会查不到
名字要经 Mojang 公开档案 API 解析,Mojang 不认识的东西自然查不出来。基本都是下面三种。
离线模式(破解)服务器。
这类服务器从不问 Mojang,而是按名字算一个 UUID——版本 3,取
OfflinePlayer:<username>的 MD5。它是真实且稳定的 UUID,也会产生真实且稳定的颜色,但没有任何 API 能替你查出来。找服务器要到之后,直接粘 UUID 而不是名字。背景见在线模式与离线模式的 Minecraft UUID。基岩版玩家。
基岩版没有 Java UUID,颜色也不由它推出来。基岩版每次会话随机分配颜色,玩家每次重进都可能不同,事先无从预测。基岩版有什么见基岩版定位栏。
插件昵称和被回收的名字。
插件设的聊天昵称不是账号名,而定位栏认的是账号 UUID,跟头顶显示什么无关。名字还可能被释放并被别人重新注册,所以老名字现在可能对应一个陌生人。拿不准就直接加 UUID。
查出撞色之后怎么改
这个定位栏颜色对比工具标出一对之后,两人中总得有一个改。有三件事要知道,都在 Java 版这边。
覆盖航标颜色。
/waypoint modify <target> color <name>接受十六个具名颜色之一,color hex <RRGGBB>接受任意六位十六进制值。用waypoint 命令生成器按你的版本拼好,之后用color reset撤销。或者用队伍颜色。
玩家的队伍颜色会在定位栏上覆盖 UUID 默认色,要一次性处理整支小队时通常更省事。如何修改定位栏颜色把几条路子并排比了一遍。
注意版本。
定位栏是 Java 版 1.21.6 加入的。从 Java 26.2 起颜色名必须小写加下划线——
dark_purple可以,DarkPurple不行。关闭定位栏的那条规则在快照 25w44a(1.21.11)里从locatorBar改成了locator_bar;各版本名字见定位栏 gamerule。
组队配色常见问题
两个玩家有可能拿到完全相同的颜色吗?
会。不同 UUID 完全可能哈希出同样的三个字节,没有任何机制阻止,只是概率很低。视觉上难以区分的组合比完全相同常见得多,所以这个定位栏颜色对比工具测的是距离,而不是判等。
覆盖颜色后所有人看到的都会变吗?
会。航标颜色存在实体上,而不是各自客户端上,所以一旦设定,所有玩家看到的都是覆盖后的颜色。
是不是每个队友都得执行一遍命令?
不用。/waypoint 需要权限等级 2 且开启作弊,一个管理员就能替所有人设定。而在本页查颜色什么都不需要。
生物和盔甲架也能查吗?
有 UUID 就能。任何会发送航标的生物实体,颜色都出自同一个哈希,只是生物没有用户名可查。
为什么截图里取到的颜色不一样?
定位栏会给标记加深,图标本身还带描边,所以从截图取色通常会差上一两度。本页算出来的才是客户端的起点值;未加深的原色可以在定位栏颜色查询里看到。