连击追踪与触发器
CombatEffect 连击追踪、死亡缓冲、按键触发器与状态/控制器触发器配置
连击追踪与触发器
付费模块
连击追踪、死亡缓冲、按键触发器与状态/控制器触发器是 CombatEffect 模块的高级战斗特效子系统。它们在基础击杀/攻击特效之上,提供连击里程碑、死亡可视化缓冲、按键驱动特效和 Chronos 状态联动等能力。所有子系统可独立开关,互不依赖。
子系统概览
| 子系统 | 配置节 | 依赖 | 默认状态 |
|---|---|---|---|
| 连击追踪 | combo-tracker | Chronos(可选) | 禁用 |
| 死亡缓冲 | death-buffer | ArcartX(视觉)/ Chronos(可选) | 禁用 |
| 按键触发器 | keybind-trigger | ArcartX | 禁用 |
| 状态/控制器触发器 | state-trigger | Chronos | 禁用 |
四个子系统均默认禁用,需在
config.yml中显式启用。启用时需确保对应依赖已安装,否则自动降级或保持禁用。
连击追踪
追踪玩家连续攻击次数,达到条件时触发特效包,并可实时同步连击数到客户端变量。
连击来源
连击来源通过 combo-tracker.source 配置,支持三种模式:
| 来源模式 | 配置值 | 说明 | 降级行为 |
|---|---|---|---|
| 自动检测 | auto | Chronos 可用时优先 Chronos,否则回退原版伤害事件 | Chronos 不可用 → Bukkit |
| 仅 Chronos | chronos | 仅使用 Chronos 状态进入事件 | Chronos 不可用 → 不启用 |
| 仅 Bukkit | bukkit | 仅使用原版伤害事件 | 无降级 |
Chronos 状态组过滤
Chronos 来源模式下,仅指定状态组的状态进入才计为连击一击:
| 配置项 | 默认值 | 说明 |
|---|---|---|
combo-tracker.chronos-groups | ["攻击", "连击"] | 状态组过滤列表 |
超时重置
| 配置项 | 默认值 | 说明 |
|---|---|---|
combo-tracker.timeout | 2000 | 超时重置时间(毫秒),最小 200 |
超时后连击数重置为 0,同时同步客户端变量为 0。
目标锁定模式
per-target | 行为 | 适用场景 |
|---|---|---|
false(默认) | 切换目标不重置,连续攻击任意目标均累加 | 群战、清怪 |
true | 切换目标重置为 1,仅对同一目标的连续攻击累加 | Boss 战、单挑 |
per-target仅在 Bukkit 来源模式下有效(Chronos 来源无目标概念)。
客户端变量同步
| 配置项 | 默认值 | 说明 |
|---|---|---|
combo-tracker.sync-variable | false | 是否同步连击数到客户端变量 |
combo-tracker.variable-name | combo_count | 客户端变量名 |
开启后可在 UI 中引用实时连击数:
推荐方式:开启
sync-variable后用{server.combo_count}显示实时数字,特效包仅用于里程碑动画(如 5 连击闪光、10 连击特效)。
连击包触发条件
trigger: combo 的包定义按以下条件触发:
combo-repeat | combo-min | 触发时机 |
|---|---|---|
false | 5 | 仅当连击数恰好达到 5 时触发一次 |
false | 0 | 每一击都触发 |
true | 5(combo-max=10) | 5~10 连击范围内每一击都触发 |
连击特效仅发给攻击者自己。
死亡缓冲
在玩家受到致死伤害时拦截,给玩家一个可视化缓冲期后再真正死亡。
行为流程
- 检测伤害是否致死,是则取消伤害并进入缓冲状态
- 冻结玩家(无敌、无法移动、血量保留微量)
- 应用视觉效果(Shader、第三人称、预设相机、Chronos 状态)
- 触发
trigger: death的包定义 - 缓冲时长结束后执行真正死亡
缓冲期间玩家受到的一切伤害都会被取消。玩家退出时自动清理缓冲状态。
视觉效果
| 效果 | 配置项 | 说明 |
|---|---|---|
| Shader | visuals.shader | ArcartX Shader 名称(灰度/模糊等) |
| 第三人称视角 | visuals.third-person-camera | 切换到第三人称视角,缓冲结束后恢复 |
| 预设相机 | visuals.camera-preset | ArcartX 预设相机 ID |
| Chronos 状态 | visuals.chronos.enabled + visuals.chronos.state-id | 强制玩家进入指定 Chronos 状态 |
ArcartX 未安装时视觉效果不应用,但不影响缓冲流程。
缓冲配置
| 配置项 | 默认值 | 说明 |
|---|---|---|
death-buffer.duration | 3000 | 缓冲持续时间(毫秒),最小 500 |
death-buffer.block-auto-respawn | true | 缓冲期间阻止其他插件触发的自动复活 |
death-buffer.world-blacklist | [] | 不启用死亡缓冲的世界列表 |
死亡包接收者
| 接收者 | 实际接收 | 说明 |
|---|---|---|
target | 被击杀的玩家 | 显示全屏死亡界面 |
attacker | 击杀者 | 复用击杀特效 HUD 显示击杀提示 |
环境死亡(摔落、岩浆等)无击杀者,仅
target接收者会收到死亡缓冲包。
按键触发器
监听 ArcartX 客户端按键事件,匹配 trigger: keybind 的包定义并发送特效。需要 ArcartX 安装且 keybind-trigger.enabled=true。
按键类型
| 按键类型 | 配置值 | 说明 |
|---|---|---|
| 客户端按键 | client | ArcartX 标准按键绑定(支持按下/释放) |
| 简易按键 | simple | 轻量按键(支持按下/释放) |
| 按键组 | group | 按键组按下事件(无释放事件) |
按键组仅有按下事件,
key-action: release对按键组类型无效。
匹配条件
| 匹配维度 | 条件字段 | 说明 |
|---|---|---|
| 按键名称 | key-name | 通配符匹配(* 匹配任意字符序列) |
| 按键类型 | key-type | client / simple / group |
| 按键动作 | key-action | press / release / both |
按键触发示例
按键触发器的接收者始终为触发的玩家自身。变量替换支持
{player}和{key_name}。
状态/控制器触发器
监听 Chronos 状态进入/离开与控制器切换事件,匹配 trigger: state 和 trigger: controller 的包定义。需要 Chronos 安装且 state-trigger.enabled=true。
状态触发
state-action | 触发时机 |
|---|---|
enter | 进入状态时 |
leave | 离开状态时 |
both | 进入或离开均触发 |
| 匹配维度 | 条件字段 | 说明 |
|---|---|---|
| 状态 ID | state-id | 通配符匹配(* 匹配任意字符序列) |
| 动作 | state-action | enter / leave / both |
| 控制器过滤 | controller-id | 可选,通配符匹配;为空时不做控制器过滤 |
控制器触发
controller-id 配置 | 匹配行为 |
|---|---|
| 未设置或为空 | 匹配所有控制器切换 |
设置值(如 弓箭手) | 仅匹配指定控制器 |
通配符(如 mode_*) | 通配符匹配控制器 ID |
状态/控制器触发示例
状态触发器的接收者始终为触发的玩家自身。变量替换支持
{player}、{state_id}和{controller_id}。
冷却
连击追踪的包分发不使用冷却(由 combo-min / combo-max / combo-repeat 条件控制频率)。按键触发器和状态/控制器触发器均支持独立冷却,与包定义系统冷却行为一致。参考 包定义系统。