- 版权类型
- 二次开发
- 插件中文名称
- VeloAuth
- 插件英文名称
- VeloAuth
- 支持的核心(代理端)
- Velocity
- 语言支持
- 多语言
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
- 1.11
- 1.10
- 1.9
- 1.8
本插件为veloauth的fork
对于原插件有个问题:
正版玩家添加到自动数据库后就不可以离线登录了
所以我通过修改了原理达到了我要的功能(正版可以自动登录,离线则需要密码)
原理:
[MD] ## 当前登录逻辑解释 (v1.1.5) ### 1. PreLoginEvent 阶段(玩家连接时) 插件会进行两项检测: | 检测项 | 说明 | |--------|------| | **是否为正版** | 通过 `premium_uuids` 数据库缓存查询该名字是否为正版玩家 | | **数据库是否有记录** | 在 `auth` 表中查找该玩家是否已注册(有过密码) | ### 2. 处理逻辑 ``` 检测正版状态 + 数据库记录 ↓ 如果 数据库有记录(已注册账号) → 强制离线模式 (forceOfflineMode) → 玩家需要用 /login 密码 登录 ↓ 否则 如果 检测为正版玩家 → 强制正版模式 (forceOnlineMode) → Velocity 连接 Mojang 验证 → 验证成功则进入游戏(无需密码) ↓ 否则(新玩家 + 离线检测) → 强制离线模式 (forceOfflineMode) → 玩家需要用 /register 密码 密码 注册 ``` ### 3. GameProfileRequestEvent 阶段(正版验证成功后) ``` 如果配置 premium-uuid: false → 将正版 UUID 转换成离线 UUID → 玩家使用离线 UUID 进入服务器(数据共享) 如果配置 premium-uuid: true → 保持正版 UUID → 玩家使用正版 UUID 进入服务器 ``` ### 4. PostLoginEvent 阶段(玩家进入游戏后) ``` 根据玩家连接模式决定后续处理 如果是正版模式 (player.isOnlineMode == true) → handlePremiumPlayer() 自动处理 → 玩家直接进入游戏 如果是离线模式 (player.isOnlineMode == false) → handleOfflinePlayer() 处理 → 玩家会被传送到登录服务器 → 需要完成密码登录/注册才能进入游戏 ``` --- ### 当前行为总结 | 场景 | 行为 | |------|------| | **数据库有记录 + 正版玩家** | forceOfflineMode → 需要 `/login 密码` 登录 → 登录成功后自动保存正版UUID到数据库 | | **数据库有记录 + 离线玩家** | forceOfflineMode → 需要 `/login 密码` 登录 | | **数据库无记录 + 正版玩家** | forceOnlineMode → Velocity 验证 → 自动登录(无需密码) | | **数据库无记录 + 离线玩家** | forceOfflineMode → 需要 `/register 密码 密码` 注册 | --- [/MD]
以下为原插件简介:

完整的Velocity认证插件,具备智能昵称保护、高级自动登录和安全离线玩家管理。
[BGCOLOR=var(--color-button-bg)]
[/BGCOLOR]
重要信息:配置默认控制已认证玩家的重定向位置。VeloAuth 会自动跳过服务器,选择第一个可用的后端服务器,除非玩家使用了域名,这种情况下玩家会被原生路由到预定目的地!
[/BGCOLOR]
所有 API 调用都并行运行在虚拟线程上。结果会缓存在数据库中,并在代理重启后存活。
对于原插件有个问题:
正版玩家添加到自动数据库后就不可以离线登录了
所以我通过修改了原理达到了我要的功能(正版可以自动登录,离线则需要密码)
原理:
[MD] ## 当前登录逻辑解释 (v1.1.5) ### 1. PreLoginEvent 阶段(玩家连接时) 插件会进行两项检测: | 检测项 | 说明 | |--------|------| | **是否为正版** | 通过 `premium_uuids` 数据库缓存查询该名字是否为正版玩家 | | **数据库是否有记录** | 在 `auth` 表中查找该玩家是否已注册(有过密码) | ### 2. 处理逻辑 ``` 检测正版状态 + 数据库记录 ↓ 如果 数据库有记录(已注册账号) → 强制离线模式 (forceOfflineMode) → 玩家需要用 /login 密码 登录 ↓ 否则 如果 检测为正版玩家 → 强制正版模式 (forceOnlineMode) → Velocity 连接 Mojang 验证 → 验证成功则进入游戏(无需密码) ↓ 否则(新玩家 + 离线检测) → 强制离线模式 (forceOfflineMode) → 玩家需要用 /register 密码 密码 注册 ``` ### 3. GameProfileRequestEvent 阶段(正版验证成功后) ``` 如果配置 premium-uuid: false → 将正版 UUID 转换成离线 UUID → 玩家使用离线 UUID 进入服务器(数据共享) 如果配置 premium-uuid: true → 保持正版 UUID → 玩家使用正版 UUID 进入服务器 ``` ### 4. PostLoginEvent 阶段(玩家进入游戏后) ``` 根据玩家连接模式决定后续处理 如果是正版模式 (player.isOnlineMode == true) → handlePremiumPlayer() 自动处理 → 玩家直接进入游戏 如果是离线模式 (player.isOnlineMode == false) → handleOfflinePlayer() 处理 → 玩家会被传送到登录服务器 → 需要完成密码登录/注册才能进入游戏 ``` --- ### 当前行为总结 | 场景 | 行为 | |------|------| | **数据库有记录 + 正版玩家** | forceOfflineMode → 需要 `/login 密码` 登录 → 登录成功后自动保存正版UUID到数据库 | | **数据库有记录 + 离线玩家** | forceOfflineMode → 需要 `/login 密码` 登录 | | **数据库无记录 + 正版玩家** | forceOnlineMode → Velocity 验证 → 自动登录(无需密码) | | **数据库无记录 + 离线玩家** | forceOfflineMode → 需要 `/register 密码 密码` 注册 | --- [/MD]
以下为原插件简介:
VeloAuth
完整的Velocity认证插件,具备智能昵称保护、高级自动登录和安全离线玩家管理。
什么是VeloAuth?
VeloAuth 是一个全面的 Velocity 代理认证系统,能在玩家到达后台服务器之前处理所有授权。它支持任何中间服务器,提供顺畅的登录体验,同时通过智能冲突解决保护昵称所有权。主要特征
智能昵称保护——除非已注册的破解玩家,否则高级昵称是保留的
高级自动登录 - Mojang 账户所有者自动跳过身份验证
自动昵称更改检测——检测高级播放器是否更改了他们的Mojang账户,并自动更新数据库记录
安全离线认证 - BCrypt密码哈希及暴力破解防护
可选的Floodgate支持——当启用Floodgate集成时,Bedrock玩家可以绕过认证服务器
强制主机支持——玩家通过自定义域名(例如 )连接,认证后会被正确路由到指定服务器pvp.server.com
智能命令隐藏——认证命令(, )在玩家登录后完全隐藏于标签完成/login/register
高性能 - 三层高级分辨率缓存:内存内→数据库→外部API,24小时保持高级状态
冲突解决——智能处理高级/破解昵称冲突
管理工具——完整的冲突管理/vauth conflicts
多数据库 - MySQL、PostgreSQL、H2、SQLite
17种语言——英语、复数、德语、法语、俄语、俄语、意大利语、意大利语、ZH_CN语、ZH_HK语、雅语、高中文、爱尔兰语、古语、荷兰语、爱德语、PT_BR语
LimboAuth兼容 - 100%数据库兼容性(无需迁移)
Discord 警报 - 安全事件的 Webhook 通知
虚拟线程——基于Java 21构建,实现最大性能
bStats Analytics - 匿名使用统计数据,来自 bStats
要求
- Java 21 或更新版本
- Velocity proxy (API 3.4.0+)
- Limbo服务器:NanoLimbo、LOOHP/Limbo、LimboService、PicoLimbo、hpfxd/Limbo,或其他任何服务器
- 数据库:MySQL、PostgreSQL、H2 或 SQLite
快速设置
安装
- 从 Modrinth 下载 VeloAuth
- 把文件放进你的Velocity文件夹里
plugins/ - Start Velocity - 插件会生成一个文件
config.yml - 停止Velocity,然后在
plugins/VeloAuth/config.yml - 重启速度
速度配置
配置你的Limbo/认证服务器和后端服务器:velocity.toml[BGCOLOR=var(--color-button-bg)]
代码:
[B][COLOR=rgb(0, 136, 136)][servers][/COLOR][/B][/SIZE][/COLOR][/SIZE][/COLOR][/SIZE][/COLOR]
[COLOR=rgb(176, 186, 197)][SIZE=16px][COLOR=rgb(176, 186, 197)][SIZE=16px][COLOR=rgb(176, 186, 197)][SIZE=16px]limbo = "127.0.0.1:25566" [COLOR=rgb(136, 136, 136)]# Auth/limbo server (NanoLimbo, LOOHP/Limbo, etc.)[/COLOR]
lobby = "127.0.0.1:25565" [COLOR=rgb(136, 136, 136)]# Typical backend server[/COLOR]
survival = "127.0.0.1:25567" [COLOR=rgb(136, 136, 136)]# Another backend server[/COLOR]
try = ["lobby", "survival"] [COLOR=rgb(136, 136, 136)]# Order matters. Do NOT put 'limbo' here.[/COLOR]
[B][COLOR=rgb(0, 136, 136)][forced-hosts][/COLOR][/B]
[COLOR=rgb(136, 136, 136)]# VeloAuth fully respects Velocity's forced hosts!
# Players connecting via this IP will be sent to limbo to login,
# and then seamlessly transferred to 'survival' instead of 'lobby'.[/COLOR]
"survival.example.com" = ["survival"]
重要信息:配置默认控制已认证玩家的重定向位置。VeloAuth 会自动跳过服务器,选择第一个可用的后端服务器,除非玩家使用了域名,这种情况下玩家会被原生路由到预定目的地!
trylimboforced-hostDiscord Webhook
VeloAuth 支持针对安全事件(登录突发失败、暴力破解尝试、高级解析失败)发送 Discord 通知。在 下方配置 webhook URL。config.ymlalerts.discord数据库配置
支持:H2(开箱即用)、MySQL、PostgreSQL、SQLite玩家指令
| 指挥 | 描述 | 限制 |
|---|---|---|
/register(注册)<password> <confirm> | 创建新账户 | 登录后隐藏。没有高级昵称 |
/登录<password> | 登录你的账户 | 登录后隐藏。适用于所有玩家 |
/更改密码 <old> <new> | 更改你的密码 | 必须登录 |
管理命令
| 指挥 | 许可 | 描述 |
|---|---|---|
/unregister(取消注册)<nickname> | veloauth.admin | 移除玩家账户(解决冲突) |
/vauth reload | veloauth.admin | 装填配置 |
/vauth 缓存重置 [玩家] | veloauth.admin | 清除授权缓存 |
/vauth 统计 | veloauth.admin | 显示插件统计数据 |
/vauth 冲突 | veloauth.admin | 名单昵称冲突 |
工作原理
认证流程
- 玩家连接到Velocity
- VeloAuth 检查内存内授权缓存(即时,无 I/O )
- 如果不在内存中,检查数据库高级缓存(跨重启持续存在)
- 如果不在数据库缓存中,则通过 Mojang/Ashcon API 并行解析,使用虚拟线程
- 如果不是高级会员,玩家会被送往认证服务器(除非Floodgate Bedrock绕过系统适用)。
- 玩家类型 /login 或 /登录
- VeloAuth 通过 BCrypt 验证凭证
高级分辨率(3层)
[BGCOLOR=var(--color-button-bg)]
代码:
Connect → [In-memory cache] → [Database cache] → [Mojang/Ashcon API]
~0ms ~1ms ~200-500ms
所有 API 调用都并行运行在虚拟线程上。结果会缓存在数据库中,并在代理重启后存活。
昵称更改检测
当高级播放器登录用户名与存储不同(Mojang账户重命名)时,VeloAuth会自动检测不匹配并更新数据库记录,保持UUID到用户名的准确对应,无需管理员干预。昵称保护系统
- 除非已经被破解玩家注册,否则高级昵称是保留的
- 当高级玩家使用破解注册昵称时的冲突解决
- 管理昵称冲突的工具
- 自动屏蔽试图使用高级昵称的破解玩家
LimboAuth迁移
- 停止在你的后端服务器上使用 LimboAuth
- 在Velocity上安装VeloAuth
- 配置VeloAuth使用与LimboAuth相同的数据库
- Start Velocity - 所有现有账户都会自动运行