Skip to content

开发文档

注意

插件由 YeePlugin 在 onEnable 时云端加载,建议延迟 10–15 秒后再注册 Trigger 事件监听

API

TrigrexAPI

kotlin
object TrigrexAPI {
    /**
     * 触发事件
     * @param type 触发器类型
     * @param player 玩家
     * @param entity 目标实体
     * @param item 目标物品
     * @param location 目标路径,无目标时使用玩家路径
     * @param params 额外参数,可在处理器中作为变量使用
     * @param matcher 匹配回调,可使用处理器参数进行更多逻辑处理
     */
    fun fire(
        type: String,
        player: Player,
        entity: Entity? = null,
        item: ItemStack? = null,
        location: Location? = player.location,
        params: MutableMap<String, Any> = mutableMapOf(),
        matcher: Function<TriggerHandle, Boolean>? = null
    ): TriggerEvent {
        return TriggerEvent(
            type, player, entity, item, location, params, matcher ?: Function { true }).apply { call() }
    }

    /**
     * 触发(结束)事件
     * @param type 触发器类型
     * @param player 玩家
     * @param entity 目标实体
     * @param item 目标物品
     * @param location 目标路径,无目标时使用玩家路径
     * @param params 额外参数,可在处理器中作为变量使用
     * @param matcher 匹配回调,可使用处理器参数进行更多逻辑处理
     */
    fun end(
        type: String,
        player: Player,
        entity: Entity? = null,
        item: ItemStack? = null,
        location: Location? = player.location,
        params: MutableMap<String, Any> = mutableMapOf(),
        matcher: Function<TriggerHandle, Boolean>? = null
    ): TriggerEvent {
        return TriggerEvent(
            "$type-end", player, entity, item, location, params, matcher ?: Function { true }).apply { call() }
    }
}

触发器示例

kotlin
fun onEnable() {
    registerBukkitListener(EntityDamageByEntityEvent::class.java) { event ->
        val damager = event.damager as? Player ?: return@registerBukkitListener
        val entity = event.entity
        TrigrexAPI.fire("example", damager, entity, damager.inventory.itemInMainHand, entity.location)
    }
}

Event

提示

由于 YeePlugins 在 onEnable 阶段执行云端加载,若需注册监听,请在插件加载完成后通过循环检测再进行注册

触发器事件

kotlin

data class TriggerEvent(
    // 类型
    val type: String,
    // 触发者
    val player: Player,
    // 触发者目标实体
    val entity: Entity? = null,
    // 目标物品
    val item: ItemStack? = null,
    // 目标位置,交互方块坐标等
    val position: Location? = null,
    // 额外参数
    val params: MutableMap<String, Any> = mutableMapOf(),
    // 触发器匹配回调
    val matcher: Function<TriggerHandle, Boolean> = Function { true }
) : BukkitProxyEvent(), Cancellable

处理器注册事件

kotlin

data class HandleRegisterEvent(
    // 处理器
    var handle: TriggerHandle
) : BukkitProxyEvent(), Cancellable

处理器卸载事件

kotlin

data class HandleUnregisterEvent(
    // 插件名
    val plugin: JavaPlugin,
    val handles: List<TriggerHandle>
) : BukkitProxyEvent()