登陆注册
66052300000122

第122章 UUID

在Minecraft JAVA 1.7.10版本更新中,Mojang认为正版玩家是可以更改用户名的。但如果玩家可以更改用户名,那么一个用户名就不能代表着一个玩家了,因为这名玩家可以更改他的用户名。解决这个问题的唯一办法,就是给玩家添加一个从按下注册那一键开始就不能改变的识别码,而且两个玩家的识别码不能重复。

Mojang想来想去,最终决定使用网络上常用的Universally Unique Identifier来作为玩家的不可改变识别码,这就是作者在之前经常提到的UUID,它的中文名叫做“通用唯一识别码”(按理说学过JAVA的应该都知道)。

UUID有很多种形态,最常见的形式就是:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

因为都是用x来表示,所以第一眼是不知道这到底是多少进制的。这其实是UUID的十六进制表示形式。准确的来讲,是“连字符十六进制”形式(String),就是16进制的UUID分割成了8+4+4+4+12的5段,相邻两段用连字符连接上。

当然,把连字符去掉就是纯洁的十六进制形式(String without hyphens)了:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

当然去掉连字符你有很大的可能会抄错,所以还是建议抄UUID之前加上个连字符。

神奇的是,如果你的UUID是这样的:

00000001-0001-0001-0001-000000000001

那么你就不用在乎前面的那么多0了,可以直接省略掉,变成:

1-1-1-1-1

这是一个非常人性化的设计,也非常符合数学。

当然如果是10000001-1001-1001-1001-100000000001这样的,可不要想着缩写成:

11-11-11-11-11

不然代码运行的时候会以为这个UUID是00000011-0011-0011-0011-000000000011的缩写。

而且这仅限有连字符的16位UUID。

现在你知道了这种表现形式的UUID一共有32位(除去连接符),那么问题来了,之前的UUIDMost(UUID高位)和UUIDLeast(UUID低位)到底是啥呢?

在解答之前,作者建议你先去找一个进制转换器,以方便现学现做。

以刚才的00000001-0001-0001-0001-000000000001举例,现在它是16进制。

把前面3段和后面两段分开,并分别划成10进制,变成:4295032833和281474976710657这两个数。

这两个数就是这个UUID的高位以及低位了。其实高位以及低位就是将16进制的UUID切成两半然后划成10进制得出的数,说明白点,就是:

xxxxxxxx-xxxx-xxxx 这一段转换成10进制就是UUID Most

xxxx-xxxxxxxxxxxx 这一段转换成10进制就是UUID Least

但是别忘记了,如果没有特别指明,你是不知道一个16进制的数字到底是正的还是负的。

原因的话,百度一下,你就知道(毕竟这是Minecraft指令教学,不是计算机课)。

所以1.16版本以前的指令都是叫你填UUID Most以及UUID Least,而不是16进制的UUID,虽然在后台的时候是使用16进制的UUID。

你肯定知道(只要你不是跳着看的),在1.16版本更新中,UUID再也不是16进制表现形式,也不是高位以及低位了,而是使用了一个全新的表现方式:整型数组(int-array)

其样式就是之前第八十八章讲JSON时提到的数组(array)。

比如:[I;-678432868,1549618207,-1367000395,-2137777200]

好像这和1.16版本之前的UUID没有太大关系。

但如果你用过之前作者提供的一个UUID转换器(www.soltoder.com/mc-uuid-converter/),那么你就知道,1.16版本的UUID与之前的UUID是可以转换的,不然正版玩家的UUID就得重新设了。

如果你不想了解的话,你是可以跳过这一段的,去看看UUID到底该如何获取。

但如果你想了解的话,不妨也来看一看。

如果你仔细观察这一串数组,你就会发现这4串数字是有正负号的,并且假设你之前用过那个UUID转换器,并按了那“随机”好多次,估计你就会发现这四串数,0到9都有。

这些证据证明,这四串数,是十进制。

既然是十进制,那就好办了。根据UUID Most以及UUID Least的经验,这四串数,极有可能是16进制的UUID平均分成4段再分别划成十进制的数。

为了验证我们(作者)的猜想,这里作者随机了一个UUID:

16进制——09fa22c0-807d-4a29-b0fa-a6513fab4822

数组形——[I;167387840,-2139272663,-1325750703,1068189730]

将09fa22c0-807d-4a29-b0fa-a6513fab4822的连接符去掉,再平均分成4段,并取最前面的那一段,也就是:

09fa22c0

划成十进制就是:167387840

真相大白!

1.16版本的数组UUID就是将16进制形态的UUID平均分成四段再分别划成十进制最后组合成一个数组!这比那些在网上看见人问就扔一个网址的人好了不知道多少倍!

(哎作者,你不是之前也扔过吗?)

为了满足某些强迫症,这里作者就将下面3份给划成十进制了。

等等,遇到了一个小问题,这个负数问题,该怎么办?

百毒一下,你就知道。

说了这么多UUID,那么UUID该怎么获取?

还记得之前作者说过可以通过玩家的上线和下线加上命令方块的输出来查看一个玩家的UUID吗?

这的确是一个方法,但效率很低。

如果你是一位腐竹,在JAVA开着一个服务器,你可以到服务器的根目录找到一个名叫usercache.json的文件,里面有大多数的服务器玩家的UUID。

但如果是单人离线呢?

令人震惊的是,国外有很多网站可以通过输入玩家的名字以及UUID来查询一个JAVA正版玩家的皮肤、UUID等信息,甚至可以知道这个玩家去过哪些服务器,这些服务器现在有多少人在线,他的游戏时长是多少!虽然不知道这些数据是怎么获取的(极有可能是爬机装置),但这也方便了我们查询自己的UUID(以及别人的)。

当然只能是JAVA正版的,基岩版以及国服还有盗版的话.......

那就只能使用上述的命令方块获取方法了。

以下是网址:

mcuuid.net

namemc.com

但别忘了,实体也有UUID。

实体的UUID就可以通过指令获取了。

当然那是下一章或者是下下亿章的事情了。

哦对了,正版UUID还可以通过Mojang给出的api来获取,具体为:

api.mojang.com/users/profiles/minecraft/一个正版玩家的用户名

比如这里拿一个用户名叫做Minecraft的正版玩家举例,输入api.mojang.com/users/profiles/minecraft/Minecraft,你会获得一串字符,具体为:

{“name“:“Minecraft“,“id“:“b2732392fae140c3b836a066c6debd8f“}

其中的id就是这名玩家的16进制无连接符UUID了。

同类推荐
  • 英雄联盟之竞技大帝

    英雄联盟之竞技大帝

    公元2291年,世界上出现第一部全息影像游戏【英雄联盟之竞技大帝】这个游戏再也不是依靠手速和意识,各个方面极限升级。幻影步伐,极限走位,神级预判,在此一个接一个大神雄起。到底谁将登上第一任竞技大帝的宝座,谁又将埋骨黄沙。
  • 网游之疯狂另类

    网游之疯狂另类

    从dota跨入网游门槛,曾经的传说在新的战场上同样书写无法复制的辉煌。如果你魅力0而受到了NPC的种种鄙视,你还能否继续下去?无奈的就职造就另类的疯狂。
  • 网游之时来运转

    网游之时来运转

    你可曾见过每刀都能暴击的刺客?你可曾听过每只普通怪物死后都能掉落极品装备的传说?王爽30级时觉醒逆天天赋,从此横扫垃圾玩家,越级吊打BOSS,收揽天下美女NPC追随。最终财色兼收,成为一代网游界的传说。
  • 秋天不再回来

    秋天不再回来

    魔兽世界游戏中的人物不会少于水浒,漂亮的女人也不乏其类,而最让人仰慕的是吉安娜?普罗德摩尔,她集美丽、职慧、勇敢、善良和领导力于一身,她和阿尔萨斯王子凄惨的爱情故事又让多少人叹息。殊不知就在阿尔萨斯被圣光所制裁的时候,他们爱情的结晶悄然降世,他是吉安娜儿子,当然也是恶魔的儿子,他成为了一个孤儿。就在这个高贵的孤儿,长大成材之时,一个巨大的阴谋笼罩了他,而背牵涉到的是整个暴风城、整个联盟、乃至于整个艾泽拉斯大陆。血与火、生与死、善与恶、对与错,就在这个秋天演绎着……我是一区-达纳斯服务器-联盟-寂寞公会-法师-墙外行人。
  • 网游之欧皇无敌

    网游之欧皇无敌

    甲玩家:“嘿,你听说了吗?就在昨天晚上发生了一件大事!夜神又爆出来一个绝品饰品,还是全服唯一的一个饰品,叫什么猎……猎……”“猎魔者的庇护,兄弟。而且你的消息也太out啦,今天早上猎网你还没有看吧?”乙玩家一脸嫌弃的看着甲玩家。被乙玩家嫌弃的目光看的脸皮有些挂不住的甲玩家恼羞成怒:“明明是昨天晚上才发生的事,怎么就out了?猎网又有什么大事发生吗?不会吧”“啧,说了还不信,就在今天早上,夜神刷boss,掉落了宠物蛋,开启了宠物系统,虽然只是掉了一个普通的……”乙玩家话还没说完就被甲玩家的惊呼声打断了,“什么?竟然宠物系统开启了,不说了,我要去刷boss,希望可以掉落宠物蛋!”甲玩家一边往野区跑,一边对乙玩家喊道。“………就你这样的菜鸡确定不是被boss刷?”看着跑远的甲玩家,乙玩家一脸无语的说道
热门推荐
  • 赖上坏坏甜妻

    赖上坏坏甜妻

    【极宠极虐,重口味】他,名副其实的富家子弟。她,落难的富家千金。她偷了他的证件成了名副其实的富家少奶奶,所有人都知道,他宠她如痴,有人就是不知死活的要挑战,最后的下场就是......哪怕你是他亲娘。
  • 重生校草0a

    重生校草0a

    “噗——”男人望着插进自己胸膛的匕首,喷出一口血来。随即恶狠狠的看向那生的绝美的女子,……
  • 造化传承

    造化传承

    这是一个关于传承的故事。故事从地球开始,为了给妹妹治病,罗铮参加了一个宇宙探险计划训练营。十年后,计划成行。通过虫洞穿越,探险外星域的飞船向数百亿年光年外的目的地飞去。在飞行的过程中,遭遇意外事故,罗铮成为唯一的幸存者。他来到了一个不可思议的修仙世界,这是一个和地球完全不同的世界,已知的科学常识都被颠覆了。在这个世界上他如何生活,又一步步成为强者呢?让我们拭目以待。
  • 我在游戏里还债的日子

    我在游戏里还债的日子

    一不小心喝多了,便为心尖上的宝贝挥挥金。第二日酒醒却发现负债了两千万……
  • 黑暗迪迦降临诸天

    黑暗迪迦降临诸天

    写主角意外得到黑暗神光棒,成为黑暗迪迦穿越诸。
  • 海贼之幻魔大将

    海贼之幻魔大将

    吃下幻术果实,以幻境影响现实,第一卷简单叙述,精彩内容在第二卷!(简介无力,请多包涵)
  • 山野末世行

    山野末世行

    不一样的丧尸,不一样的末日。既不是称霸的征程,也不是玄幻的故事。讲一段仙凡较量,寻一个山野村姑。要你静下心来,才能看的进去。看清楚张九这个人,看明白修仙这个事。
  • 栖于安然

    栖于安然

    为了完美解决组织下达的那个难题,即时任务在凶险她也没有拒绝的余地,这个任务于她其实无关,却被小人用极毒恶的巫术将她的灵魂枷锁在那样东西上。在把任务目标护送到无望海域途中,突遇大风暴,海面翻涌,电闪雷鸣。最终她所乘坐的轮船沉于海底,随同的二十个人一并与船淹没在波涛汹涌的海水里。不知是幸运与否,她和那东西被裂开的时空裂缝吸了进去,她的肉身在时空交替中被撕成碎片,而灵魂居然附在了正在降生的婴儿体内。直至最后,叶栖终究还是没能逃过爱之一字,没能冷漠到底。终究是在意他的,原来她也是能爱的......当一个人有了牵挂,那么,以前觉得无所谓的事也变得沉重珍贵起来。
  • 时空错乱之爱魂

    时空错乱之爱魂

    蓝雨轩,一个因爱而弃生的少年,结果非但没有死,反而来到一个新的世界,Weina。与地球格格不入的世界观。在Weina,蓝雨轩结识了众多新伙伴,而然一系列不可思议的事情也渐渐展开。为了生存,蓝雨轩只能选择战斗,在战斗之中,蓝雨轩的能力也被挖掘了出来,能从不同的时空召唤武器,甚至可以穿越时空……
  • 冷艳女杀手的复仇之行

    冷艳女杀手的复仇之行

    五年前,一次任务失败,四个挚友葬身于机关重重的丧尸地下室,只有她一人幸存了下来,面对挚友们的意外离去,几乎接近精神崩溃,消沉了一段日子,她誓死要找到当年制造地下室丧尸事件的凶手,最后化身成为各个地下黑组织听到名字都感到唏嘘的冷艳杀手,自由、独来独往、不需要任何伙伴、拿钱替人办事就是她的作风,在复仇的道路上她将会有什么样的邂逅,而几个合作上的伙伴将会带给她什么样的改变,当年丧尸地下室的凶手最后能否找到..........