Skip to content

MythicMobs 集成

EmakiLevel 对 MythicMobs 提供两种集成方式:

  1. 击杀来源:玩家击杀指定 MythicMob 后,根据 sources/mythicmobs.yml 给经验。
  2. 自定义 Drop:在 MythicMobs 的 Drops 中直接写 emakilevel_exp{...}elv_exp{...},触发非实物经验奖励。

两者可以同时使用,也可以只启用其中一种。

启用条件

paper-plugin.yml 中 MythicMobs 是 dependencies.server 可选依赖;未安装 MythicMobs 时 EmakiLevel 会跳过相关桥接,不影响其他功能。

主配置:

yaml
mythicmobs:
  enabled: true
  kill_sources: true
  drops:
    enabled: true
    names:
      - "emakilevel_exp"
      - "elv_exp"
字段说明
mythicmobs.enabledMythicMobs 总开关。关闭后击杀来源和 Drop 都不处理。
mythicmobs.kill_sources是否启用 mythic_mob_kill 来源规则。
mythicmobs.drops.enabled是否注册 MythicMobs 自定义 Drop。
mythicmobs.drops.names可识别的 Drop 名称。默认 emakilevel_expelv_exp;为空时回退默认值。

修改后执行 /elv reload

MythicMob 击杀来源

默认文件:plugins/EmakiLevel/sources/mythicmobs.yml

yaml
id: "mythicmobs_sources"
enabled: true
sources:
  mythic_mob_kill:
    enabled: true
    type: "combat"
    trigger: "mythic_mob_kill"
    anti_abuse:
      exp_cooldown_ticks: 5
      ignore_near_spawner: true
      spawner_scan_radius: 8
    rules:
      - mob_ids: ["SkeletonKing", "UndeadKnight"]
        exp_formula: "50 + %mythic_level% * 5"
      - mob_ids: ["ForestBoss"]
        exp_formula: "300 + %mythic_level% * 20"

行为说明:

  • 玩家击杀实体时,CoreLib 会先发出 entity_kill 共享事件,再判断该实体是否是 MythicMob;识别成功后额外发出 mythic_mob_kill 事件。
  • 因此同一次击杀可能同时命中 entity_killmythic_mob_kill 两类来源。
  • mob_ids 与识别出的 ID 会做大小写归一后匹配。
  • 命中规则后,将经验写入该来源的 type,默认 combat
  • 该来源同样支持 anti_abuse.exp_cooldown_ticksignore_near_spawnerspawner_scan_radius

公式变量:

变量说明
%mythic_id%MythicMob 内部 ID。
%mythic_level%MythicMob 等级,由 CoreLib 共享事件提供。

示例:

yaml
sources:
  dungeon_boss_level:
    enabled: true
    type: "main"
    trigger: "mythic_mob_kill"
    rules:
      - mob_ids: ["DungeonBoss"]
        exp_formula: "500 + %mythic_level% * 50"

自定义 Drop

安装 MythicMobs 且 mythicmobs.drops.enabled: true 时,EmakiLevel 会监听 MythicDropLoadEvent 并注册非实物 Drop。该 Drop 不生成物品,而是直接给目标玩家等级经验。

最小示例:

yaml
Drops:
  - emakilevel_exp{type=main;amount=120}
  - elv_exp{type=combat;amount=80;reason=mythic_drop}

参数:

参数默认说明
typeconfig.yml > primary_type目标等级类型 ID。
amount1基础经验值。可以是数字,也可以是表达式。
amount_formula%amount% * %drop_amount%最终经验公式。
reasonmythic_drop操作原因,会进入升级动作变量 %reason%
auto_upgradetrue是否允许本次经验触发自动升级。
silentfalse是否静默传入等级服务;当前主要用于避免可选输出。

amount_formula 变量:

变量说明
%amount%amount 参数解析后的基础经验。
%drop_amount%MythicMobs 传入的 Drop 数量倍率。
%metadata_amount%MythicMobs DropMetadata 的 amount。
%generations%MythicMobs DropMetadata generations。
%tick%MythicMobs DropMetadata tick。
%player%获得 Drop 的玩家名。
%type%目标等级类型。
%drop%实际匹配到的 Drop 名称。

amount 本身不是纯数字时,也会先作为表达式计算。此时可用变量包括 %drop_amount%%metadata_amount%%generations%%tick%

Drop 示例

固定经验

yaml
Drops:
  - emakilevel_exp{type=combat;amount=50}

击杀或生成该 Drop 时给玩家 combat 经验 50 点。

按 Drop 数量倍率缩放

yaml
Drops:
  - emakilevel_exp{type=main;amount=100;amount_formula="%amount% * %drop_amount%"}

如果 MythicMobs 把该 Drop 的数量倍率传为 3,最终经验为 300。

Boss 根据生成次数缩放

yaml
Drops:
  - elv_exp{type=main;amount=200;amount_formula="%amount% + %generations% * 25";reason=boss_reward}

只加经验,不自动升级

yaml
Drops:
  - elv_exp{type=mining;amount=500;auto_upgrade=false;reason=event_reward}

这会把经验保留在当前等级内,玩家之后可以手动 /elv levelup mining

静默奖励

yaml
Drops:
  - elv_exp{type=combat;amount=25;silent=true;reason=mob_drop}

适合频繁小怪奖励,避免配合动作时产生过多提示。

与 sources/mythicmobs.yml 的选择

方式适合场景
mythic_mob_kill 来源统一按 MythicMob ID 配置,所有同 ID 怪物都给同类经验;配置集中在 EmakiLevel。
MythicMobs Drop奖励逻辑跟随 MythicMobs 怪物、掉落表或条件;方便在 MythicMobs 生态内按技能、掉落概率或掉落组控制。

如果两种方式都配置了,同一次击杀可能同时获得来源经验和 Drop 经验。正式服建议明确区分:

  • 普通 MythicMob 击杀基础经验:放在 sources/mythicmobs.yml
  • Boss、活动、稀有掉落、条件奖励:放在 MythicMobs Drops

目标玩家限制

自定义 Drop 的目标必须解析为 Bukkit Player。如果 MythicMobs 把 Drop 给了非玩家实体,EmakiLevel 会跳过本次奖励。

最终经验公式结果小于等于 0 时,也会跳过发放。