Skip to content

怪物配置

怪物组是一组 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_groupdelay (延迟秒数)
MANUAL脚本手动触发--
SCRIPTED高级脚本控制trigger_scriptdelay

示例配置(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)

游戏内编辑

  1. 使用"怪物编辑器"(编辑工具栏槽位2)
  2. 右键 打开怪物组管理UI
  3. 点击"创建新组"
  4. 输入组名(推荐:第一波、第二波、Boss战)
  5. 点击"添加怪物"
    • 使用"搜索怪物"功能输入关键词
    • 从MythicMobs怪物列表中选择
    • 走到目标位置,左键点击方块设置坐标
    • 配置数量和等级
  6. 配置刷新时机(简单模式或高级模式)
  7. 保存配置
  8. monsters.yml 中编辑脚本和高级配置

注意

  • 怪物ID必须在MythicMobs中已定义,否则刷新失败
  • on_starton_end 脚本需要在配置文件中手动编辑
  • 使用 /dga reload 重载配置

常见问题

Q: 怪物组不刷新?

  • 检查 auto_start: truespawn_timing.type 是否正确
  • 确认怪物ID在MythicMobs中存在
  • 查看控制台是否有错误日志

Q: 第一波必须自动刷新吗?

  • 不是必须,但建议第一波使用 AUTO_START
  • 后续波次可以用 TRIGGEREDMANUAL

Q: 如何实现多阶段Boss战?

  • 使用多个怪物组
  • 在Boss组的 on_end 中调用 action.spawn_group('Boss第二阶段')

Q: spawn_timing 和 auto_start 冲突怎么办?

  • spawn_timing 优先级更高
  • 建议只使用一种配置方式

基于 MIT 许可发布