Skip to content

API 文档

本文档面向希望通过 API 扩展 SoulDungeon 的开发者。

版本提示

当前 API 为 v0.2.0 开发版,接口可能发生变动。后续版本将提供稳定的公开 API。

事件系统

SoulDungeon 通过 TabooLib 的 EventBus 发布事件,可通过 @SubscribeEvent 监听。

计划中的事件

事件触发时机
DungeonStartEvent副本开始
DungeonEndEvent副本结束
DungeonCompleteEvent副本通关
DungeonFailEvent副本失败
DungeonPlayerJoinEvent玩家进入副本
DungeonPlayerLeaveEvent玩家离开副本
DungeonStageChangeEvent副本阶段变化
DungeonInteractTriggerEvent交互触发
DungeonRewardEvent发放奖励

事件监听示例

kotlin
import taboolib.common.platform.event.SubscribeEvent
import org.bukkit.event.EventPriority

object MyListener {

    @SubscribeEvent(priority = EventPriority.NORMAL)
    fun onDungeonComplete(event: DungeonCompleteEvent) {
        // 自定义通关逻辑
    }

    @SubscribeEvent(ignoreCancelled = true)
    fun onPlayerJoin(event: DungeonPlayerJoinEvent) {
        // 玩家进入副本时的自定义处理
    }
}

扩展脚本动作

可以通过注册自定义脚本动作来扩展 $xxx 系统。

接口设计(计划中)

kotlin
interface DungeonScriptAction {
    val name: String                    // 动作名,如 "custom_action"
    fun execute(context: ScriptContext) // 执行逻辑
}

扩展交互类型

可以通过 API 注册自定义交互触发类型:

kotlin
interface DungeonInteractType {
    val typeName: String                // 类型标识
    fun register(instance: DungeonInstance)
    fun unregister(instance: DungeonInstance)
}

获取副本实例

kotlin
// 获取玩家的当前副本实例
val instance = DungeonAPI.getInstance(player)

// 获取所有运行中的实例
val instances = DungeonAPI.getRunningInstances()

// 获取副本配置
val config = DungeonAPI.getDungeonConfig("example")

占位符扩展

计划支持通过 PlaceholderAPI 的扩展机制注册自定义占位符:

kotlin
class SoulDungeonExpansion : PlaceholderExpansion() {
    override fun getIdentifier() = "souldungeon"
    override fun onPlaceholderRequest(player: Player, params: String): String? {
        // 处理占位符请求
    }
}

依赖方式

Gradle

kotlin
dependencies {
    compileOnly("com.yourorg:SoulDungeon:0.2.0")
}

将 SoulDungeon 的 jar 放入 libs/ 目录作为编译依赖。

Maven

xml
<dependency>
    <groupId>com.yourorg</groupId>
    <artifactId>SoulDungeon</artifactId>
    <version>0.2.0</version>
    <scope>provided</scope>
</dependency>

技术架构

text
SoulDungeon
├── 命令层 (Commands)
│   ├── /sd start/leave/info/list
│   └── /sd reload/import/instances/mobs/...
├── 副本管理层 (DungeonManager)
│   ├── 加载配置
│   ├── 创建/管理实例
│   └── 实例池维护
├── 实例层 (DungeonInstance)
│   ├── 世界管理
│   ├── 怪物组驱动
│   ├── 脚本执行引擎
│   └── 玩家管理
├── 脚本引擎 (ScriptEngine)
│   ├── 解析 $action{key=value}
│   ├── 目标路由 (@player/@dungeon/...)
│   └── 占位符替换
└── 事件总线 (EventBus)
    ├── 副本生命周期事件
    └── 扩展事件