特别感谢 [FabricProxy-Lite]() 和
[CrossStitch]() 在模组代理领域的开创性工作。我们虽然为移植和适配 Neo/Forge 环境付出了相当的努力,但终究是站在巨人的肩膀上。
此模组将 Velocity 的[现代转发]()功能引入 Neo/Forge 服务器。
fabricnetworkingapi_v1),你可能需要使用 PCF 并禁用 Sponge 的转发功能有关支持的平台和整合包的更多详细信息,请参阅兼容性页面。
如上所述,PCF 实现了 Velocity 的 MODERN 转发协议,允许你将模组服务器安全地置于代理之后。
支持现代转发版本 1-4:
| 名称 | 值 | 支持的 MC 版本 |
|---|---|---|
MODERN_DEFAULT |
1 | 任意 |
MODERNFORWARDINGWITH_KEY |
2 | 1.19 |
MODERNFORWARDINGWITHKEYV2 |
3 | 1.19.1 - 1.19.2 |
MODERNLAZYSESSION |
4 | 1.19.3 及以上 |
如果你在聊天签名方面遇到兼容性问题,请报告该问题,然后将 PCF 配置中的 advanced.modernForwardingVersion 更改为 MODERN_DEFAULT。
这解决了如下错误:
io.netty.handler.codec.CorruptedFrameException: Error decoding class com.velocitypowered.proxy.protocol.packet.AvailableCommandsPacket
PCF 移植了这个 Fabric 模组包装模组命令参数的能力,允许它们通过 Velocity 发送,而无需为每个模组添加的命令参数编写自定义数据包反序列化器。
在极少数情况下,模组会在 minecraft 命名空间下注册其命令参数,或对原版参数进行修改,从而绕过 PCF 的参数包装器。在这种情况下,你可以将自定义参数的 ID 添加到 PCF 的 crossStitch.forceWrappedArguments 设置中,以强制 PCF 包装该参数。
在模组在 Vanilla 之前注入并注册其参数,导致所有参数 ID 值偏移的情况下,你可以启用 crossStitch.forceWrapVanillaArguments 设置来强制包装 minecraft 和 brigadier 命名空间。这更像是一种临时解决方案,因为偏移后的参数 ID 无法被 Velocity 读取,并且如果客户端上的参数 ID 具有相同的偏移,Velocity 命令将无法被客户端读取,从而完全阻止连接,除非你通过权限或移除添加命令的插件来禁用代理上的所有命令。
判断是否发生这种情况的最简单方法是启用 PCF 配置中的调试日志记录,并检查 brigadier:boolean 的参数 ID 是否不是 0。
常见的解决方法是让相关模组将其注册 Mixin 移动到 RETURN,并确保其参数的注册指定其模组 ID 作为命名空间。
如果你发现任何“野生”参数,请提交问题,以便我们可以将它们添加到默认配置中,或者利用提供的信息为导致问题的模组编写 PR。
如果你想在 Velocity 代理后托管现代 Forge 服务器(1.13 - 1.20.1),请查看 Ambassador:
注意:Ambassador 1.2.0-beta 或更高版本不再需要此模组,但你仍然可以使用它来获得现代转发功能。
以下假设你已经[配置好 Velocity 代理]()并拥有一个正常工作的设置。
mods 文件夹中(Jar 文件可在 [Modrinth]() 或发布页面找到)。config 文件夹中的 proxy-compatible-forge.toml,将你的转发密钥填入 forwarding.secret 配置字段。server.properties 中,确保 online-mode 设置为 false。配置文件位于 config/proxy-compatible-forge.toml,具有以下选项:
| 设置组 | 设置名称 | 默认值 | 描述 |
|---|---|---|---|
forwarding |
enabled |
true |
启用或禁用玩家信息转发。更改此设置需要重启服务器。 |
forwarding |
mode |
"MODERN" |
使用的转发类型。 |
forwarding |
secret |
"" |
用于验证玩家连接来自受信任代理的密钥。如果此设置为空,PCF 将仅处理参数包装。 |
forwarding |
approvedProxyHosts |
[] |
已批准的代理主机名或 IP 地址列表。如果连接代理的主机名或 IP 不在此列表中,玩家将被断开连接。留空以允许所有。 |
crossStitch |
enabled |
true |
启用或禁用 CrossStitch 支持。更改此设置需要重启服务器。 |
crossStitch |
forceWrappedArguments |
[] |
在此处添加任何不兼容的模组或原版命令参数类型。 |
crossStitch |
forceWrapVanillaArguments |
false |
强制包装原版命令参数类型。当上述设置变得过于繁琐时很有用。 |
debug |
enabled |
false |
启用或禁用调试日志记录。 |
debug |
disabledMixins |
[] |
要禁用的 Mixin 列表。使用 Mixin 的名称,并为其添加部分或完整包名前缀。 |
advanced |
modernForwardingVersion |
"NO_OVERRIDE" |
覆盖 PCF 决定的现代转发版本。如果遇到聊天签名问题,请将其更改为 "MODERN_DEFAULT"。更改此设置需要重启服务器。 |
客户端错误:
Invalid payload REGISTER!
Velocity:
Velocity 修复方法:将 -Dvelocity.max-known-packs=# 添加到 Velocity 的启动参数中,
其中 # 是 64 + 模组数量*1.5(向上取整)的数字。
例如:对于 40 个模组,使用 64 + 40*1.5 = 124,所以是 -Dvelocity.max-known-packs=124
Paper 服务器错误:
[00:00:00 ERROR]: Couldn't register custom payload
java.lang.IllegalStateException: Cannot register channel 'modid:channel'. Too many channels registered!
Paper 修复方法:将 -Dpaper.disableChannelLimit=true 添加到 Paper 服务器的启动参数中
注意:由于涉及的频道和模组数量众多,在加入 Vanilla 服务器时,客户端上的纹理/物品可能会不匹配。
git clone https://github.com/adde0109/Proxy-Compatible-Forge.git
./gradlew build(Windows 上为 gradlew.exe build)build/libs/ 目录中友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作
历史访问人数:66,869 | 历史访问人次:153,582
今日访问人数:18,174 | 今日访问人次:21,519
昨日访问人数:21,836 | 昨日访问人次:27,080
Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.
❤ Powered by GermMC 京ICP备17023959号-6