虚空认证

虚空认证

这是一个新生代的可视化GUI登录模组。This is a next-generation visual GUI login module.

管理

VoidAuth

Minecraft 26.1–26.1.2 强制认证模组 | Fabric | 双方安装

VoidAuth 是一款针对 Minecraft 26.1 系列设计的强制安全认证模组,需要服务端与客户端同时安装。除基础登录/注册功能外,它在架构上解决了传统认证模组的长期顽疾——闪烁、死亡状态下卡住,以及鞘翅断线导致的虚空陷阱,并提供了完整的 GUI 管理、精细的权限节点以及开发者 API。


🚀 快速入门

  1. 安装 Fabric Loader 0.19.2+ 与 Fabric API
  2. 将 VoidAuth 放入 服务端与客户端 的 mods 文件夹
  3. 启动服务端——配置文件会自动生成在 config/voidauth.json
  4. 玩家加入后输入 /voidauth register <密码> 进行注册,之后每次输入 /voidauth login <密码> 登录
  5. 输入 /voidauth help 查看所有命令(可点击!)

💡 默认使用 JSON 存储——零依赖,开箱即用。如需 SQLite/MySQL,只需将驱动 jar 放入 mods 文件夹。


📋 要求

项目 要求
Minecraft 26.1 / 26.1.1 / 26.1.2
Java 25
Fabric Loader 0.19.2+
Fabric API 0.145.1+26.1

⚠️ 强制安装双方——未安装 VoidAuth 的客户端将被拒绝并提示安装。


✨ 独特功能一览

以下功能在其他 Minecraft 认证模组中均不存在:

# 功能 一句话概述
🔒 四层位置锁定 客户端输入冻结 + 服务端位置同步 + 移动数据包拦截 + 偏移修正——消除闪烁与 X 光
🌑 黑暗反绕过 黑暗效果 + 强制伽马=0 + F3 屏幕封锁——即使全亮也无法透视
🪂 鞘翅断线保护 加入时自动加载 7×7 区块,防止鞘翅断线后陷入虚空
💀 死亡状态自动恢复 检测登出时的死亡状态,重连时自动复活——无需管理员干预
⏱️ 飞行检查缓冲期 可配置的登录后缓冲期,在坠落/鞘翅飞行时抑制飞行作弊检测
🛡️ BCrypt 截断防护 验证密码 UTF-8 长度 ≤ 72 字节,封堵 BCrypt 静默截断漏洞
🔐 顺序字符检测 阻止 abc/123/cba/321 模式——拒绝弱密码
📝 管理员审计日志 所有管理员操作自动记录,一键导出带时间戳
🔑 精细权限节点 7 个独立权限节点,支持 Fabric Permissions API
🔌 开发者 API 回调系统 + 数据查询 + 异常隔离,便于第三方模组集成
🔄 自动迁移 升级或切换存储类型时,配置与数据自动迁移
🛡️ MySQL 密码保护 配置同步使用占位符 ***,防止密码通过网络泄露
⚙️ bcryptCostFactor 验证 服务端强制范围 10–14,防止通过恶意成本因子发起 DoS 攻击

🔍 独特功能详解

🔒 四层位置锁定——消除登录闪烁与 X 光

传统认证模组仅拦截服务端的移动数据包,客户端仍可自由移动——导致闪烁与 X 光问题。VoidAuth 实现了四层协同防护:

  1. ClientInputMixin——冻结所有键盘/鼠标输入
  2. tickFreeze() + LockPositionPacket——将客户端锁定至服务端指定位置,零速度 + 无重力 + 渲染插值锁定
  3. ServerPlayHandlerMixin——拦截所有移动与载具移动数据包
  4. ServerPlayerEntityMixin——主动纠正位置偏差,重置飞行检测计数器

关键创新:专用的 LockPositionPayload 网络数据包将服务端坐标同步至客户端,防止因位置不同步导致的嵌入方块问题。

🌑 黑暗反绕过

传统模组使用夜盲效果,全亮材质包可轻易绕过。VoidAuth 使用三重防护:

  • 黑暗效果——即使最大亮度也无法穿透
  • 客户端伽马强制归零——登录期间锁定渲染亮度,登录后恢复
  • F3 调试屏幕封锁——防止坐标与实体信息泄露

⏱️ 飞行检查缓冲期

登录后,玩家可能仍在坠落或使用鞘翅滑翔。传统模组会立即触发飞行作弊检测并踢出。VoidAuth 提供了可配置的缓冲期(flightCheckGracePeriodSeconds),在此期间抑制飞行检测,让玩家安全落地。

🪂 鞘翅断线保护

当玩家在鞘翅飞行中断线并重新加入时,传统模组会让其卡在虚空中(区块未加载)。VoidAuth 在加入时主动加载玩家周围 7×7 的区块区域。

💀 死亡状态自动恢复

使用传统模组时,玩家死亡后断线,重新加入时会卡在“死亡”状态。VoidAuth 会记录登出时的死亡状态,并在重连时自动执行重生。

🛡️ BCrypt 72 字节截断防护

BCrypt 会静默截断超过 72 字节的密码。攻击者可利用此前缀碰撞访问其他账号。VoidAuth 验证密码的 UTF-8 字节长度并拒绝超过 72 字节的密码。

🔐 顺序字符检测

除了要求包含字母与数字外,VoidAuth 还会检测升序/降序序列(例如 abc、123、cba、321)以拒绝弱密码。

📝 管理员审计日志

所有管理员操作自动记录到 logs/voidauth-admin.log。使用 /voidauth exportlog 导出带时间戳的副本。

🔑 精细权限节点

权限节点 操作
voidauth.admin.reset 重置玩家密码
voidauth.admin.setpassword 强制设置密码
voidauth.admin.delete 删除玩家账户
voidauth.admin.list 查看玩家列表
voidauth.admin.reload 重载配置
voidauth.admin.config 修改配置
voidauth.admin.exportlog 导出管理员日志

当未安装 Fabric Permissions API 时,回退至 OP 检查。

🔌 开发者 API 与回调系统

VoidAuthAPI.registerCallback(new AuthCallbackAdapter() {
    @Override
    public void onAuthenticated(UUID uuid) { /* 登录成功 */ }
});

Set<UUID> authenticated = VoidAuthAPI.getAuthenticatedPlayers();
Optional<PlayerData> data = VoidAuthAPI.getPlayerData(uuid);
  • AuthCallbackAdapter 提供空实现便于选择性重写
  • 回调异常自动隔离——一个回调失败不会影响其他回调

🔄 自动迁移

  • 配置:模组升级时自动进行版本迁移——设置不会丢失
  • 数据:切换存储类型时自动迁移(JSON → SQLite → MySQL)

🛡️ MySQL 密码保护

配置同步数据包将 MySQL 密码替换为 ***。服务端仅在客户端发送非空且非占位符的值时才更新密码。

⚙️ bcryptCostFactor 验证

服务端强制 BCrypt 成本因子范围为 10–14,防止通过恶意高值发起 DoS 攻击。


🎮 完整功能列表

玩家命令

命令 描述 点击行为
/voidauth login <密码> 登录 填入命令,输入密码
/voidauth register <密码> 注册 填入命令,输入密码
/voidauth info 查看个人信息 点击执行
/voidauth changepassword 打开修改密码 GUI 点击执行
/voidauth email 打开邮箱管理 GUI 点击执行
/voidauth unregister 删除账户(需确认) 填入命令,提示后确认
/voidauth help 显示帮助菜单 点击执行

管理员命令

命令 描述 权限 点击行为
/voidauth reset <玩家名> 重置玩家密码 voidauth.admin.reset 填入命令,输入玩家名
/voidauth setpassword <玩家名> <密码> 强制设置密码 voidauth.admin.setpassword 填入命令,输入玩家名与密码
/voidauth list [页数] 查看已注册玩家 voidauth.admin.list 点击执行
/voidauth delete <玩家名> 删除玩家账户 voidauth.admin.delete 填入命令,输入玩家名
/voidauth reload 重载配置 voidauth.admin.reload 点击执行
/voidauth config 打开配置 GUI voidauth.admin.config 点击执行
/voidauth exportlog 导出管理员日志 voidauth.admin.exportlog 点击执行

💡 帮助菜单中的所有命令均可点击。需要参数的命令会自动填入聊天栏。

GUI 界面

  • 登录界面——带倒计时,超时自动踢出
  • 注册界面——注册时可选绑定邮箱
  • 修改密码界面——旧密码 + 新密码 + 确认密码字段
  • 邮箱管理界面——绑定 / 修改 / 解绑模式
  • 配置管理界面——所有设置的图形化编辑器
  • 账户管理界面——统一入口

安全

  • BCrypt 密码哈希(可配置成本因子 10–14)
  • 密码强度验证(最少 6 个字符 + 字母与数字 + 顺序字符检测 + 72 字节上限)
  • 登录失败锁定(可配置尝试次数与持续时间)
  • 同 IP 自动登录(可配置有效期)
  • 账户删除带确认 + 效果清理 + 数据清除

数据存储

存储类型 描述 依赖项
JSON 默认,零依赖 无
SQLite 适用于中小型服务器 在 mods 文件夹中安装 sqlite-jdbc
MySQL 适用于大型服务器 / 多服务器 在 mods 文件夹中安装 mysql-connector-j

切换存储类型时数据自动迁移。如果驱动缺失,回退至 JSON 并发出警告。


🔧 可选依赖项

依赖项 用途 安装方式
sqlite-jdbc SQLite 存储 将 jar 放入 mods 文件夹
mysql-connector-j MySQL 存储 将 jar 放入 mods 文件夹
Fabric Permissions API 精细权限 放入 mods 文件夹

未安装时自动回退至默认值(JSON 存储 + OP 权限检查)。核心功能不受影响。


⚙️ 配置

设置项 默认值 描述
loginTimeoutSeconds 120 登录超时(秒)
maxPasswordAttempts 5 最大密码尝试次数
lockDurationMinutes 30 账户锁定持续时间(分钟)
bcryptCostFactor 10 BCrypt 成本因子(10–14)
ipAutoLoginEnabled true 启用同 IP 自动登录
ipAutoLoginDurationHours 24 自动登录有效期(小时)
storageType json 存储类型(json/sqlite/mysql)
flightCheckGracePeriodSeconds 30 飞行检查缓冲期(秒)
mysqlHost localhost MySQL 主机
mysqlPort 3306 MySQL 端口
mysqlDatabase voidauth MySQL 数据库名
mysqlUsername root MySQL 用户名
mysqlPassword MySQL 密码
mysqlPoolSize 5 MySQL 连接池大小

📜 开发者 API

// 添加依赖
dependencies {
    modImplementation "com.voidauth:voidauth:1.0.0"
}

// 注册回调
VoidAuthAPI.registerCallback(new AuthCallbackAdapter() {
    @Override
    public void onAuthenticated(UUID uuid) { /* 登录成功 */ }
});

// 数据查询
Optional<PlayerData> data = VoidAuthAPI.getPlayerData(uuid);
Set<UUID> authenticated = VoidAuthAPI.getAuthenticatedPlayers();
boolean isAuth = VoidAuthAPI.isAuthenticated(uuid);

❓ 常见问题

问:未安装 VoidAuth 的玩家可以加入吗? 答:不行。未安装 VoidAuth 的客户端会被拒绝并提示安装。

问:在单人游戏中需要登录吗? 答:不需要。在单人游戏中(包括局域网联机),主机玩家会自动认证。

问:如何切换存储类型? 答:修改 config/voidauth.json 中的 storageType 并重启。现有数据会自动迁移。

问:如果我忘记密码怎么办? 答:管理员可以使用 /voidauth reset <玩家名> 重置密码。

问:支持哪些 Minecraft 版本? 答:26.1、26.1.1 和 26.1.2。不兼容更早版本。


📄 许可证

© 2025 VoidAuth。保留所有权利。

本模组为闭源软件。保留所有权利。未经作者事先书面授权,禁止以下行为:

  • 反编译、反向工程或反汇编本软件
  • 修改、改编或制作衍生作品
  • 分发、再许可或销售本软件的源代码
  • 删除或修改本软件中的任何版权声明

用户被授予非独占、不可转让的许可,仅可将本软件安装并用于个人、非商业目的。