主题
怪物配置
怪物组是一组 MythicMobs 怪物的集合,支持批量生成、条件判断、脚本触发等高级功能。
常见用途:
- 波次战斗(第一波、第二波、Boss战)
- 守塔防守(定时刷新敌人)
- Boss战机制(分阶段召唤小怪)
- 触发式刷怪(完成任务后刷新)
前置要求:
- 需要安装 MythicMobs 插件
- 怪物 ID 必须在 MythicMobs 配置中已定义
刷新时机配置说明
怪物组支持两种配置方式:
1. 简单配置(推荐新手)
yaml
auto_start: true # 地牢开始时立即刷新
auto_start: false # 需要脚本手动调用 action.spawn_group('组名')2. 高级配置(spawn_timing,优先级更高)
支持的刷新类型:
| 类型 | 说明 | 必填参数 | 可选参数 |
|---|---|---|---|
AUTO_START | 地牢开始时自动刷新 | - | delay (延迟秒数) |
DELAYED | 地牢开始后延迟N秒刷新 | delay | - |
TRIGGERED | 指定怪物组完成后触发 | trigger_group | delay (延迟秒数) |
MANUAL | 脚本手动触发 | - | - |
SCRIPTED | 高级脚本控制 | trigger_script | delay |
示例配置(monsters.yml):
示例1:立即自动刷新
yaml
groups:
第一波:
auto_start: true # 简单配置
# 或使用高级配置
spawn_timing:
type: "AUTO_START"
delay: 0 # 立即刷新
# 完成条件
condition:
- "存活怪物 <= 0"
# 怪物组启动时的脚本
on_start: |-
action.title('@all', '&c&l第一波', '&7击败所有骷髅')
action.create_obstacle('大门')
action.sound('@all', 'ENTITY_ENDER_DRAGON_GROWL', 1.0, 0.8)
# 怪物组完成时的脚本
on_end: |-
action.message('@all', '&a第一波已清空!')
action.delete_obstacle('大门')
action.wait('5秒')
action.spawn_group('第二波')
# 怪物列表(省略...)
monsters:
- ID: "SkeletonMinion"
location: "10,64,10"
amount: 5
level: 1示例2:延迟自动刷新
yaml
groups:
第二波:
spawn_timing:
type: "AUTO_START"
delay: 30 # 地牢开始30秒后自动刷新
on_start: |-
action.message('@all', '&c第二波来袭!')
# ...示例3:延迟刷新(DELAYED)
yaml
groups:
隐藏Boss:
spawn_timing:
type: "DELAYED"
delay: 300 # 地牢开始5分钟后刷新
on_start: |-
action.title('@all', '&4&l隐藏BOSS出现', '')
# ...示例4:条件触发(TRIGGERED)
yaml
groups:
第三波:
spawn_timing:
type: "TRIGGERED"
trigger_group: "第二波" # 当"第二波"完成时触发
delay: 5 # 完成后延迟5秒刷新
on_start: |-
action.message('@all', '&e第三波即将到来...')
# ...示例5:脚本手动触发(MANUAL)
yaml
groups:
Boss战:
spawn_timing:
type: "MANUAL" # 需要在脚本中调用 action.spawn_group('Boss战')
on_start: |-
action.title('@all', '&4&lBOSS降临', '')
action.weather('thunder')
# ...示例6:高级脚本控制(SCRIPTED)
yaml
groups:
精英小队:
spawn_timing:
type: "SCRIPTED"
delay: 2
trigger_script: |-
// 只有在玩家击杀超过20只怪物时才刷新
var kills = getVar('total_kills') || 0
return kills >= 20
on_start: |-
action.message('@all', '&c精英小队出现了!')
# ...示例1:立即刷新 - 第一波小怪
地牢开始时立即刷新,适合开场战斗。
yaml
groups:
第一波:
auto_start: true
spawn_timing:
type: "AUTO_START"
delay: 0
condition:
- "存活怪物 <= 0"
on_start: |-
action.title('@all', '&c&l第一波', '&7击败所有骷髅')
action.message('@all', '&7骷髅战士出现了!')
action.sound('@all', 'ENTITY_WITHER_SPAWN', 1.0, 0.8)
action.create_obstacle('出生点屏障')
on_end: |-
action.title('@all', '&a第一波完成', '&7干得好')
action.message('@all', '&a&l✔ 第一波完成!')
action.delete_obstacle('出生点屏障')
action.wait('5秒')
action.message('@all', '&e准备迎接第二波...')
action.wait('3秒')
action.spawn_group('第二波')
monsters:
- ID: "SkeletonWarrior"
location: "10,64,10"
amount: 3
level: 5
- ID: "SkeletonArcher"
location: "-10,64,10"
amount: 2
level: 5示例2:条件触发 - 第二波精英
第一波完成后自动触发,延迟5秒刷新。
yaml
groups:
第二波:
spawn_timing:
type: "TRIGGERED"
trigger_group: "第一波"
delay: 5
condition:
- "存活怪物 <= 0"
on_start: |-
action.title('@all', '&6&l第二波', '&7精英战士')
action.sound('@all', 'ENTITY_ZOMBIE_BREAK_WOODEN_DOOR', 1.0, 0.8)
action.effect('EXPLOSION_LARGE', '0,65,0', 10, 2.0, 0.0)
on_end: |-
action.message('@all', '&a&l第二波完成!Boss房大门已开启')
action.delete_obstacle('Boss房大门')
action.wait('10秒')
action.message('@all', '&c&lBoss即将出现...')
monsters:
- ID: "SkeletonElite"
location: "5,64,15"
amount: 2
level: 10
- ID: "SkeletonGuard"
location: "-5,64,15"
amount: 3
level: 8示例3:脚本手动触发 - Boss战
通过交互点或任务触发,完全由脚本控制。
yaml
groups:
Boss战:
spawn_timing:
type: "MANUAL"
condition:
- "存活怪物 <= 0"
on_start: |-
action.title('@all', '&4&lBOSS降临', '&c骷髅王')
action.weather('thunder')
action.time('midnight')
action.sound('@all', 'ENTITY_ENDER_DRAGON_GROWL', 2.0, 0.5)
// Boss出场特效
action.lightning('0,65,0', false)
action.effect('EXPLOSION_HUGE', '0,65,0', 20, 3.0, 0.0)
action.create_obstacle('Boss房边界')
on_end: |-
action.title('@all', '&6&l胜利', '&a击败了骷髅王')
action.sound('@all', 'UI_TOAST_CHALLENGE_COMPLETE', 1.0, 1.0)
action.weather('clear')
action.time('day')
action.grant_reward('@all', '传说礼包')
action.complete_dungeon()
monsters:
- ID: "SkeletonKing"
location: "0,64,0"
amount: 1
level: 20示例4:延迟刷新 - 限时挑战
地牢开始5分钟后刷新隐藏Boss。
yaml
groups:
隐藏Boss:
spawn_timing:
type: "DELAYED"
delay: 300
condition:
- "存活怪物 <= 0"
on_start: |-
action.title('@all', '&4&l隐藏BOSS出现', '&e击败它获得额外奖励')
action.message('@all', '&d[秘密挑战] 隐藏Boss已出现在中央区域!')
action.sound('@all', 'ENTITY_WITHER_SPAWN', 2.0, 0.8)
// 全图玩家标记
action.apply_potion('@all', 'GLOWING', '30秒', 0)
on_end: |-
action.message('@all', '&a&l击败隐藏Boss!获得额外奖励')
action.grant_reward('@all', '隐藏礼包')
monsters:
- ID: "SecretBoss"
location: "0,70,0"
amount: 1
level: 25示例5:脚本条件触发 - 击杀触发
根据击杀数量动态判断是否刷新。
yaml
groups:
精英小队:
spawn_timing:
type: "SCRIPTED"
delay: 2
trigger_script: |-
// 只有在玩家击杀超过20只怪物时才刷新
var kills = getVar('total_kills') || 0
if (kills >= 20) {
action.message('@all', '&c&l警告:精英小队已被召唤!')
return true
}
return false
condition:
- "存活怪物 <= 0"
on_start: |-
action.title('@all', '&c&l精英增援', '&7敌人召唤了支援')
action.sound('@all', 'ENTITY_LIGHTNING_BOLT_THUNDER', 1.0, 0.8)
on_end: |-
action.message('@all', '&a击退了精英增援!')
monsters:
- ID: "EliteGuard"
location: "10,64,0"
amount: 4
level: 12配置字段说明
怪物组字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
auto_start | 布尔 | ❌ | 简单配置方式,true=自动刷新,false=手动触发 |
spawn_timing | 对象 | ❌ | 高级刷新配置(优先级高于auto_start) |
condition | 列表 | ✅ | 完成条件,通常为 "存活怪物 <= 0" |
on_start | 脚本 | ❌ | 怪物组启动时执行的脚本 |
on_end | 脚本 | ❌ | 怪物组完成时执行的脚本 |
monsters | 列表 | ✅ | 怪物生成列表 |
spawn_timing 字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | 字符串 | ✅ | 刷新类型(见刷新类型表) |
delay | 整数 | 条件 | 延迟秒数(DELAYED/AUTO_START/TRIGGERED需要) |
trigger_group | 字符串 | 条件 | 触发组名称(TRIGGERED需要) |
trigger_script | 脚本 | 条件 | 触发脚本(SCRIPTED需要,需返回true/false) |
monsters 字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
ID | 字符串 | ✅ | MythicMobs怪物ID(必须在MM配置中存在) |
location | 字符串 | ✅ | 生成位置 "x,y,z" |
amount | 整数 | ✅ | 生成数量 |
level | 整数 | ✅ | 怪物等级(传递给MythicMobs) |
游戏内编辑
- 使用"怪物编辑器"(编辑工具栏槽位2)
- 右键 打开怪物组管理UI
- 点击"创建新组"
- 输入组名(推荐:第一波、第二波、Boss战)
- 点击"添加怪物"
- 使用"搜索怪物"功能输入关键词
- 从MythicMobs怪物列表中选择
- 走到目标位置,左键点击方块设置坐标
- 配置数量和等级
- 配置刷新时机(简单模式或高级模式)
- 保存配置
- 在
monsters.yml中编辑脚本和高级配置
注意:
- 怪物ID必须在MythicMobs中已定义,否则刷新失败
on_start和on_end脚本需要在配置文件中手动编辑- 使用
/dga reload重载配置
常见问题
Q: 怪物组不刷新?
- 检查
auto_start: true或spawn_timing.type是否正确 - 确认怪物ID在MythicMobs中存在
- 查看控制台是否有错误日志
Q: 第一波必须自动刷新吗?
- 不是必须,但建议第一波使用
AUTO_START - 后续波次可以用
TRIGGERED或MANUAL
Q: 如何实现多阶段Boss战?
- 使用多个怪物组
- 在Boss组的
on_end中调用action.spawn_group('Boss第二阶段')
Q: spawn_timing 和 auto_start 冲突怎么办?
spawn_timing优先级更高- 建议只使用一种配置方式
