首页
搜索 搜索
当前位置:资讯 > 正文

【技术向】Minecraft1.16.5离线 多人游戏已禁用Bug 修复与分析|天天聚看点

2023-06-20 13:35:41 哔哩哔哩

首先剧透一下,这个Bug的本质是,游戏不小心把离线用户当作了正版用户……

似乎从6月8日开始,许多离线模式玩家在游玩1.16.5时都遇到了图上这一Bug,无法进入多人游戏。也有很多人提出了解决办法,比如打开游戏时先断网,或者加装绕过限制的Mod。这里咱在深入分析问题原因确认这是一个Bug后,向大家提供一个从根源上解决这一Bug的方法。


(资料图片)

那就是买个正版!

开个玩笑,我相信大家都是愿意支持正版的,只是暂时没有条件所以才玩的离线模式,那么废话不多说,开始介绍修复Bug的方法吧。

首先,打开.minecraft/versions/你的游戏版本/目录下的json文件,有些人可能玩的是整合包所以目录名并不是1.16.5,总之进去用你喜欢的文本编辑器打开那个json文件就行了。

打开文件后,搜索authlib,删除大括号里的size和sha1两行

注意,如果删完这两行后大括号内最后一个字符是逗号,那么也要把那个逗号删除,否则启动器会无法识别。

继续搜索,如果还有别的authlib包含了size和sha1,也要删掉,不然无法生效。(我这边PCL的只有一个需要删,而HMCL有两个)

然后,将所有的2.1.28替换为2.3.31

保存文件,重新打开启动器,开始游戏,即可发现已经可以正常进入多人游戏了。

这一方法应该对任何启动器都有效,无需断网,适配原版和任何Mod端,虽然改东西不太方便吧……适合喜欢折腾的人。

下面是关于这一Bug的分析。

在1.16.5版本所使用的认证组件Authlib 2.1.28中,认证是使用网页接口返回的error字段来判断是否认证失败,并且会无视网页接口的HTTP 401状态码

但是,现在的Mojang认证接口就算认证失败也不会设置error字段,只会返回HTTP 401

这就导致认证组件因为没有发现错误,所以将离线玩家也视为正版用户,正常返回了解析出的社交配置;又因为接口实际上并没有返回相关配置,所以多人游戏、realms、联机交流功能的启用权限全被Gson解析成false了

在1.17版所使用的认证组件Authlib 2.3.31中,认证组件会在获取到HTTP 401状态码后直接抛出异常,游戏返回离线配置,所以不会有这个问题。

1.16.5和1.17的Authlib 2.+使用的是同样的认证接口,只是部分代码逻辑不同,可以直接通用,1.18之后版本使用的是Authlib 3.+,接口和代码都有很大改动,所以不能在1.16.5上使用。

所以这就只是一个因为官方后台更新导致的Bug而已,别再说什么官方要封离线啦!