Skip to content

技能触发器

生物定义中的 skills 节点将触发器事件与 CoreLib 动作管道绑定。需要安装 EmakiSkills 插件方可生效。

触发器列表

触发器触发时机主要上下文变量
on_spawn生物刷出(由 MobFactory 立即执行)self(生物本身)
on_death生物死亡selfkiller(击杀者,可为 null)
on_target生物锁定新目标selftarget(目标实体)
on_damage_give生物对目标造成伤害selftargetdamage(伤害量)
on_damage_take生物受到伤害selfattacker(攻击者,可为 null)、damage
on_kill生物击杀某实体selfvictim(被击杀实体)
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。
count1召唤数量。小于 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 文档了解所有可用动作及其参数格式。