Skip to content

ZeroLogin 1.1.0

Latest

Choose a tag to compare

@lmxdg lmxdg released this 05 Oct 12:37

ZeroLogin v1.1.0 —— SQLite 存储后端与多语言系统

本版本在保持「单个 JAR 兼容 Minecraft 1.20 ~ 26.1.2」的前提下,引入 SQLite 账号存储、双后端数据迁移与 7 种界面语言。

新增功能

SQLite 存储后端(默认)

  • 账号数据默认存入单文件数据库 plugins/ZeroLogin/zerologin.db,备份只需复制一个文件
  • WAL 日志模式 + busy_timeout,读写并发更好,注册/登录高峰不阻塞读取
  • 所有 SQL 在专用 IO 线程上串行执行(CompletableFuture 回调),不阻塞服务端主线程
  • sqlite-jdbc 驱动打包内联并 relocate 到 dev.zerologin.libs.sqlite,不依赖服务端环境、不与其他插件冲突
  • uuid 主键 + name_lc 唯一索引:玩家改名不丢数据、大小写不敏感命中
  • 单行更新(INSERT ... ON CONFLICT DO UPDATE)、批量迁移单事务、启动时 PRAGMA integrity_check 自检

双后端与数据迁移

  • storage.type 可在 sqlite / file(v1.0 后端)之间切换,两种后端均受支持
  • 新增 /zerologin migrate <from> <to> [force]:异步、非破坏式迁移;目标后端非空时中止,force 前自动导出文本备份到 backups/migrate-<时间戳>/
  • v1.0 升级零操作:首次以 SQLite 启动且数据库为空时,自动导入 accounts/ 下旧账号(可用 storage.sqlite.import-file: false 关闭)

多语言系统

  • 内置 7 种语言:zh_cn / zh_tw / en_us / ja_jp / ko_kr / ru_ru / es_es
  • language: auto:每位玩家按其客户端语言(Player#getLocale())收到提示,互不影响;控制台回退 en_us
  • 语言标签前缀归一化(zh_TW/zh_HK/zh_hant → zh_tw 等)
  • 新增 /zerologin lang-template <lang>:导出内置消息模板,便于社区翻译新语言

管理命令扩展

  • /zerologin 子命令从 3 个扩展到 5 个:reload / info / stats / migrate / lang-template,含 Tab 补全
  • /zerologin info 显示版本、兼容区间、存储后端与当前语言;/zerologin stats 显示注册账号数与在线已认证人数

配置变更

  • 新增 storage.type、storage.sqlite.file、storage.sqlite.import-file
  • language 默认值改为 auto(原为固定语言)
  • 旧 config.yml 缺失的键按默认值处理,v1.0 配置可直接沿用

兼容性与验证

  • 依旧单个 JAR 兼容 Minecraft 1.20 ~ 26.1.2(Paper / Spigot),编译目标 Java 17
  • 通过 1.20.1 / 1.20.2 / 1.21.11 / 26.1.2 四组 API 编译门禁
  • 单元测试从 21 个增加到 43 个,新增 SQLite 存储与后端间迁移的覆盖

升级指南

  1. 停止服务端,备份 plugins/ZeroLogin/
  2. 用 ZeroLogin-1.1.0.jar 替换旧 JAR(注意:JAR 因内联 SQLite 驱动约扩大到 14 MB)
  3. 启动服务端,观察控制台是否输出账号自动导入日志
  4. 详见 README「数据迁移」章节

全量提交对比:v1.0.0...v1.1.0