[开源|工具|安全]RSLB —— 适用于Paper及Paper分支的正版登录与外置登录共存插件[26.2 - 26.3]
RSLBRSereneLoginBukkit — 正版与外置登录共存解决方案
支持 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: '^{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 helprslb.base所有人查看帮助列表
/rslb confirmrslb.confirm所有人确认风险操作
/rslb link to <玩家>rslb.link.to所有人请求迁移账号
/rslb info [玩家]rslb.info.*OP查询档案信息
/rslb rename <新名> [档案]rslb.rename.*OP修改档案名
/rslb whitelist add/removerslb.whitelist.*OP管理白名单
/rslb profile create/setrslb.profile.*OP档案管理
/rslb reloadrslb.reloadOP重载配置
提示:TAB 补全会根据权限自动隐藏不可用指令及参数。
常见问题 FAQ
[*]Q: TAB 补全不显示指令?
A: 检查 rslb.tab.complete 权限(默认所有人拥有),或确认当前账号是否有对应指令权限。
[*]Q: 踢出消息显示 & 原文?
A: 请使用 GitHub Actions 的最新构建版本。
[*]Q: 升级后配置不生效?
A: 旧版 config.yml 结构变更不会自动覆盖,请对照文档手动更新或删除重建。
[*]Q: 所有玩家都无法登录?
A: 检查 services/ 目录下是否存在有效配置文件,且各服务 id 没有重复。
开源协议与致谢
本项目基于 MultiLogin 二次开发,继承 GPL-3.0 协议。
皮肤修复功能部分参照 SkinsRestorer 。如果你觉得这个项目对你有帮助的话欢迎支持我们!
页: [1]