---
在1.18版本中您不再需要此模组
Mojang已经修复了其API中的错误,该错误导致返回错误而不是空列表。当加入世界时,Minecraft将获取方块列表。尤其是在您的网络连接较慢时,此模组仍然可以通过减少HTTP请求的时间来提高世界加载速度。
这位Mojang员工的评论证实了该错误已被修复:
此错误仍然影响1.17和1.16版本,但仅在收到第一条聊天消息时:
技术细节:当接收聊天消息时,Minecraft在渲染线程中发送HTTP请求来检查您的玩家方块列表。当前帧在此请求完成之前不会完成渲染,从而导致卡顿。此模组允许聊天消息通过,直到可以获取到方块列表为止。
为什么现在发生这种情况而以前没有呢?:Mojang的API发生了一些变化。加入世界时,方块列表通常会正常加载,但是对于已迁移到Microsoft账户的用户,Mojang的API开始返回错误,导致在接收消息时以2分钟的间隔获取方块列表。
关于错误发生原因的注释
// 代码的简化视图。
private static final long BLOCKLIST_REQUEST_COOLDOWN = 120;
private Instant nextRequest;
private final blockList Set<UUID>;
// 当接收到聊天消息时调用此方法
public boolean isBlockedPlayer(UUID playerID) {
// 如果我们尚未获取方块列表,则获取它
// 注意当出现错误时,fetchBlockList返回null
//
if (this.blockList == null) {
this.blockList = fetchBlockList();
// 如果仍然没有获取到,则假定玩家未被屏蔽
if (this.blockList == null) {
return false;
}
}
return this.blockList.contains(playerID);
}
public Set<UUID> fetchBlockList() {
// 至少每2分钟检查一次。
// 这就是为什么每隔2分钟或更长时间才会发生卡顿的原因
if (this.nextRequest == null || Instant.now().isAfter(this.nextRequest)) {
return null;
}
// 重置2分钟计时器
this.nextRequest = Instant.now().plusSeconds(BLOCKLIST_REQUEST_COOLDOWN);
try {
// 发送HTTP请求
BlockListResponse response = minecraftClient.get(routeBlocklist, BlockListResponse.class);
return response.getBlockedProfiles();
} catch (/<em> 异常 </em>/) {
// 如果出现错误则返回null
return null;
}
}
已复制!
如果您想要亲自查看未修改的内容,请查看com.mojang.authlib.yggdrasil.YggdrasilUserApiService,记住这些方法在渲染线程上调用,因此会阻塞帧的完成。
来自Modrinth
2.1.0
chatlagfix-1.16.5+1.17.1-2.1.0.jar下载mc1.17-2.1.0#Release
展开
版本: mc1.17-2.1.0
支持游戏: 1.16.4, 1.16.5, 1.17, 1.17.1
类型: Fabric
Release
下载次数: 5,829
2.0.2
chatlagfix-1.16.5-2.0.2-0.11.3.jar下载mc1.16.5-2.0.2#Release
Bring back support for 1.17 and add support for 1.16
展开
版本: mc1.16.5-2.0.2
支持游戏: 1.16.4, 1.16.5
类型: Fabric
Release
下载次数: 248
2.0.2
chatlagfix-1.17.1-2.0.2-java16.jar下载mc1.17.x-2.0.2#Release
Bring back support for 1.17 and add support for 1.16
展开
版本: mc1.17.x-2.0.2
支持游戏: 1.17, 1.17.1
类型: Fabric
Release
下载次数: 253
收录