Skip to content

MythicMobs 集成 ​

EmakiLevel 与 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.enabledboolean否truetrue / falseMythicMobs 集成的总开关. 关闭后击杀来源和 Drop 都不处理
mythicmobs.kill_sourcesboolean否truetrue / false是否启用 mythic_mob_kill 来源规则
mythicmobs.drops.enabledboolean否truetrue / false是否注册 MythicMobs 自定义 Drop
mythicmobs.drops.nameslist<string>否emakilevel_exp, elv_exp—能识别的 Drop 名称. 留空时用默认名称

改完执行 /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_kill 与 mythic_mob_kill 两类来源
  • mob_ids 与识别出的 ID 会做大小写统一后匹配
  • 命中规则后, 把经验写入该来源的 type, 默认 combat
  • 该来源同样支持 anti_abuse.exp_cooldown_ticks, ignore_near_spawner 和 spawner_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 时, 也会跳过发放