|
RSLB
RSereneLoginBukkit — 正版与外置登录共存解决方案
支持 Paper / Folia 系核心 · Netty 层无感拦截 · 多 Yggdrasil 认证服务
简介
RSLB (RSereneLoginBukkit) 是一款专为 Paper/Folia 系服务端设计的登录插件。它通过拦截 Netty 登录管道,将原版会话验证替换为多服务认证。
核心优势:一个服务器可同时承载正版玩家与 LittleSkin 等外置登录玩家,无需客户端安装任何模组,实现真正的无感知混合登录。
功能特性
- 多认证服务并存:内置官方正版与 LittleSkin 服务配置,支持自定义添加其他兼容 Yggdrasil API 的服务。
- Netty 层无感登录:在底层接管 hasJoined 验证,玩家使用原版方式登录即可,无需额外客户端。
- 智能档案系统:支持单账号多游戏档案 (/rslb profile create),登录时自动按数据库映射分配。
- 名称冲突自动纠正:登录时若名字被占用,自动追加数字 (Steven → Steven1),杜绝卡登录界面。
- 旧名自动回收机制:正版玩家改名后,旧档案名自动释放供他人注册,有效防止抢注。
- 精细化白名单:支持按认证服务独立开启白名单,非白名单账号在登录阶段即被拒绝。
- 权限感知 TAB 补全:无权限指令自动隐藏;参数补全受权限约束,安全且便捷。
- 风险操作二次确认:内置 /rslb confirm 机制,防止误删数据等高危操作。
- 灵活数据持久化:默认内置 H2 数据库,亦可无缝切换至 MySQL (HikariCP 连接池)。
- 皮肤修复 (SkinRestorer):集成 MineSkin v2 API,自动修复外置登录皮肤对正版客户端不可见的问题,支持缓存与限速。
- 完整中文本地化:所有消息集中于 messages.yml,支持颜色码,修改自由度高。
环境要求与必配项
| 项目 | 要求 | | 服务端核心 | Paper / Folia 及其分支 (例如 Purpur、Leaf、Lophine) | | Java 运行时 | Java 25+ |
目前支持的 Minecraft 版本: 26.2、26.3
server.properties 必配项
- online-mode=true:插件在 Netty 层接管验证,必须开启在线模式。
- enforce-secure-profile=false:必须关闭,否则外置登录玩家会被强制踢出。
下载与安装
获取稳定版 (GitHub Releases)
- 访问仓库:https://github.com/Rain-Serenity/RSLB/releases
- 找到适用于你 Minecraft 版本的插件版本;
- 下载 Assets 中的 RSLB-x.x-all.jar
- 将 RSLB-x.x-all.jar 放入 plugins/ 文件夹
提示:也可在代码仓库的 Actions 页面下载开发版。
首次启动文件结构
- plugins/RSLB/
- ├── config.yml # 主配置
- ├── messages.yml # 语言文件
- ├── services/ # 认证服务配置目录
- │ ├── official.yml # 正版服务配置
- │ └── littleskin.yml # LittleSkin 服务配置
- ├── RSLB.mv.db # H2 数据库文件
- └── bStats/ # 统计配置
复制代码
注:升级时若 messages.yml 缺少新键会自动补全,但已存在的键不会覆盖。如需恢复默认请删除后重启。
配置详解
config.yml 核心配置
- settings:
- debug: false # DEBUG 日志开关
- welcome-message: true # 登录欢迎消息
- profile-key-verify: false # 聊天公钥校验 (建议关闭以免外置玩家被踢)
- name-allowed-regular: '^[0-9a-zA-Z_]{3,16}$' # 档案名正则
- auto-correct-name: true # 名字冲突自动追加数字
- auto-name-change: true # 改名后自动回收旧名
- confirm-command-valid-mills: 15000 # 确认指令有效期(ms)
- metrics-enabled: true # bStats 统计开关
- database:
- backend: H2 # H2 或 MYSQL
- host: 127.0.0.1 # MySQL 地址
- port: 3306 # MySQL 端口
- username: root # MySQL 用户
- password: root # MySQL 密码
- database: rslb # 库名
- table-prefix: rslb # 表前缀
复制代码
services/*.yml 认证服务配置
- id: 0 # 服务 ID (0-127, 全局唯一)
- name: '正版登录' # 显示名称
- initNameFormat: '{name}' # 初始档案名格式
- initUUID: DEFAULT # UUID策略: DEFAULT/OFFLINE/RANDOM
- serviceType: OFFICIAL # OFFICIAL / LITTLESKIN
- skinRestorer: # 皮肤修复配置
- restorer: 'OFF' # OFF / LOGIN
- method: URL # URL / UPLOAD
- mineskinApiKey: '' # MineSkin API Key
- whitelist: false # 是否启用该服务白名单
- yggdrasilAuth:
- retry: 1 # 验证重试次数
- timeout: 10000 # 超时时间(ms)
- trackIp: false # 是否提交IP
复制代码
指令与权限列表
| 指令 | 权限节点 | 默认 | 说明 | | /rslb help | rslb.base | 所有人 | 查看帮助列表 | | /rslb confirm | rslb.confirm | 所有人 | 确认风险操作 | | /rslb link to <玩家> | rslb.link.to | 所有人 | 请求迁移账号 | | /rslb info [玩家] | rslb.info.* | OP | 查询档案信息 | | /rslb rename <新名> [档案] | rslb.rename.* | OP | 修改档案名 | | /rslb whitelist add/remove | rslb.whitelist.* | OP | 管理白名单 | | /rslb profile create/set | rslb.profile.* | OP | 档案管理 | | /rslb reload | rslb.reload | OP | 重载配置 |
提示:TAB 补全会根据权限自动隐藏不可用指令及参数。
常见问题 FAQ
- Q: TAB 补全不显示指令?
A: 检查 rslb.tab.complete 权限(默认所有人拥有),或确认当前账号是否有对应指令权限。 - Q: 踢出消息显示 & 原文?
A: 请使用 GitHub Actions 的最新构建版本。 - Q: 升级后配置不生效?
A: 旧版 config.yml 结构变更不会自动覆盖,请对照文档手动更新或删除重建。 - Q: 所有玩家都无法登录?
A: 检查 services/ 目录下是否存在有效配置文件,且各服务 id 没有重复。
|