这章我们来讨论些可怕的东西。
你是否想过一个问题:如何在Minecraft中获取你的头?
答案是肯定的,你甚至可以把它拿在手上,然后.......
挂在墙上(好滑稽啊啊啊啊啊!)
(事实上真的有个JAVA服务器这么做了)
问题来了,怎么获取你的头呢?
这个时候就要用到头颅这个物品。
你应该知道,正常头颅的皮肤是Steve(史蒂夫)的头,也有骷髅、僵尸等怪物的头。
但你知道吗?你可以改变头颅的皮肤——变成其他玩家的。
头颅具有一个数据类型为文本的SkullOwner标签,你可以在这个标签内写上一个玩家的名字,然后就可以获取到这名玩家的头。比如我们籽岷大大的Minecraft正版用户名是Zi_Min,你就可以:
/give @s minecraft:skull 1 3 {SkullOwner:“Zi_Min“}
\\Java1.13以下版本\\
/give @s minecraft:player_head{SkullOwner:“Zi_Min“}
\\Java1.13及以上版本\\
(近日一外国小哥在Minecraft获得了籽岷的头,那么它是怎么.......)
需要注意的是,上述方法仅仅适用于下面两种情况:
①你是通过离线账户来游玩Minecraft的
②你是通过正版账户来游玩Minecraft的
为什么呢?因为游戏之所以能够获取到对应玩家的头颅,是因为游戏向Mojang官方服务器发送了请求,然后官方服务器再把这个皮肤数据传送回来,其过程有些类似于玩家登录服务器游玩。因此,当你在某离线或正版Java服务器中运行上述指令,腐竹就有可能在某一天无聊翻看服务器根目录的usercache.json文件时惊喜的发现:
{“name“:“Zi_Min“,“uuid“:“1aa95b71-48fc-4636-962b-e95de5071da6“,“expiresOn“:“202x-xx-xx xx:xx:xx +0800“}
(???籽岷来玩我服务器了?)
.......
等等,你在运行上述指令后,只是获取到普通的玩家头颅,或者说获取到了看起来不是籽岷皮肤的头颅?
如果你仅仅是获取到普通的玩家头颅,那大概率是你的问题:
①你写错了
②你网断了
③你用的基岩版
④你在单人游戏中尝试,且没有打开『对局域网开放』
⑤你的电脑或服务器无法连接到官方服务器
⑥你电脑的防火墙阻止了你的Minecraft访问官方服务器
但如果你获取到了看起来不是籽岷皮肤的头颅,那就肯定是这个问题:
您正在使用外置登录游玩Minecraft
什么是『外置登录』?
我们知道,Minecraft的正版玩家能够登录并显示皮肤,是因为Minecraft游戏本体向官方服务器发送了玩家的登录信息,服务器经过验证无误后再返回皮肤等信息,最终你在游戏中的角色就有了皮肤。但对于一个没有正版账号的Minecraft玩家来说,发送一个虚假的登录信息给官方服务器肯定是不行的。那该如何让盗版玩家也能够享受上皮肤的好处呢?
要解决这个问题很简单。盗版玩家之所以无法显示皮肤,是因为将『虚假的登录信息』发送给了『正版服务器』。如果我们自己搭建一个盗版服务器,然后再让Minecraft将这个『对于盗版服务器来说是正确的但对正版服务器来说是虚假的登录信息』发送给『我们自己的盗版服务器』,这样子负负得正,我们发送的信息也就成为了『正确的登录信息』,Minecraft也就可以获取到『盗版服务器』传来的皮肤,最终在游戏内显示出来。
这就是『外置登录』的原理。在真正的『外置登录』中,各大皮肤站就是『盗版服务器』,我们在各大皮肤站注册的账号就是『对于盗版服务器来说是正确的登录信息』。当我们在诸如HMCL、PCL2之类的Minecraft Java第三方启动器中输入『对于盗版服务器来说是正确的登录信息』和该信息对应的『盗版服务器』,再让启动器以『外置登录』的方式启动时,Minecraft就会尝试发送『对于盗版服务器来说是正确的登录信息』给『正版服务器』。
(等等,这样子的话哪里会验证成功啊?)
别急,好戏还在后头。
当启动器检测到Minecraft正将『对于盗版服务器来说是正确的登录信息』发送给『正版服务器』时,启动器会以迅雷不及掩耳之势,在消息还未发送到正版服务器时,就一把夺过Minecraft与『正版服务器』的通信,把这个通信从『正版服务器』上拔下来,插到指定的『盗版服务器』上面去。此时『对于盗版服务器来说是正确的登录信息』就不会发送给『正版服务器』,而是发送到对应的『盗版服务器』。『盗版服务器』在收到登录信息后,验证通过,发送皮肤等信息给Minecraft,Minecraft此时就会认为该登录信息正确,允许玩家登录游戏并显示皮肤。