触发器
Skills 触发器决定技能什么时候被释放。系统分为主动触发器和被动触发器两种架构。
架构概述
- 主动触发器:玩家在 GUI 中将技能绑定到触发器槽位,通过对应操作释放。
- 被动触发器:技能配置中通过
passive_triggers声明,满足条件时自动触发。
text
主动技能:玩家在 GUI 绑定技能到 right_click 槽位 → 右键时释放
被动技能:技能配置 passive_triggers: [attack] → 攻击命中时自动触发主动触发器
主动触发器是全局槽位,玩家通过技能 GUI 将技能绑定到某个槽位。进入施法模式后,执行对应操作即可释放。
| 触发器 | 操作 |
|---|---|
left_click | 左键 |
right_click | 右键 |
shift_left_click | Shift + 左键 |
shift_right_click | Shift + 右键 |
drop_q | Q 键丢弃 |
hotbar_1 ~ hotbar_9 | 数字键 1~9 |
主动触发器的冷却由技能定义中的
cooldown_ticks和global_cooldown_ticks控制,不在触发器层面配置。
被动触发器
被动技能通过 trigger_type: passive 和 passive_triggers 列表声明。当列表中的事件发生时,自动尝试释放。
yaml
id: lifesteal_passive
trigger_type: passive
passive_triggers:
- attack
cooldown_ticks: 60完整被动触发器列表
| 触发器 | 触发时机 |
|---|---|
attack | 攻击命中实体。 |
damaged | 受到任何伤害。 |
damaged_by_entity | 被实体伤害。 |
death | 玩家死亡。 |
kill_entity | 击杀非玩家实体。 |
kill_player | 击杀玩家。 |
shoot_bow | 射出弓箭。 |
arrow_hit | 箭矢命中实体。 |
arrow_land | 箭矢落地(未命中)。 |
shoot_trident | 掷出三叉戟。 |
trident_hit | 三叉戟命中实体。 |
trident_land | 三叉戟落地。 |
break_block | 破坏方块。 |
place_block | 放置方块。 |
drop_item | 丢弃物品。 |
shift_drop_item | Shift + 丢弃物品。 |
swap_items | 交换主副手。 |
shift_swap_items | Shift + 交换主副手。 |
login | 玩家登录。 |
sneak | 潜行切换。 |
teleport | 传送。 |
timer | 定时触发(间隔由全局 passive_trigger_settings.timer_interval_ticks 控制)。 |
combo_attack | 连击触发。连续攻击间隔不超过 passive_trigger_settings.combo_timeout_ticks 时累计连击状态。 |
被动触发器全局设置
yaml
passive_trigger_settings:
timer_interval_ticks: 20
combo_timeout_ticks: 60| 字段 | 说明 |
|---|---|
timer_interval_ticks | timer 被动触发器的检查间隔。 |
combo_timeout_ticks | combo_attack 连击状态的超时时间。超过该间隔未攻击会重置连击。 |
触发器冲突解决
触发器之间存在互斥关系,通过 incompatible_with 声明双向互斥:
- 每个触发器与自身冲突(同一触发器不能绑定两个技能)。
- 互斥的触发器之间不能同时绑定技能(如
left_click与shift_left_click)。
冲突矩阵在配置加载时构建,玩家在 GUI 中绑定时会自动检查冲突。
施法模式
主动技能需要进入施法模式才能释放:
- 默认按 F 键切换施法模式(
cast_mode.entry_key: "f")。 restore_last_state_on_join: true时重登后恢复施法模式状态。- 施法模式下 ActionBar 显示技能槽信息。
ActionBar 模板变量
| 变量 | 说明 |
|---|---|
%slot_display% | 所有槽位合并显示。 |
%slot_1% ~ %slot_n% | 单个槽位显示。 |
%forced_delay% | 强制延迟剩余时间。 |
配置示例
主动技能
yaml
id: fireball
trigger_type: active
display_name: '<red>火球术'
cooldown_ticks: 100
global_cooldown_ticks: 20
resource_costs:
- type: ea-resource
target_id: mana
amount: 20
operation: consume玩家在 GUI 中将火球术绑定到 right_click 槽位,进入施法模式后右键释放。
被动技能
yaml
id: thorns_aura
trigger_type: passive
passive_triggers:
- damaged_by_entity
display_name: '<yellow>荆棘反击'
cooldown_ticks: 40被实体伤害时自动触发,受 cooldown_ticks 冷却限制。
定时被动
yaml
id: regen_aura
trigger_type: passive
passive_triggers:
- timer
display_name: '<green>恢复光环'
cooldown_ticks: 0
resource_costs:
- type: ea-resource
target_id: mana
amount: 5
operation: consume按全局 timer_interval_ticks 间隔自动触发。