怪物配置 monsters.yml
monsters.yml 定义了地牢中的怪物组。每个怪物组包含一组怪物和它们的刷新规则。
需要安装 MythicMobs 插件。
groups: wave_1: auto_start: false spawn_timing: type: MANUAL # 刷新方式(默认 MANUAL) delay: 0 # 延迟秒数(DELAYED 类型用,默认 0) trigger_group: "" # 触发组ID(TRIGGERED 类型用) trigger_script: "" # 触发脚本(SCRIPTED 类型用,可选) condition: [] # 刷新条件表达式(字符串列表,可选) monsters: - id: "Zombie_Warrior" # MythicMobs 怪物ID location: "10,64,10" # x,y,z amount: 3 level: 1 - id: "Skeleton_Archer" location: "15,64,15" amount: 2 level: 1 on_start: # 怪物组开始刷新时执行 - "action.title('@all', '&c第一波', '&7消灭所有怪物!')" on_end: # 该组怪物全部被击杀后执行 - "action.message('@all', '&a第一波已清除!')" - "action.spawn_group('wave_2')"
wave_2: spawn_timing: type: TRIGGERED trigger_group: wave_1 # wave_1 完成后自动触发 monsters: - id: "Elite_Guard" location: "0,64,0" amount: 1 level: 5 on_end: - "action.complete()"刷新时机类型
Section titled “刷新时机类型”| 类型 | 说明 |
|---|---|
AUTO_START | 地牢开始时自动刷新 |
DELAYED | 地牢开始后延迟指定秒数再刷新 |
TRIGGERED | 指定怪物组完成后自动触发 |
MANUAL | 手动调用 action.spawn_group() 触发 |
SCRIPTED | 由脚本控制 |
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id | String | 必填 | MythicMobs 怪物ID |
location | String | 0,64,0 | 刷新位置 x,y,z |
amount | Int | 1 | 刷新数量 |
level | Int | 1 | 怪物等级 |
以下全部可选,只写 id / location / amount / level 的老配置逐字不变。
groups: 第一波: zone: 战斗区 # 组默认区域;成员可用 point 引用该区域的点位 repeat: # 重复生成,max 必填,没有无限增援 interval: 200 # tick max: 3 wait_cleared: true # 前一波没清完就跳过本轮(不计入轮次) monsters: - id: Zombie_Warrior point: 左侧 # 引用 战斗区.左侧;写 区域.点位 可跨区域 amount: "3-6" # 区间随机 level: 1 - id: Elite_Guard point: 中心 amount: 1 chance: 30 # 30% 概率出现 delay: 60 # 延迟 60 tick 生成 boss: true # 击杀触发 boss_kill 事件任务并推进阶段 - id: Zombie_Warrior point: 右侧 amount: 2 when: "getVar('难度') >= 3" # 成员级条件 replace_with: Elite_Guard # 条件成立时改用这个 ID组级
| 键(中/英) | 默认 | 说明 |
|---|---|---|
zone / 区域 | 无 | 成员的 point 在此区域内找;成员没写位置时用区域落点 |
repeat.interval / 重复.间隔 | — | tick,有这个键才重复 |
repeat.max / 重复.次数 | 必填 | 重复上限 |
repeat.wait_cleared / 重复.等待清空 | true | 前一波未清完则跳过本轮 |
成员级
| 键(中/英) | 默认 | 说明 |
|---|---|---|
point / 点位 | 无 | 命名点位,优先于 location;不存在时加载期 warn 并退回 location |
amount / 数量 | 1 | 数字或 "a-b" 区间,单成员单次最多 32 |
chance / 概率 | 100 | 出现概率百分比 |
delay / 延迟 | 0 | tick,分批登场 |
boss | false | Boss 标记 |
when / 条件 | 无 | JS 表达式。成立:生成(有 replace_with 则换 ID);不成立:有 replace_with 按原 ID 生成,否则跳过 |
replace_with / 替换为 | 无 | 见上 |
生成前会检查主配置的 performance.entity-limit,超限直接跳过不排队;单次生成超过 32 只时自动拆到多个 tick。重复生成用一次性任务自我续期,达到 max 自然停止,副本结束全部取消。
Boss 击杀:tasks.yml 里 trigger: boss_kill(可选 trigger_target: 组名),阶段通关条件可写 dungeon.isBossKilled('Boss战')。
脚本
| 写法 | 说明 |
|---|---|
action.spawn_group('第一波', 2.0) | 第二参数为数量倍率 |
action.stop_repeat('第一波') | 停止重复生成 |
dungeon.getGroupAlive('第一波') | 存活数 |
dungeon.getGroupSpawned('第一波') / getGroupKilled | 累计生成 / 击杀 |
dungeon.getRepeatCount('第一波') | 已重复轮次 |
dungeon.isBossKilled('Boss战') | Boss 是否已被击杀 |
编辑器:怪物组详情里 右键 生成点进入高级设置(点位 / 区间 / 概率 / 延迟 / Boss / 条件),怪物组设置里的「区域与重复」管组级字段。默认值不会写进 YAML。
每个怪物组支持:
- 条件 (
condition): 条件表达式字符串列表(如存活怪物 <= 0),满足时才允许刷新 - 开始脚本 (
on_start): 怪物组开始刷新时执行 - 完成脚本 (
on_end): 该组怪物全部被击杀后执行