LibreLogin API 知识文档
LibreLogin 是一个开源的、跨平台的、高度可定制的 Minecraft 身份验证插件,提供丰富的 API 功能。
Overview
LibreLogin API 文档
概述
LibreLogin 是一个开源的、跨平台的、高度可定制的 Minecraft 身份验证插件,提供丰富的 API 功能。
包名
- 主包:
xyz.kyngs.librelogin.api - 事件包:
xyz.kyngs.librelogin.api.event.events
API 获取方式
Paper/Purpur 等 Bukkit 平台
var api = ((LibreLoginProvider<Player, World>) Bukkit.getPluginManager().getPlugin("LibreLogin")).getLibreLogin();
Velocity 平台
var api = ((LibreLoginProvider<Player, RegisteredServer>) server.getPluginManager().getPlugin("librelogin").orElseThrow().getInstance().orElseThrow()).getLibreLogin();
BungeeCord/Waterfall/Flamecord 等平台
var api = ((LibreLoginProvider<ProxiedPlayer, ServerInfo>) getProxy().getPluginManager().getPlugin("librelogin")).getLibreLogin();
多平台通用方式
获取 LibreLogin 插件实例后,需要将其转换为 LibreLoginProvider<?, ?>
事件系统
事件订阅
所有事件处理通过从 LibrePremiumPlugin 获取的 EventProvider 完成。
var eventTypes = eventProvider.getTypes();
eventProvider.subscribe(eventTypes.passwordChange, event -> {
var old = event.getOldPassword();
var newPassword = event.getUser().getHashedPassword();
// 执行自定义逻辑
});
可用事件
1. AuthenticatedEvent
包名: xyz.kyngs.librelogin.api.event.events.AuthenticatedEvent
描述: 玩家认证后触发的事件(包括手动认证和自动认证)
方法:
AuthenticationReason getReason()– 获取认证原因
认证原因枚举:
LOGIN– 玩家使用 /login 命令或被管理员登录REGISTER– 玩家注册PREMIUM– 玩家因启用自动登录功能而自动登录SESSION– 玩家因有效会话而登录
2. LimboServerChooseEvent
包名: xyz.kyngs.librelogin.api.event.events.LimboServerChooseEvent
描述: 允许确定玩家应发送到哪个 limbo 服务器
继承: ServerChooseEvent<P, S>
参考: ServerChooseEvent#setServer
3. LobbyServerChooseEvent
包名: xyz.kyngs.librelogin.api.event.events.LobbyServerChooseEvent
描述: 允许确定玩家在认证后或被踢后应发送到哪个服务器
继承: ServerChooseEvent<P, S>, CancellableEvent
方法:
Boolean isFallback()– 检查事件是否被调用以选择备用服务器(返回 null 表示未知)
4. PasswordChangeEvent
包名: xyz.kyngs.librelogin.api.event.events.PasswordChangeEvent
描述: 玩家更改密码后触发,此时玩家配置文件已更新
继承: PlayerBasedEvent<P, S>
方法:
HashedPassword getOldPassword()– 获取玩家的旧密码(哈希形式)
5. PremiumLoginSwitchEvent
包名: xyz.kyngs.librelogin.api.event.events.PremiumLoginSwitchEvent
描述: 玩家切换模式后触发,此时 getUser() 应已包含新状态,但在用户保存到数据库之前触发,允许覆盖状态
继承: PlayerBasedEvent<P, S>
6. WrongPasswordEvent
包名: xyz.kyngs.librelogin.api.event.events.WrongPasswordEvent
描述: 玩家尝试输入密码但与真实密码不匹配时触发
继承: PlayerBasedEvent<P, S>
方法:
AuthenticationSource getSource()– 获取错误密码的来源
认证来源枚举:
LOGIN– 玩家使用 /login 命令输入错误密码TOTP– 玩家使用 /login 命令输入错误的 TOTP 代码CHANGE_PASSWORD– 玩家使用 /changepassword 命令输入错误密码PREMIUM_ENABLE– 玩家使用 /premium 命令输入错误密码SET_EMAIL– 玩家使用 /setemail 命令输入错误密码
核心接口和类
EventProvider
事件提供者,用于订阅事件。
EventTypes
事件类型枚举,包含所有可用的事件类型。
PlayerBasedEvent
基于玩家的事件基接口,包含玩家相关信息。
ServerChooseEvent
服务器选择事件基接口,包含 setServer 方法。
CancellableEvent
可取消的事件接口。
HashedPassword
哈希密码类,用于密码加密处理。
使用注意事项
- API 完整性: 如果实现中包含但 API 中不包含的功能,请提交 issue
- 文档: 所有 API 方法都有文档,IDE 应自动下载源代码以便查看
- 平台适配: 根据目标平台使用相应的 API 获取方式
- 事件处理: 使用 EventProvider 订阅事件,注意事件触发时机
版本要求
- Java 21 或更高版本
许可证
MPL-2.0 许可证
内容来自 SnowCutieOwO – Wiki