联动
EventPacket 跨模块联动与 Capability
依赖关系
| 类型 | 依赖 | 作用 | 缺少时表现 |
|---|---|---|---|
| 必需 | ArcartXSuite 本体 | 核心 API、存储管理、Capability 注册、PacketBridge、脚本条件引擎 | 模块无法运行 |
| 可选 | PlaceholderAPI | PAPI 触发器(papi-increase/decrease/threshold)和 PAPI 条件 | 这部分触发器和条件不生效,启动时输出警告 |
| 可选 | Chemdah | Chemdah 任务事件触发器(quest-/objective-/chemdah-level-change) | 这部分触发器不生效,启动时输出警告 |
SignalDispatchable Capability
EventPacket 模块注册了 SignalDispatchable Capability,供其他模块跨模块调用发送命令信号。信号发送后,所有 trigger: command-signal 且 signal 匹配的规则将被触发。
接口方法
调用示例
信号发送后,规则中可通过 {boss_id}、{damage} 等上下文变量引用传入的变量。
消费的 Capability
EventPacket 模块在动作执行时通过 Capability Supplier 延迟获取其他模块的能力。缺失能力时对应动作直接跳过,不报错。
| Capability | 消费动作 | 提供模块 | 缺失时表现 |
|---|---|---|---|
QuestGpsNavigable | questgps.offer、questgps.accept、questgps.open、questgps.track | QuestGPS | 任务相关动作跳过 |
SubtitlePlayable | subtitle.play、announcer.play | Subtitle / Announcer | 字幕播放动作跳过 |
ChatCardSendable | chat.card | Chat | 聊天卡片动作跳过 |
TitleGrantable | title.give | Title | 称号发放动作跳过 |
MailDispatchable | mail.send | 邮件发送动作跳过 | |
QQBotBroadcastable | qq-broadcast | QQBot | QQ 广播动作跳过 |
PacketBridgeAPI | ui-packet、combateffect.play | 本体 PacketBridge | UI 包和战斗特效动作跳过 |
所有跨模块调用通过 Capability Supplier 完成,模块间无编译期依赖,缺失能力时优雅降级。
Chemdah 事件联动
安装 Chemdah 插件且配置了 Chemdah 触发器规则时,Chemdah 任务事件自动接入事件包分发系统。
可对接的 Chemdah 事件
| Chemdah 事件 | 触发器 | 注入变量 |
|---|---|---|
QuestEvents$Accept$Post | quest-accept | {quest_id} |
QuestEvents$Complete$Post | quest-complete | {quest_id} |
QuestEvents$Fail$Post | quest-fail | {quest_id} |
ObjectiveEvents$Complete$Post | objective-complete | {quest_id}、{task_id}、{objective_type}、{objective_name} |
ObjectiveEvents$Continue$Post | objective-continue | {quest_id}、{task_id}、{objective_type}、{objective_name} |
ObjectiveEvents$Restart$Post | objective-restart | {quest_id}、{task_id}、{objective_type}、{objective_name} |
PlayerEvents$LevelChange | chemdah-level-change | {level_option}、{old_level}、{new_level}、{old_experience}、{new_experience}、{level_delta} |
signal 过滤说明
| 触发器 | signal 过滤规则 |
|---|---|
quest-accept / quest-complete / quest-fail | signal 留空匹配所有任务;填任务 ID 仅匹配该任务 |
objective-complete / objective-continue / objective-restart | signal 可填 quest_id 或 objective_name 过滤 |
chemdah-level-change | signal 填等级选项 ID 过滤(如 adventure) |
脚本触发器
EventPacket 支持 JavaScript 和 Aria 两种脚本触发器,按轮询周期评估脚本表达式。脚本返回 true 时触发规则(仅在从 false 变为 true 的上升沿触发)。
script-js
JavaScript 表达式中 player 变量直接注入 Bukkit Player 对象。
script-aria
Aria 表达式中 player 门面注入到 global. 命名空间,需用 global.player 访问。
数据存储
EventPacket 模块将击杀计数规则的累计进度与非 repeatable 规则的触发记录存储在数据库中(SQLite 或 MySQL,支持共享存储与自建存储模式)。
/axs migrate支持跨源数据迁移/axs purge支持按 UUID 或全量清理玩家数据