1.21.X 教程 【开发日志】接手 1.21 群组服改造:XaerosWorldMap 地图错乱、ViaVersion索要数据那些坑

  • 论坛不知不觉已经有一年运行时长咯~ 绝对不跑路哒~ 加入我们的Q群,881291443!

V396 Centauri

New member
2026/07/13
1
0
1
中国
金粒
5个
钻石
5颗
  1. 因为实在挤不出大块时间,这几天的日志只能攒到同一天写了。虽然忙得焦头烂额,但我还是毅然接手了朋友的服务器并着手全面改造。
    先交代一下服务器规模:这是一个典型的群组服,架构为 1 个 Paper 端(登录认证/大厅) + 1 个 Velocity 代理端 + 10 个 Fabric 子服,游戏版本全部统一在 1.21。版本低下且要求尽量少动原来的东西,难度可想而知。
    IMG_20260713_223609.jpg
    6月29日
    第一个改造目标:解决 XaerosWorldMap 和 XaerosMinimap 模组的问题。
    这两个地图模组放在服务端会导致客户端也必须安装它们,否则直接拒绝连接。原因在于 Fabric 的服务端模组注册表极其严格,服务端有而客户端没有的模组会被判定不匹配。
    更麻烦的是群组服的特性:如果只让玩家客户端装这两个地图模组,跨服时地图数据会分不清归属,直接把不同子服的地图混在一起,各种错乱。
    这里用遥远地平线做演示,原理一样的。
    Minecraft Screenshot 2026.07.13 - 22.54.19.05.png
    6月30日
    朋友表示这两款地图模组属于刚需,不能砍。查了一圈发现,只有 Paper 核心才有相关的修复插件,而且这个插件没办法通过任何兼容层模组(比如 BukkitFabricLoader)移植到 Fabric 端上,纯粹是架构鸿沟。
    Desktop Screenshot 2026.07.13 - 18.55.21.94.png Desktop Screenshot 2026.07.13 - 18.55.57.31.png 7月1日
    最终还是找到了一个变通方案,但这个方案并不适合所有服务器。如果有你们真的急于解决,我再说出来。
    7月2日
    第二个改造:服务器安全性。
    后端绝大部分都是 1.21 的 Fabric 服,说实话,原生环境基本和安全绝缘。我的策略是先易后难:

    · 给负责登录认证的 Paper 服上一整套安全插件,把防线前移;
    · 在 Velocity 代理端装上 LuckPerms 做全局权限管理。
    然后发现朋友其实在所有 Fabric 子服都装了 LuckPerms,但没配置,也没装让 LP 适配一些原版指令的 vanilla-permissions 模组。
    Desktop Screenshot 2026.07.13 - 18.57.44.11.png
    7月3日
    着手配置 LP 数据库的时候踩了深坑:兼容 1.21 的 LuckPerms 版本并不新,配置文件采用的还是老旧的 HOCON 格式。照着正确格式反复配置数据库都不生效,排查了很久才定位到是格式解析问题。
    IMG_20260713_223957.jpg
    7月4日
    数据库配置依旧无解,无奈之下只好回归原始方法——逐个子服手动分配权限。好在我们很少给玩家下发权限,勉强能接受。
    接着给所有 Fabric 子服加上模组:基础的反作弊、用于指令二次确认的 CommandSafety、保证默认无 OP 的 OpLock。至此,终于完成了从“给 OP”到“给权限”的转变,杜绝了因误给 OP 导致的隐患。
    Desktop Screenshot 2026.07.13 - 18.58.53.74.png
    7月5日
    第三个改造:VPN 拦截与优化,这也是最失败的一环。
    原本使用的禁止 VPN 插件竟然默认阻止中国玩家进入,改了配置文件也毫无作用,只好换成 FoxGate 。
    Desktop Screenshot 2026.07.13 - 19.00.03.20.png
    优化方面,除了增加 ModernFix(现代修复) 和 CrashExploitFixer 之外,不敢再多加。尤其是“奇观服”——这个子服因为塞了大量新增方块/生物的模组,模组冲突严重,最终只能忍痛移除 C2ME 和一部分优化模组,直接废掉了一个 Fabric 端的部分优化能力,非常可惜。

    7月6日
    没时间,鸽了。

    7月8日
    前一天只做了一些模组冲突测试。今天开始第四个改造:给 AuthMe 登录插件加一个登录界面。
  2. 然而 Paper 核心太老,新版 AuthMe 的登录界面配置根本用不了,连专门的界面插件都没法用。升级 Paper 核心后发现 Paper 核心与游戏版本强绑定,还很难换回去。
    Desktop Screenshot 2026.07.13 - 19.04.02.14.png 最后只能给 Paper 和代理端都装上 ViaVersion 与 ViaBackwards,既解决了界面需求,还能让不同版本的玩家都能进服。有福自然有祸,这个决定给后面埋了大雷。
    7月9日
    测试时发现,客户端模组装多了进不去。
    经排查,代理端的 ViaVersion 会向后端服务器索要数据来核对版本。玩家缺模组或多模组没事,但一旦装了新增物品/生物的模组,插件向服务器索要这些不存在的物品数据失败,直接拒绝连接。

    7月10日
    试图只给后端子服安装 ViaFabric 及相关模组来解决问题,没用。
    Desktop Screenshot 2026.07.13 - 19.05.15.84.png 因为代理端缺少 ViaVersion 就根本读不懂后端 ViaFabric 发来的数据,两边根本握不上手。折腾了两天,最终还是给代理端把 ViaVersion 装了回去,认栽。

  3. 7月11日 – 12日全服模组大测试,各种边界情况拉了一遍。服务器算是基本改造好了,但遗留的难题依然不少:

    · Distant Horizons(遥远地平线) 因为版本低,装到服务器上依然无法正确识别服务器地图;
    · 前面提到的ViaVersion索要数据、C2ME模组冲突等坑也还没有完美方案。

    如果你们也想交流这些偏门问题,或者有更好的思路,欢迎来群里一起探讨。
    Q群号:865100202

 

关于我们

  • MCBBS 2nd/NeoMC 论坛是一个在2024年初成立的论坛,我们并不盈利,我们致力于维护资源开发者的权益

快速导航 o(* ̄▽ ̄*)ブ

用户菜单