简体中文
MythicMobs 集成
EmakiLevel 与 MythicMobs 怎么配合: 两种方式怎么开启, 参数怎么填, 以及两种方式怎么选
EmakiLevel 对 MythicMobs 提供两种集成方式:
- 击杀来源: 玩家击杀指定 MythicMob 后, 根据
sources/mythicmobs.yml给经验 - 自定义 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.enabled | boolean | 否 | true | true / false | MythicMobs 集成的总开关. 关闭后击杀来源和 Drop 都不处理 |
mythicmobs.kill_sources | boolean | 否 | true | true / false | 是否启用 mythic_mob_kill 来源规则 |
mythicmobs.drops.enabled | boolean | 否 | true | true / false | 是否注册 MythicMobs 自定义 Drop |
mythicmobs.drops.names | list<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}参数:
| 参数 | 默认 | 说明 |
|---|---|---|
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 示例
固定经验
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 时, 也会跳过发放