异步聊天移植版

异步聊天移植版

AsyncChat-Backport - 将Async Chat模组的非官方回溯移植至我的世界1.20.4,通过在专用后台线程处理消息来修复与聊天相关的卡顿问题。

性能

📖 概述

在原版 Minecraft 中,聊天消息处理——包括接收、解析、格式化以及安全检查——是在主渲染线程上同步执行的。当网络延迟较高或服务器响应缓慢时,这些操作可能会阻塞渲染,导致明显的帧率下降、卡顿和“尖峰”帧时间,尤其是在消息频繁交换的多人游戏环境中。

本模组通过将所有聊天处理卸载到专用的后台线程来解决此问题。

🔄 1.20.4 中有什么变化?

原版 Async Chat 模组针对的是旧版 Minecraft,当时主要的聊天拦截点是 handleChatMessage(PlayerChatMessage, ChatType.Bound) 方法。

在 Minecraft 1.20.4 中,Mojang 移除了此方法,并用一个新的签名取而代之:
handlePlayerChatMessage(...),该签名现在包含一个 GameProfile 参数。此更改反映了玩家身份和聊天类型管理方式的内部更新。

⚙️ 工作原理

  1. 拦截  – 当聊天消息从服务器到达时,模组会立即拦截它。

  2. 卸载  – 消息被移交到单独的后台线程。

  3. 异步处理  – 所有开销较大的操作(解析、验证、历史记录更新等)都在此后台线程上异步运行。主渲染线程保持不受干扰,确保持续流畅的 FPS。

  4. 安全渲染  – 后台处理完成后,仅将线程安全的渲染数据传回主线程,进行轻量级的 UI 更新。聊天消息以最小的性能影响呈现。

📜 致谢与许可合规

原项目: totorewa/async-chat-mod: 通过在单独线程上处理聊天消息来阻止渲染卡顿

此向下移植版本: 基于原作品改编,适用于 Minecraft 1.20.4

许可: 原项目根据 MIT 许可证 授权。我的项目则根据 GNU 通用公共许可证 v3.0 授权。

重要说明: 这是一个独立的向下移植版本,与原作者无任何关联。核心概念的所有功劳均归于 totorewa。