[动作引擎]Chronos
API 与事件
Chronos Java API 和事件系统
忍耐是苦涩的,但它的果实却是甘甜的。
概述
Chronos 提供了完整的 Java API,让你可以在自己的插件中集成和扩展动作系统功能。
获取 API
API 接口
ChronosAPI 完整接口
API 方法详解
控制器管理
| 方法 | 说明 | 返回值 |
|---|---|---|
getPlayerControllerId(player) | 获取玩家当前控制器ID | String 或 null |
setPlayerController(player, id) | 为玩家设置控制器 | void |
removePlayerController(player) | 移除玩家的控制器 | void |
示例:根据职业设置控制器
状态查询
| 方法 | 说明 | 返回值 |
|---|---|---|
getPlayerStateId(player) | 获取玩家当前状态ID | String 或 null |
getPlayerStateGroupId(player) | 获取玩家当前状态组ID | String 或 null |
getPlayerCooldown(player, group) | 获取冷却组剩余时间(ms) | long |
示例:检查玩家是否在攻击状态
状态控制
| 方法 | 说明 | 返回值 |
|---|---|---|
tryEnterState(player, stateId) | 尝试进入状态(检查条件) | boolean |
tryEnterControlledState(player, stateId, duration) | 尝试进入受控状态 | void |
forceEnterStateFromRootChain(player, stateId) | 强制进入状态 | void |
示例:让玩家进入受击状态
示例:强制触发技能
tryEnterState vs forceEnterStateFromRootChain:
tryEnterState:会检查条件、冷却、blocked_group 等forceEnterStateFromRootChain:无视所有条件强制进入,但状态必须在 combo 根节点声明
上下文管理
| 方法 | 说明 | 返回值 |
|---|---|---|
getPlayerContext(player) | 获取玩家的 Glimmer 上下文 | Context |
示例:读取自定义变量
事件系统
Chronos 提供了三个核心事件,可以通过 Bukkit 事件系统监听。
PlayerEnterStateEvent
玩家进入状态时触发。
监听示例:
PlayerLeaveStateEvent
玩家离开状态时触发。
监听示例:
PlayerControllerChangeEvent
玩家控制器切换时触发。
监听示例:
集成示例
与 MythicMobs 集成
让怪物技能触发玩家受控状态:
与职业插件集成
根据职业切换控制器:
注意事项
线程安全: Chronos API 应该在主线程中调用。如果从异步任务中调用,请使用 Bukkit.getScheduler().runTask() 包装。
依赖声明: 在你的 plugin.yml 中添加依赖:
