开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[闲聊] 【开发日志】接手 1.21 群组服改造:XaerosWorldMap 地图错乱、ViaVersion索要数据那些坑

 发表于 昨天 23:19|显示全部楼层|阅读模式 IP:广东省
因为实在挤不出大块时间,这几天的日志只能攒到同一天写了。虽然忙得焦头烂额,但我还是毅然接手了朋友的服务器并着手全面改造。
先交代一下服务器规模:这是一个典型的群组服,架构为 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.pngMinecraft Screenshot 2026.07.13 - 22.54.27.29.png

6月30日
朋友表示这两款地图模组属于刚需,不能砍。查了一圈发现,只有 Paper 核心才有相关的修复插件,而且这个插件没办法通过任何兼容层模组(比如 BukkitFabricLoader)移植到 Fabric 端上,纯粹是架构鸿沟。

Desktop Screenshot 2026.07.13 - 18.55.21.94.pngDesktop 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 拦截与优化,这也是最失败的一环。
原本使用的Connection Guard插件竟然默认阻止中国玩家进入,改了配置文件也毫无作用,只好换成 FoxGate 。

Desktop Screenshot 2026.07.13 - 19.00.03.20.png

优化方面,除了增加 ModernFix(现代修复) 和 CrashExploitFixer 之外,不敢再多加。尤其是“奇观服”——这个子服因为塞了大量新增方块/生物的模组,模组冲突严重,最终只能忍痛移除 C2ME 和一部分优化模组,直接废掉了一个 Fabric 端的部分优化能力,非常可惜。

7月6日
没时间,鸽了。

7月8日
前一天只做了一些模组冲突测试。今天开始第四个改造:给 AuthMe 登录插件加一个登录界面。
然而 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 装了回去,认栽。

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

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

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


Desktop Screenshot 2026.07.13 - 19.04.28.65.png
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

| 由 木韩网络 提供支持 | GMT+8, 2026-7-15 02:02

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4