Doc ID: SIRC-062

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

哈希密码类,用于密码加密处理。

使用注意事项

  1. API 完整性: 如果实现中包含但 API 中不包含的功能,请提交 issue
  2. 文档: 所有 API 方法都有文档,IDE 应自动下载源代码以便查看
  3. 平台适配: 根据目标平台使用相应的 API 获取方式
  4. 事件处理: 使用 EventProvider 订阅事件,注意事件触发时机

版本要求

  • Java 21 或更高版本

许可证

MPL-2.0 许可证


内容来自 SnowCutieOwO – Wiki