安静协商者
安静协商者是一个轻量级、仅客户端的 NeoForge 模组,它允许模组客户端连接到原版或轻度模组的服务器(例如仅安装服务端模组的 Fabric 服务器),而不会触发 NeoForge 严格的网络协商过程。
工作原理
通常,NeoForge 会强制执行握手协议,以确保客户端和服务器在模组化负载和功能上达成一致。此模组在连接到不支持 NeoForge 的服务器时,会静默地抑制该协商,使连接能够顺利通过而不会断开或报错——因此,它通过保持“安静”来“协商”。
此外,连接过程中可能出现的其他错误,例如数据包解码错误或意外的数据包大小,也会被忽略,从而允许客户端无问题地连接。
具体来说,安静协商者使用 Mixins 来修补 NeoForge 客户端代码,专门针对那些在连接到不支持 NeoForge 的服务器时会产生错误或断开的烦人方法。
此外,所有补丁都是可配置的,允许用户根据需要启用或禁用特定的补丁。
使用场景
此模组适用于:
- 使用 NeoForge 客户端但想加入原版服务器的玩家,防止因缺少网络协商响应而导致的断开连接。
- 通过混合或代理网络连接的玩家,其中入口点是原版或非 NeoForge 服务器,避免客户端期望 NeoForge 时握手失败。
- 使用全栈 NeoForge 模组客户端的模组包开发者或测试者,他们希望连接到未模组或不同模组的服务器,而无需每次都禁用模组。
- 尝试加入没有 NeoForge 的服务器的玩家,同时仍安装了期望模组服务端的模组(例如,具有网络功能的世界生成、物品或 GUI 模组)。
- LAN 或休闲多人游戏设置,其中只有客户端运行带有完整功能模组的 NeoForge,而服务器未模组或运行不同的模组加载器。
制作生产就绪的代理网络?
不要使用此模组!您可能会遇到模组兼容性问题,因为安静协商者只是抑制错误,并不能神奇地使不兼容的模组工作。
与其使用传统代理将连接路由到后端服务器,我建议为每个 NeoForge 服务器分配自己的公共 IP 地址/域名。
如果 IP 地址不足,可以使用反向代理,如 Gate Lite 模式 或我自己的 mc-router,根据握手数据包的服务器地址字段路由连接。
要在服务器之间转移玩家,请使用 Minecraft 1.20.5 中引入的原版 /transfer 命令,或安装 服务器重定向模组。
包含的补丁(自 v1.0.1 起)
-
bypassNegotiationErrors- 允许客户端通过忽略协商错误连接到不支持 NeoForge 的服务器。 -
bypassCustomFeatureFlags- 连接到服务器时忽略自定义功能标志,允许客户端无问题连接。 -
ignorePacketDecodingErrors- 连接到服务器时忽略数据包解码错误,允许客户端无问题连接。 -
ignorePacketHandlerErrors- 连接到服务器时忽略客户端数据包处理错误,允许客户端无问题连接。
重要说明
连接安全性
安静协商者在设计上是安全的:它仅在服务器被识别为非 NeoForge 时激活,完全不影响正常的模组到模组连接。配置简单且可切换,使用户能够精细控制何时允许安静协商。
模组兼容性
某些模组可能依赖于成功的协商或期望服务器端支持特定功能。在这些情况下,功能可能会静默中断或导致混乱的行为。
请谨慎使用,避免在未运行 NeoForge 的服务器上放置或交互模组方块、物品或 GUI。此模组实现了连接兼容性,但无法神奇地使不兼容的模组工作。
我们在 docs/incompatibility.md 中列出了已知的不兼容模组列表。