技能触发器
生物定义中的 skills 节点将触发器事件与 CoreLib 动作管道绑定。需要安装 EmakiSkills 插件方可生效。
触发器列表
| 触发器 | 触发时机 | 主要上下文变量 |
|---|---|---|
on_spawn | 生物刷出(由 MobFactory 立即执行) | self(生物本身) |
on_death | 生物死亡 | self、killer(击杀者,可为 null) |
on_target | 生物锁定新目标 | self、target(目标实体) |
on_damage_give | 生物对目标造成伤害 | self、target、damage(伤害量) |
on_damage_take | 生物受到伤害 | self、attacker(攻击者,可为 null)、damage |
on_kill | 生物击杀某实体 | self、victim(被击杀实体) |
on_shoot | 生物射出弹射物 | self |
on_explode | 生物爆炸(如苦力怕) | self |
on_teleport | 生物传送 | self |
on_transform | 生物变形(如僵尸猪灵变身) | self |
on_health_threshold_<百分比> | 生物血量首次降到该百分比及以下 | self |
血量阈值触发器
on_health_threshold_<百分比> 的百分比档位是固定的五档,只有以下五个键名会被触发:
on_health_threshold_90
on_health_threshold_75
on_health_threshold_50
on_health_threshold_25
on_health_threshold_10写其他数字(如 on_health_threshold_80)不会报错,但永远不会触发。
每个档位对同一只生物只触发一次。生物受到伤害时按 90 → 10 的顺序检查,一次伤害跨过多个档位时,被跨过的档位会在同一次伤害中依次触发。
NOTE
血量阈值随伤害事件一并检测,因此 on_damage_take 与命中的阈值触发器会同时执行。
动作字符串格式
每个触发器对应一组 CoreLib 动作管道字符串,格式为:
[选择器 |] 动作名 [参数=值 ...]常用选择器
| 选择器 | 说明 |
|---|---|
self | 触发该事件的生物自身 |
target | 当前事件的目标实体 |
killer | 击杀该生物的玩家(on_death 中使用) |
victim | 被该生物击杀的实体(on_kill 中使用) |
attacker | 攻击该生物的实体(on_damage_take 中使用) |
nearby radius=<n> type=player | 半径范围内的玩家 |
动作示例
yaml
skills:
on_spawn:
# 向附近 20 格内所有玩家发送消息
- "nearby radius=20 type=player | send_message text='<red>精英僵尸降临!'"
# 在自身位置播放粒子效果
- "self | spawn_particle particle=FLAME count=30 offset_x=0 offset_y=1 offset_z=0"
on_death:
# 向击杀者给予经验
- "killer | give_exp amount=80"
# 向附近玩家广播消息
- "nearby radius=50 type=player | send_message text='<green>精英僵尸已被击败!'"
on_damage_give:
# 对被攻击目标施加减速效果
- "target | give_potion_effect type=SLOWNESS level=1 duration=3s"
on_damage_take:
# 受伤时在自身位置产生火焰粒子
- "self | spawn_particle particle=FLAME count=10 offset_x=0 offset_y=1 offset_z=0"
on_target:
# 锁定目标时播放音效
- "self | play_sound sound=minecraft:entity.skeleton.ambient volume=1.0 pitch=0.7"EmakiMobs 注册的动作
除 CoreLib 内置动作外,EmakiMobs 自己向动作系统注册了 summon_mob。
summon_mob — 召唤生物定义
在目标位置召唤一只 EmakiMobs 生物定义。
| 参数 | 必需 | 默认 | 说明 |
|---|---|---|---|
mob_id | 是 | - | EmakiMobs 生物定义 ID。 |
count | 否 | 1 | 召唤数量。小于 1 时按 1 处理。 |
yaml
skills:
on_damage_take:
# 在自身位置召唤两只火焰守卫
- "self | summon_mob mob_id=fire_guardian count=2"
on_health_threshold_50:
# 半血时在击杀者位置召唤一只随从
- "killer | summon_mob mob_id=boss_minion"该动作需要目标能解析出位置。目标缺少位置时动作被跳过;mob_id 未填或指向不存在的定义时按配置错误处理,并在控制台留下记录。
NOTE
动作字符串的完整语法和可用动作列表由 EmakiCoreLib 提供。请参阅 CoreLib 文档了解所有可用动作及其参数格式。