Chosen_1st 发表于 5 天前

[开源|工具|安全]RSLB —— 适用于Paper及Paper分支的正版登录与外置登录共存插件[26.2 - 26.3]

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: '^{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]
查看完整版本: [开源|工具|安全]RSLB —— 适用于Paper及Paper分支的正版登录与外置登录共存插件[26.2 - 26.3]