1快速开始

LinuxSync 是关服前的数据同步闸门。 服务器执行 /xstop 或 stop 时,它先把所有 Linux 系插件的数据 立即保存 + 备份,然后再让服务器关掉, 最后用一条面板消息汇报结果。

三步上手

  1. 把 LinuxSync-1.0.0.jar 放进 plugins/。
  2. 重启服务器,日志出现「LinuxSync 已启用」。
  3. 执行 /linuxsync 验证,应看到 7/7 全部成功。
ℹ️
没有前置依赖 装了 XlandStop 就用 /xstop 触发;没装也能用 stop 或手动 /linuxsync。

2命令详解

命令作用
/linuxsync手动触发一次同步(别名 /lsync),不关服
/xstopXlandStop 的倒计时关服命令,LinuxSync 监听它并先同步
stop控制台关服命令,LinuxSync 会拦截、同步、再放行

三条路径的区别

触发行为
/xstop立即同步 + 广播,然后放行,让 XlandStop 照常走 30 秒倒计时
stop拦截(取消原命令)→ 保存 → 广播 → 下一 tick 再真正执行 stop
/linuxsync只同步 + 广播,不关服

3保存清单

全部走反射调用,任何一个插件缺失或方法变更都只影响它自己那一行,不会中断其它插件的保存。

插件实际调用
LinuxTeamTeamManager.save() + backupNow(触发源) 强制备份
LinuxTitlePlayerDataManager.save()
FakePlayerPluginsaveFakePlayersToYaml()
PointsShopdata().save()
NalxerPDRReportManager.save()
InTheNameOfLinuxBanManager.flush() + PlayTimeManager.save()
LinuxACE无持久化数据,标注「仅内存状态」

备份文件后缀

  • -xstop — 由 /xstop 触发
  • -stop — 由 stop 拦截触发
  • -manual — 手动 /linuxsync
  • -shutdown — onDisable 兜底

4防死循环

拦截 stop 之后自己又派发 stop,是最容易写出无限循环的地方。三重保险:

  1. bypassStop — 自己 dispatch 之前置 true,派发结束(finally)后复位;监听器第一行就检查它。
  2. stopHandled — 整个生命周期只拦截一次,第二次直接放行并继续关服。
  3. runTaskLater(1L) — 不在命令事件里嵌套派发命令,先让事件处理完,下一 tick 再 dispatch。
⚠️
关服不会被保存卡住 即使同步过程抛异常,也一定继续执行 stop;耗时超过 15 秒只打警告,不阻塞。

5配置与限制

权限

权限说明默认
linuxsync.use使用 /linuxsyncOP

★ RCON 的 stop 拦不住

Paper 1.12.2 对 RCON / 原生控制台的 stop 走服务端原生命令处理, 不触发 ServerCommandEvent。所以额外做了 onDisable 兜底保存 —— 任何关服方式都至少落盘一次。

生产建议:关服统一用 /xstop,或直接在控制台敲 stop。

6常见问题

没装 XlandStop 能用吗?

能。用 stop 关服(会被拦截并先保存),或者手动 /linuxsync。

看到某个插件显示 ✘ 怎么办?

表示那个插件没装、或者保存方法变了。该行失败不影响其它插件,查看 原因 字段即可。

为什么 LinuxACE 显示「仅内存状态」?

LinuxACE 的危险等级、缓冲都在内存里,没有需要落盘的数据,所以这一行只是占位说明。

同步很慢怎么办?

正常 200~1500 ms。如果超过 15 秒会打警告但不会阻塞关服。数据量特别大时可以检查各插件的数据文件大小。