资源图标

原创 开源 ZeroLogin-新一代轻量级登录插件 ZeroLogin1.1.0

完成注册/登录后下载
版权类型
原创
插件中文名称
零登录
插件英文名称
ZeroLogin
原帖地址
#
支持的核心(服务端)
  1. Spigot
  2. Paper
适配版本(Java)
  1. 26.x
  2. 1.21
  3. 1.20
ZeroLogin — 新一代轻量级 Minecraft 登录插件

单个 JAR 兼容 Minecraft 1.20 至 26.1.2,零外部依赖,为离线模式服务器提供账号注册与登录保护。

简介

ZeroLogin 是一款为离线模式(online-mode=false)服务器设计的轻量级登录插件。玩家首次进入需注册,之后每次进入需登录。在完成认证前,插件会冻结其移动并拦截各类交互,防止未认证玩家破坏服务器。

整个插件只有一个 JAR,覆盖 Minecraft 1.20 到 26.1.2 全版本区间,无需按版本下载不同构建,也不用担心依赖冲突或类加载隔离问题。

功能特性

账号系统
支持注册、登录、注销、改密,覆盖完整的账号生命周期。口令采用 PBKDF2-HMAC-SHA256 加随机盐存储,默认 120000 次迭代。校验口令时使用常量时间比较,避免通过响应时间侧信道推断散列。玩家登录成功时,若存储的散列迭代次数低于当前配置,会自动升级为更强参数。全程仅使用 JDK 自带加密实现,零外部依赖。

登录保护
未认证状态下,插件会拦截以下行为:冻结位置位移,仅允许转动视角(可配置开关);仅放行登录相关命令,其余命令一律拦截;禁止发言;禁止破坏和放置方块;禁止右键交互和丢弃物品;禁止受到伤害;禁止打开背包和点击背包物品。

会话与自动登录
玩家可用 /ip 将当前 IP 加入白名单,之后从该 IP 进入免登录,最多 5 个。同一 IP 在 remember-seconds 时间内重进无需再次登录。zerologin.bypass 权限节点可让指定玩家(如管理员)跳过认证。

登录防护
未在指定时间内完成登录或注册将被踢出。密码错误达到上限次数后自动踢出。

其他
内置中英文双语消息,可自由编辑。细粒度权限节点,兼容主流权限插件。提供 /zerologin reload|info|stats 管理命令。每个账号一个文本文件,玩家改名不丢数据,可直接备份或同步到其他服。

兼容性

支持 Minecraft 1.20 至 26.1.2,适用于 Paper、Spigot 及其衍生服务端。单个 JAR 覆盖全版本区间,无需按版本下载不同构建。编译目标为 Java 17 字节码,可直接运行于 Java 17 至 25 的 JVM。开发期对 1.20.1 与 26.1.2 两个 API 包做了类与方法签名逐一比对,仅使用两端共有的 Bukkit API 交集。已在 Paper 26.1.2(Java 25)实机加载并启用成功,编译期对 1.20.1 API 亦通过。

运行环境要求服务端为 Paper 或 Spigot 1.20 至 26.1.2,Java 17 或更高,服务端模式为 online-mode=false(离线模式)。

安装

下载最新版 ZeroLogin-1.0.jar,放入服务端 plugins/ 目录,重启服务端。首次启动后,配置与语言文件会生成在 plugins/ZeroLogin/。

快速上手

服务端重启后,玩家进入服务器会看到提示:

[ZeroLogin] 请先注册:/register <密码> <密码>

玩家执行 /register mypassword mypassword,注册成功后自动完成登录。下次进入服务器时,提示变为 /login <密码>,玩家执行 /login mypassword 即可。在登录前,玩家无法移动、聊天、破坏方块或打开背包。

管理员如需让某个玩家免登录,为其添加 zerologin.bypass 权限即可,默认仅 OP 的 zerologin.* 包含该节点,需显式授予。

命令

/register <密码> <密码>,别名 /reg,注册账号,成功后自动登录,无需登录即可使用。

/login <密码>,别名 /l,登录账号,无需登录即可使用。

/unregister <当前密码>,别名 /unreg,注销(删除)账号,需登录后使用。

/changepassword <旧密码> <新密码>,别名 /changepw 或 /cpw,修改密码,需登录后使用。

/ip <add|remove|list|clear> [ip],管理自动登录 IP,需登录后使用。其中 add 添加自动登录 IP,上限 5 个;remove 移除自动登录 IP;list 查看已保存的自动登录 IP;clear 清空全部自动登录 IP。

/zerologin <reload|info|stats>,别名 /zl,管理命令。reload 重载配置与语言文件;info 查看插件版本、兼容区间、存储后端;stats 查看注册账号数与当前在线已认证人数。

权限

zerologin.admin,默认 OP,使用 /zerologin 管理命令。

zerologin.bypass,默认否,免登录,进入服务器后无需认证。

zerologin.ip,默认是,使用 /ip 管理自己的自动登录 IP。

zerologin.*,默认 OP,包含以上全部权限。

配置文件

路径为 plugins/ZeroLogin/config.yml。

language 项为界面语言,可选 zh_cn 或 en_us。

storage.type 为账号数据后端,当前版本支持 file。

security.pbkdf2-iterations 为 PBKDF2-HMAC-SHA256 迭代次数,越大越安全、登录注册越慢,默认 120000,下限 1000。

security.min-password-length 为密码最短长度,默认 6。

security.max-password-length 为密码最长长度,默认 32。

security.max-login-attempts 为密码最长尝试次数,超过后踢出,0 表示不限制,默认 3。

security.login-timeout-seconds 为未认证时必须在多少秒内完成登录或注册,否则踢出,0 表示不限制,默认 60。

security.require-mixed 表示是否要求密码必须同时包含字母和数字,默认 false。

session.remember-seconds 为记住登录状态的秒数,同一 IP 在该时间内重进无需再登录,0 表示关闭,默认 300。

session.ip-auto-login 表示是否允许基于 IP 的自动登录,配合 /ip 命令使用,默认 true。

protection.freeze-movement 表示未认证时是否冻结移动,默认 true。

protection.allowed-commands 为未认证时允许执行的命令列表,不含斜杠,小写,默认包含 login、l、register、reg。

messages-prefix 为消息前缀,支持 & 颜色代码,默认 &8[&bZeroLogin&8] 。

语言文件位于 plugins/ZeroLogin/messages_zh_cn.yml(中文)和 plugins/ZeroLogin/messages_en_us.yml(英文)。消息支持 & 颜色代码与 {占位符},例如登录错误提示中的 {left} 表示剩余次数。修改后执行 /zerologin reload 或重启生效。

账号数据

路径为 plugins/ZeroLogin/accounts/<UUID>.txt。每个账号一个文件,格式为可读的 key value 文本,包含 schema、uuid、name、password、registered-at、last-login-at、last-seen-at、login-count、auto-login-ips 等字段。

设计上,文件名为 UUID,玩家改名(含正版改名、name 字段变更)不会造成主键冲突或数据丢失,按名字查询时插件会命中索引并自动更新记录。单账号单文件写入,登录高峰只重写对应玩家的小文件,不会整库重写。采用原子写入,先写 .tmp 再原子替换,避免服务端崩溃导致文件损坏。整个 accounts/ 目录可直接复制到其他服务器复用。手工编辑账号文件有风险,可能导致该账号无法读取,会被安全跳过并记录警告。

安全说明

口令散列采用 PBKDF2-HMAC-SHA256 加盐存储,即使账号文件泄露也无法直接还原明文口令,默认 120000 次迭代。口令在校验完成后立即用零填充清除内存中的字符数组,减少驻留时间。若服务端可开启正版验证(online-mode=true),通常无需本插件,本插件面向离线或盗版服务器场景。IP 自动登录提升了体验,但同一 IP 下的其他玩家可能借道进入,对安全要求高的服务器建议将 session.ip-auto-login 设为 false,并引导玩家不添加 IP 白名单。zerologin.bypass 会让玩家跳过全部认证,请仅授予可信人员。

常见问题

支持 Folia 吗?暂不支持,plugin.yml 中已声明 folia-supported: false。

玩家忘了密码怎么办?删除 plugins/ZeroLogin/accounts/<该玩家UUID>.txt 后让其重新注册即可,会丢失该账号的 IP 白名单等数据。

如何从其他登录插件迁移?本插件使用独立的账号文件格式,暂不提供自动迁移工具,可基于 accounts/*.txt 的纯文本格式编写转换脚本。

能跨多个服务器共享账号吗?可以。将 plugins/ZeroLogin/accounts/ 目录放到共享存储,或各服定期同步。后续版本计划提供 MySQL 存储后端以支持更便捷的多服共享。

为什么未认证时玩家能动视角却不能移动?这是刻意的设计,避免玩家因完全冻结产生卡死感,同时阻止其位移影响其他玩家。

开源协议

本项目基于 MIT License 开源。

相关链接

仓库:https://github.com/lmxdg/ZeroLogin

发布下载:https://github.com/lmxdg/ZeroLogin/releases

问题反馈:https://github.com/lmxdg/ZeroLogin/issues
作者
lmxdg
下载
8
查看
107
首次发布
最后更新

评分

0.00 星 0 次评分

lmxdg 的其他资源

最新更新

  1. ZeroLogin1.1.0

    ZeroLogin v1.1.0 更新摘要: · 新增 SQLite 存储后端(默认),账号存入单文件数据库,备份更方便 · 支持 sqlite / file 双后端切换,新增...
后退
顶部 底部