联动
Prop 模块 EventBus 事件、属性桥接能力、跨服支持与模块集成
联动
EventBus 事件
Prop 模块通过 EventBusCapability 发布道具使用事件,其他模块可订阅该主题实现联动。
发布的事件
| 主题 | 触发时机 | Payload |
|---|---|---|
axs.prop.prop_used | 玩家成功使用道具后(效果执行完毕) | Map<String, String>,含 prop_id 字段 |
事件仅在道具使用成功后发布(通过全部检查、效果执行完毕)。冷却中、无权限、条件不满足等情况不会发布事件。
订阅示例
其他模块可在 startService() 中订阅 axs.prop.prop_used 主题:
其他模块可通过 eventBus.hasPublisher("axs.prop.prop_used") 检测 Prop 模块是否已加载并可订阅。
Capability 注册
PropAccessible(公开)
快捷道具公开能力(@PublicCapability),外部插件经 AxsCapabilities.get(PropAccessible.class) 获取;Prop 模块未启用时返回 null。所有方法请在 Bukkit 主线程调用。
| 方法 | 说明 |
|---|---|
propIds() | 已注册的道具 ID 列表 |
applyPropToMainHand(player, propId) | 将指定道具效果应用到玩家主手物品,返回 PropApplyResult(success, message) |
属性桥接能力
Prop 模块支持三套属性插件的临时属性加成,对应插件未安装时该类型效果自动跳过。
AttributePlus
- 效果类型:
ap,属性行列表(如物理伤害:10) - 持续道具
Duration秒,到期后自动移除;玩家下线时自动清除
MythicLib
- 效果类型:
ml/mythiclib - 来源前缀在
config.yml的mythiclib.source-prefix中配置(默认AXS_PROP) - 仅处理已在 MythicLib 注册的属性,未注册属性跳过并记录警告;到期自动移除
Symphony
- 效果类型:
sy/symphony,支持百分比修饰(payload 以%结尾) - 到期自动移除并重新计算玩家属性;玩家下线时自动清除
桥接状态查询
/axs prop status 命令可查看各属性插件的挂钩状态。
跨服支持
Prop 模块为纯内存运行模块,不涉及持久化存储,因此没有数据库表和跨服数据迁移需求。
| 项 | 说明 |
|---|---|
| 存储模式 | 无持久化存储 |
| 数据库表 | 无 |
| 跨服迁移 | 不适用 |
| 玩家数据清除 | 不适用 |
道具定义存储在 YAML 文件中,按键绑定通过客户端 MOD 管理,冷却通过客户端标签系统管理。各子服独立加载道具定义,无需跨服同步。
模块集成
与其他模块的联动
| 联动模块 | 联动方式 |
|---|---|
| AttributePlus | 通过 ap 效果附加临时属性词条,Duration 秒后自动移除 |
| MythicLib | 通过 ml / mythiclib 效果附加临时属性 modifier,Duration 秒后自动关闭 |
| Symphony | 通过 sy / symphony 效果附加临时属性修改,Duration 秒后自动移除并重新计算 |
| PlaceholderAPI | 道具 conditions 列表中使用 PAPI 变量进行使用条件判断 |
| 任意订阅模块 | 订阅 axs.prop.prop_used 事件,获取玩家使用道具的通知 |
典型联动场景
与 QQBot 模块联动
QQBot 模块可订阅 axs.prop.prop_used 事件,将道具使用通知推送到 QQ 群:
与 QuestGPS 模块联动
QuestGPS 模块可订阅 axs.prop.prop_used 事件,将道具使用作为任务完成条件: