新速度

新速度

一个兼容层,允许在模组化neoforge服务器上进行velocity代理现代转发。

管理

NeoForge Logo

NeoVelocity

NeoVelocity 为运行在 Velocity 代理后端的 NeoForge 服务器启用 Modern Forwarding(现代转发) 支持。

如果没有此模组,位于代理后端的 NeoForge 服务器通常会看到所有玩家都从 127.0.0.1 连接,或者无法正确验证 UUID/皮肤。此模组实现了 Velocity 的原生转发协议,以确保 IP 地址、UUID 和游戏档案能正确传递给服务器。

功能特性

  • Modern Forwarding(现代转发): 完整支持 Velocity 的安全转发协议。
  • 自动重载: 配置更改(例如更新密钥)会立即生效,无需重启服务器。
  • Sinytra/Fabric 兼容性: 会自动检测 fabric_networking_api_v1。如果你运行的是 Forgified Fabric API 并遇到登录断开连接的问题,此模组内置了一个变通方案(请参阅配置中的 login-custom-packet-catchall)。

安装

  1. 安装模组 将 jar 文件放入服务器的 mods 文件夹中。

  2. 服务器属性 你 不需要 在 server.properties 中设置 online-mode=false,因为此模组会直接介入登录流程。但是,如果你遇到验证循环问题,将其设置为 false 也是安全的,因为代理会处理验证。

  3. 首次运行 启动一次服务器,以在 config/neovelocity-common.toml 生成配置文件。

  4. 配置密钥 在你的 Velocity 代理 根目录中找到 forwarding.secret 文件。复制其内容并粘贴到你的 NeoForge 服务器上的 config/neovelocity-common.toml 中。

    • 选项 A: 直接将字符串粘贴到配置中。
    • 选项 B: 将配置指向包含该密钥的文件路径。

配置与兼容性

大型整合包(Velocity 配置)

Velocity 默认将已知整合包(known packs)的数量限制为 64。如果你的整合包超过此限制,玩家将被断开连接,并且 Velocity 控制台会显示 QuietDecoderException: too many known packs。

要解决此问题,请将以下标志添加到你的 Velocity 代理 启动参数中,并将数值设置为高于 64:

-Dvelocity.max-known-packs=64 # 调高此数值(可以尝试 128 或更高)

模组兼容性(“Catch-All” 设置)

默认情况下,NeoVelocity 假定 所有 自定义登录数据包都是 Velocity 验证尝试。

然而,Fabric Networking API 允许模组发送它们自己的自定义登录数据包。为了让这些模组正常工作,你必须在配置中将 login-custom-packet-catchall = false。

工作原理: 当设置为 false 时,NeoVelocity 会首先检查数据包的签名。

  • 如果密钥匹配: NeoVelocity 会认领该数据包并处理登录。
  • 如果密钥不匹配: 该数据包将被忽略并传递给其他模组。

警告: 如果在此设置为 false 时你的转发密钥不正确,NeoVelocity 将忽略 Velocity 数据包。服务器会将其视为未知的垃圾数据,并在日志中显示 “Incompatible mod detected” 错误并断开你的连接。

安全警告

不要将你的 NeoForge 服务器端口直接暴露到互联网。 你必须配置防火墙(iptables/UFW),使其仅接受来自你的 Velocity 代理 IP 地址的连接。如果后端端口开放,恶意用户可以通过知道转发密钥来绕过验证。

故障排除

如果玩家在登录过程中被踢出,请检查断开连接消息并与下方内容进行比较。

  • “NeoVelocity configuration error. Check server logs.” 模组已安装,但你尚未配置密钥。

    • 修复: 打开 config/neovelocity-common.toml 并粘贴你的 forwarding.secret。
  • “Unable to verify proxy data integrity.” 你的 Velocity 代理中的密钥与你的 NeoForge 服务器配置中的密钥不匹配。

    • 修复: 再次复制代理中的 forwarding.secret 内容,并确保将其粘贴到 NeoVelocity 配置时没有多余的空格。
  • “This server requires you to connect via a Velocity Proxy using Modern Forwarding.” 服务器未收到任何转发数据。

    • 原因 A: 你正尝试直接连接到后端服务器端口。你必须通过代理 IP/端口进行连接。
    • 原因 B: 你的 Velocity velocity.toml 被设置为 player-info-forwarding-mode = "none" 或 "legacy"。你必须将其设置为 "modern"。
  • “Incompatible mod detected during login handshake.” 另一个模组(通常是 Fabric Networking API)修改了登录数据包,导致签名检查失败。

    • 修复: 打开 config/neovelocity-common.toml 并设置 login-custom-packet-catchall = false。

更多文档

有关设置代理、配置防火墙和调整网络设置的详细指导,请参阅官方 Velocity 文档。

贡献

源代码可在 GitHub 上获取。如果你发现了一个 bug,或希望建议支持其他代理协议,欢迎提交 issue 或 Pull Request。