更新日志 - lmxdg/ZeroLogin GitHub Wiki

更新日志


v1.1.0

存储

  • 新增 SQLite 存储后端(默认):单文件数据库 zerologin.db,WAL 模式,uuid 主键 + name_lc 唯一索引
  • 所有 SQL 在专用 IO 线程串行执行,账号读写不阻塞服务端主线程
  • sqlite-jdbc 驱动打包内联并 relocate 到 dev.zerologin.libs.sqlite,与服务端其他插件互不干扰
  • 单行更新(UPSERT)、批量迁移单事务、启动时 PRAGMA integrity_check 自检
  • file 后端(v1.0)完整保留,storage.type 可切换

数据迁移

  • 新增 /zerologin migrate <from> <to> [force]:file ↔ sqlite 异步非破坏式迁移;目标非空中止,force 前自动导出文本备份
  • v1.0 升级零操作:首次以 SQLite 启动且数据库为空时自动导入旧 accounts/ 数据(storage.sqlite.import-file 可关闭)

多语言

  • 语言从 2 种扩展到 7 种:zh_cn / zh_tw / en_us / ja_jp / ko_kr / ru_ru / es_es
  • language: auto(新默认):每位玩家按客户端语言收到提示,控制台回退 en_us
  • 语言标签前缀归一化(zh_TW/zh_HK/zh_hant → zh_tw 等)
  • 新增 /zerologin lang-template <lang> 导出翻译模板

其他

  • /zerologin 子命令扩展到 5 个:reload / info / stats / migrate / lang-template
  • /zerologin info 增加存储后端与当前语言显示

质量

  • 单元测试从 21 个增加到 43 个(新增 SQLite 存储与后端迁移覆盖)
  • 兼容性门禁扩展到 1.20.1 / 1.20.2 / 1.21.11 / 26.1.2 四组 API 全部编译通过

注意:JAR 因内联 SQLite 驱动扩大到约 14 MB。升级方法见 安装指南。


v1.0.0

首个公开版本。

账号系统

  • 注册 / 登录 / 注销 / 修改密码
  • PBKDF2-HMAC-SHA256 加盐口令散列(零外部依赖)
  • 常量时间口令比较,防时序侧信道
  • 登录成功时透明升级弱散列参数
  • 口令用后即时擦除

登录保护

  • 未认证时拦截:移动、命令、聊天、破坏、放置、交互、丢弃、伤害、背包
  • 登录超时踢出
  • 密码错误次数限制并踢出

会话与自动登录

  • 基于 IP 的自动登录白名单(/ip 管理,上限 5 个)
  • 同 IP 会话保持(remember-seconds)
  • zerologin.bypass 免登录权限

存储

  • 文件后端:每账号一文件(以 UUID 命名),玩家改名安全
  • 自包含编解码器,不依赖 Bukkit YAML
  • 原子写入,损坏文件安全跳过

其他

  • 中英文双语消息(zh_cn / en_us),可编辑
  • 权限体系:zerologin.admin / zerologin.bypass / zerologin.ip
  • 管理命令:/zerologin reload|info|stats
  • 标签补全

兼容性

  • 单 JAR 兼容 Minecraft 1.20 ~ 26.1.2
  • 编译目标 Java 17(class major 61),可运行于 Java 17 ~ 25
  • 已验证:Paper 26.1.2(Java 25)实机加载启用成功

质量

  • 21 个单元测试全部通过
  • 双向 API 编译门禁(1.20.1 / 26.1.2)通过

后续计划

  • v1.2.0:MySQL 存储后端,简化多服共享
  • v1.3.0:强化保护与自动登录细节
  • v1.4.0:扩展管理命令、开放公共 API / 事件

计划可能调整,以实际发布为准。

⚠️ **GitHub.com Fallback** ⚠️