MythicMobs 集成
EmakiLevel 对 MythicMobs 提供两种集成方式:
- 击杀来源:玩家击杀指定 MythicMob 后,根据
sources/mythicmobs.yml给经验。 - 自定义 Drop:在 MythicMobs 的
Drops中直接写emakilevel_exp{...}或elv_exp{...},触发非实物经验奖励。
两者可以同时使用,也可以只启用其中一种。
启用条件
paper-plugin.yml 中 MythicMobs 是 dependencies.server 可选依赖;未安装 MythicMobs 时 EmakiLevel 会跳过相关桥接,不影响其他功能。
主配置:
mythicmobs:
enabled: true
kill_sources: true
drops:
enabled: true
names:
- "emakilevel_exp"
- "elv_exp"| 字段 | 说明 |
|---|---|
mythicmobs.enabled | MythicMobs 总开关。关闭后击杀来源和 Drop 都不处理。 |
mythicmobs.kill_sources | 是否启用 mythic_mob_kill 来源规则。 |
mythicmobs.drops.enabled | 是否注册 MythicMobs 自定义 Drop。 |
mythicmobs.drops.names | 可识别的 Drop 名称。默认 emakilevel_exp、elv_exp;为空时回退默认值。 |
修改后执行 /elv reload。
MythicMob 击杀来源
默认文件:plugins/EmakiLevel/sources/mythicmobs.yml
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 共享事件提供。 |
示例:
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 不生成物品,而是直接给目标玩家等级经验。
最小示例:
Drops:
- emakilevel_exp{type=main;amount=120}
- elv_exp{type=combat;amount=80;reason=mythic_drop}参数:
| 参数 | 默认 | 说明 |
|---|---|---|
type | config.yml > primary_type | 目标等级类型 ID。 |
amount | 1 | 基础经验值。可以是数字,也可以是表达式。 |
amount_formula | %amount% * %drop_amount% | 最终经验公式。 |
reason | mythic_drop | 操作原因,会进入升级动作变量 %reason%。 |
auto_upgrade | true | 是否允许本次经验触发自动升级。 |
silent | false | 是否静默传入等级服务;当前主要用于避免可选输出。 |
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 示例
固定经验
Drops:
- emakilevel_exp{type=combat;amount=50}击杀或生成该 Drop 时给玩家 combat 经验 50 点。
按 Drop 数量倍率缩放
Drops:
- emakilevel_exp{type=main;amount=100;amount_formula="%amount% * %drop_amount%"}如果 MythicMobs 把该 Drop 的数量倍率传为 3,最终经验为 300。
Boss 根据生成次数缩放
Drops:
- elv_exp{type=main;amount=200;amount_formula="%amount% + %generations% * 25";reason=boss_reward}只加经验,不自动升级
Drops:
- elv_exp{type=mining;amount=500;auto_upgrade=false;reason=event_reward}这会把经验保留在当前等级内,玩家之后可以手动 /elv levelup mining。
静默奖励
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 时,也会跳过发放。