Suite

联动

CombatEffect EventBus 事件、Chronos 集成、属性插件与跨模块联动

联动

CombatEffect 模块通过 EventBus 与其他模块联动,并可触发特效供其他模块调用。模块为纯事件驱动型,不涉及数据库持久化与跨服同步。

EventBus 事件

CombatEffect 模块发布 3 个事件主题,供其他模块(如 BattlePass、EventPacket)订阅:

事件主题触发时机payload 字段说明
axs.combateffect.kill_entity玩家击杀非玩家活体实体entityType、entityName击杀怪物/动物等
axs.combateffect.player_death玩家击杀其他玩家entityType、entityName、victimPVP 击杀
axs.combateffect.damage_dealt玩家对活体实体造成伤害attacker、targetType、targetName、damage含 TACZ 枪械伤害

payload 字段说明

kill_entity / player_death

字段说明
entityType目标实体类型名(如 ZOMBIE、PLAYER)
entityName目标实体名称
victim仅 player_death 主题包含,死亡玩家名称

damage_dealt

字段说明
attacker攻击者玩家名
targetType目标实体类型名
targetName目标实体名称
damage最终伤害值
headshot仅 TACZ 枪械伤害包含,是否爆头(true / false)
source仅 TACZ 枪械伤害包含,固定为 tacz

TACZ 枪械伤害与原版伤害发布到同一主题,payload 结构一致,下游消费者无需区分伤害来源。事件主题支持末尾 .* 通配符订阅,如 axs.combateffect.* 匹配全部事件。

Chronos 集成

CombatEffect 与 ArcartX Chronos 插件深度集成。Chronos 未安装时相关功能自动降级,不影响模块正常加载。

功能Chronos 用途降级行为
连击追踪按状态组累加连击回退到原版伤害事件统计
死亡缓冲缓冲期间强制玩家进入指定 Chronos 状态不进入 Chronos 状态,仅应用 Shader/相机
状态触发器状态进入/离开触发特效触发器不启用
控制器触发器控制器切换触发特效触发器不启用

属性插件集成

伤害飘字子系统支持多种属性插件作为伤害来源,按优先级自动检测与回退:

优先级来源配置值
1MythicLib / MMOItemsmythiclib
2CraneAttributecraneattribute
3AttributePlusattributeplus
4Symphonysymphony
5Bukkit 原版bukkit

治疗飘字支持原版治疗与 MythicMobs 技能治疗(需 MythicMobs 插件)。

跨服同步

CombatEffect 模块不涉及跨服数据同步。所有战斗特效均为单服实时事件,不跨服传播。

模块集成示例

BattlePass 任务订阅

BattlePass 模块可订阅 CombatEffect 发布的 EventBus 事件主题,追踪玩家击杀与伤害行为:

# 每日击杀任务
daily-kill-10:
  display-name: "日常狩猎"
  description: "击杀10个任意生物"
  difficulty: easy
  event-topic: "axs.combateffect.kill_entity"
  required-count: 10
  base-xp-reward: 120
  increment-strategy:
    type: fixed
    value: 1
  weight: 4
# PVP 击杀任务
daily-pvp-kill:
  display-name: "竞技场高手"
  description: "PVP 击杀3名玩家"
  difficulty: hard
  event-topic: "axs.combateffect.player_death"
  required-count: 3
  base-xp-reward: 300
  increment-strategy:
    type: fixed
    value: 1
  weight: 1

EventPacket 规则订阅

EventPacket 模块可订阅伤害事件,根据伤害值触发自定义规则:

# 高伤害成就
high-damage-achievement:
  event-topic: "axs.combateffect.damage_dealt"
  conditions:
    - type: event_payload
      key: damage
      operator: greater_than
      value: "500"
  actions:
    - type: command
      command: "say {attacker} 造成了 {damage} 点伤害!"

通过 Capability 主动触发

其他模块可通过 CombatEffectTriggerable Capability 主动触发战斗特效(按包 ID 触发或直接发包),详见 包定义 - 手动触发。

相关文档

本页目录