Suite

概览

CombatEffect 战斗特效模块功能概览,击杀/连击/伤害飘字/死亡缓冲

CombatEffect 战斗特效

模块简介

CombatEffect 是 Suite 的战斗特效模块,为服务器提供完整的战斗可视化体系。模块监听玩家攻击、击杀、死亡等战斗事件,通过 ArcartX UI 客户端包向玩家发送自定义特效包,同时将伤害与治疗事件桥接到 ArcartX 数字飘字显示系统。

模块由五个子模块组成,各子模块可独立开关:

  • 击杀/攻击特效(kill-effect):监听击杀与攻击事件,向攻击者发送 UI 包触发 HUD 动画
  • 连击追踪(combo-tracker):追踪连续攻击次数,支持里程碑特效与客户端实时同步
  • 死亡缓冲(death-buffer):拦截致死伤害,在真正死亡前给玩家一个可视化缓冲期
  • 伤害飘字(digis-display):将伤害与治疗事件桥接到 ArcartX 数字飘字,支持四插件属性来源自动检测
  • 按键/状态触发器(keybind-trigger / state-trigger):通过按键和 Chronos 状态触发自定义特效包

所有特效均通过 ArcartX UI 客户端渲染,服务端仅负责事件监听与包分发,不涉及任何服务端菜单或 BossBar。

属性值
模块 IDcombateffect
版本1.4.4
配置文件config.yml、messages.yml、packets/(特效包定义目录)
命令入口管理 /axs combateffect(无玩家命令)
外部依赖ArcartX(必需);ArcartX_Chronos_Plugin(可选,连击追踪)
模块依赖无
对外能力CombatEffectTriggerable(其他模块触发特效播放)

功能特性

特性说明
击杀特效玩家击杀活体实体时向攻击者发送击杀特效包,HUD 显示击杀贴图与计数
攻击特效玩家攻击活体实体时触发命中特效,高频事件支持冷却控制
黑名单过滤支持 MythicMob ID 黑名单与 Bukkit EntityType 黑名单
实体战斗过滤可选处理玩家目标与非玩家活体实体,保持旧版 PVP 行为
连击追踪追踪连续攻击次数,超时自动重置,支持 Chronos 状态事件或 Bukkit 攻击事件作为来源
目标锁定可选切换攻击目标时重置连击,适用于 Boss 战场景
客户端同步实时同步连击数到 ArcartX 客户端服务器变量 {server.combo_count}
里程碑触发连击达到指定数量时触发特效包,支持单次触发与重复触发两种模式
死亡缓冲拦截致死伤害,延迟真正死亡,期间播放 Shader / 相机 / Chronos 死亡动作
视觉效果支持 ArcartX Shader(灰度/模糊)、第三人称视角、预设相机
Chronos 集成缓冲期间强制玩家进入指定 Chronos 状态,连击追踪支持 Chronos 状态组过滤
四插件属性来源MythicLib/MMOItems → CraneAttribute → AttributePlus → Symphony → Bukkit 原版,自动按优先级选择
多类型飘字原始伤害、PVP 伤害、暴击、闪避、元素克制(优势/劣势)六种飘字样式
治疗飘字原版治疗与 MythicMobs 技能治疗,支持精确模式(扣除溢出)
伤害合并短时间内的多段伤害合并为一次飘字,减少高频发包
最小阈值低于阈值的伤害不显示,避免微量数字刷屏
来源回退指定伤害来源不可用时自动回退到下一个可用来源
按键触发监听 ArcartX 按键事件(client / simple / group),按下/释放均可触发特效
状态触发监听 Chronos 状态进入/离开与控制器切换事件,支持通配符匹配
冷却控制每个包定义可配置独立冷却时间,同一玩家在冷却内不会重复收到此包
手动触发支持通过命令或 API 手动触发任意包定义,绕过事件匹配
EventBus 发布击杀、伤害、死亡事件自动发布到 Suite EventBus,供其他模块订阅

依赖

依赖类型名称说明
外部硬依赖ArcartXUI 渲染、伤害飘字显示、客户端包通讯
外部软依赖ArcartX_Chronos_Plugin连击追踪状态事件、死亡缓冲状态集成、状态/控制器触发器
可选属性插件MythicLib / MMOItemsMythicLib 属性伤害飘字
可选属性插件CraneAttributeCraneAttribute 属性伤害飘字
可选属性插件AttributePlusAttributePlus 属性伤害飘字
可选属性插件SymphonySymphony 元素/暴击伤害飘字(唯一提供暴击/闪避/克制标记)
可选插件MythicMobs / MythicBukkitMythicMobs 技能治疗飘字
可选插件TACZTACZ 枪械伤害与击杀事件(内置事件桥接,无需额外安装)

模块本身不硬依赖任何 ArcartX 模块。属性插件按功能选用,未安装时自动降级到 Bukkit 原版伤害事件。Chronos 未安装时连击追踪回退到 Bukkit 攻击事件,状态/控制器触发器不启用。

战斗特效机制

包定义系统

CombatEffect 的核心是包定义(PacketDefinition)系统。每个包定义描述了一次特效触发的完整规则:

# packets/default.yml 中的包定义示例
kill-effect:
  enabled: true                    # 是否启用
  trigger: kill                    # 触发器类型
  ui-id: "AXS:combat_kill_effect"  # 目标 ArcartX UI ID
  packet-handler: "kill"           # UI 中的 packetHandler 名称
  recipients:                      # 接收者列表
    - attacker                     # 攻击者
  cooldown: 500                    # 冷却时间(毫秒)
  pack:                            # 发包内容(支持变量替换)
    combo_count: "{combo_count}"

触发器类型

模块支持 8 种触发器,每种对应不同的战斗事件或交互行为:

触发器配置值触发时机条件字段
击杀kill玩家击杀活体实体时无
攻击attack玩家攻击活体实体时无
死亡death玩家即将死亡进入缓冲期时无
连击combo连击计数达到条件时combo-min / combo-max / combo-repeat
手动manual仅通过命令或 API 触发无
按键keybindArcartX 按键按下/释放时key-name / key-action / key-type
状态stateChronos 状态进入/离开时state-id / state-action / controller-id
控制器controllerChronos 控制器切换时controller-id

接收者类型

每个包定义可指定一个或多个接收者,模块根据触发场景解析实际接收玩家:

接收者配置值说明
攻击者attacker / killer攻击者或击杀者(按键/状态触发时为触发的玩家)
目标target受害者(仅当目标为玩家时可接收)

变量替换

包内容(pack)中的字符串支持变量替换,不同触发器提供不同的内置变量:

触发器可用变量
kill / attack{attacker} {target} {target_name} {damage} {mythic_mob_id} {entity_type} {recipient}
death{attacker} {target} {damage} {death_message} {recipient}
combo{combo_count} {player} {attacker}
keybind{player} {key_name}
state{player} {state_id} {controller_id}
controller{player} {controller_id}
手动触发{recipient} {player} + 自定义 k=v 变量

伤害来源解析

伤害飘字子系统支持 6 种伤害来源模式,auto 模式按优先级自动检测:

digis-display:
  damage-display:
    source:
      mode: "auto"       # auto / mythiclib / craneattribute / attributeplus / symphony / bukkit
      fallback: true     # 指定来源不可用时是否回退

优先级顺序(auto 模式):

  1. MythicLib / MMOItems — MythicLib 结算后的玩家对实体伤害
  2. CraneAttribute — CraneAttribute 结算后的玩家对实体伤害
  3. AttributePlus — AttributePlus 伤害事件
  4. Symphony — Symphony 元素/暴击伤害
  5. Bukkit — 原版伤害事件(含 Projectile 弓箭/三叉戟)

暴击/闪避/克制飘字为全局配置,当前仅 Symphony 能在伤害事件中提供这些标记。其他属性插件触发时自动降级为普通伤害飘字。优先级:闪避 > 暴击 > 克制 > 普通伤害。

连击追踪流程

combo-tracker:
  enabled: true
  source: "auto"           # auto: Chronos 优先,否则回退 Bukkit
  timeout: 2000            # 超时重置(毫秒)
  sync-variable: true      # 同步到客户端变量
  variable-name: "combo_count"
  per-target: false        # 切换目标是否重置

连击追踪支持两种来源:

  • Chronos:监听 PlayerEnterStateEvent,当状态组匹配 chronos-groups 时累加连击
  • Bukkit:监听 EntityDamageByEntityEvent,基于时间窗口累加连击

每次连击累加后,模块会:

  1. 检查是否超过超时时间,超时则重置为 1
  2. 检查 per-target 模式,切换目标则重置
  3. 同步连击数到客户端服务器变量
  4. 遍历所有 trigger: combo 的包定义,检查 combo-min / combo-max / combo-repeat 条件
  5. 匹配则向接收者发送 UI 包

死亡缓冲流程

death-buffer:
  enabled: true
  duration: 3000           # 缓冲持续时间(毫秒)
  visuals:
    shader: ""             # ArcartX Shader 名称
    third-person-camera: true
    camera-preset: ""      # 预设相机 ID
    chronos:
      enabled: false
      state-id: "死亡"
  block-auto-respawn: true
  world-blacklist: []

死亡缓冲在玩家受到致死伤害时生效:

  1. 检测伤害是否致死,是则取消伤害并进入缓冲状态
  2. 冻结玩家(无敌、无法移动、血量保留微量)
  3. 应用视觉效果(Shader、第三人称、预设相机、Chronos 状态)
  4. 触发 trigger: death 的包定义
  5. 缓冲时长结束后执行真正死亡

玩家退出时自动清理缓冲状态。

相关文档

本页目录