跳到主要内容

创建世界Boss

世界 Boss 有时也被称为区域 Boss(Regional Boss)。

它们是什么?

世界 Boss 是被设定为在特定位置、按特定延迟生成的自定义 Boss。它们也是副本中使用的 Boss。不过在本节中,我们将专门讨论制作用于副本之外的世界 Boss。

它们有什么用?

世界 Boss 让玩家能够面对一个固定的挑战,同时知道战利品会很丰厚。

制作世界 Boss 需要什么?

  1. 一个位置。建议设置一个 Boss 房间,由于 Minecraft 的仇恨范围,半径大约 15 个方块(直径 30 个方块)较为合适。此外,请确保地形通过 WorldGuard 区域得到保护(这样玩家无法搭建陷阱),并且地形无法被用于战斗作弊。
  2. 一个重生时间。重生计时器至关重要。我不建议设置低于 30 分钟的重生计时器,否则 Boss 重生就不太像一件大事了。1 小时是相当不错的时间,但你也可能想让 Boss 每天甚至每周才重生一次。
  3. 一个逃脱时间。重生时间越长,逃脱时间就应该越长。同时还要考虑到,逃脱时间应足够长,让人们能够从容地挑战 Boss。如果你不想让玩家通过敢死式打法把 Boss 耗死,逃脱计时器就很重要。这不是强制的,如果你想做重生周期长达一周的大型 Boss,甚至并不推荐使用。
  4. 一个自定义 Boss。世界 Boss 其实就是带有自定义生成规则的自定义 Boss。请确保选择对团队规模战斗兼容性良好的技能。
  5. 有趣的战利品。撇开挑战不谈,世界 Boss 的最大吸引力就是战利品。请确保玩家能从中获得一些他们在别处根本无法获得的东西。
  6. 一个主题。一个好的区域 Boss 应该有一个主题,配以契合主题的位置和契合主题的战利品。

世界 Boss 的自定义 Boss 配置选项:

这些设置被添加到普通的自定义 Boss 配置文件中。关于这些配置的详尽 Wiki 页面可在此处找到


isRegionalBoss

设定该 Boss 是否为区域 Boss。区域 Boss 是世界 Boss 的另一种称呼,因此你需要将其设为 true

KeyValuesDefault
isRegionalBossBooleanfalse
示例
isRegionalBoss: true

spawnLocations

生成位置应在游戏内使用命令 /em place boss <filename.yml> 来设置。

虽然可以从配置中手动添加位置,但我不建议尝试这样做,因为太容易出错了。

KeyValuesDefault
spawnLocationsString Listnone
示例

配置文件中的位置(面向高级用户)。区域 Boss 的配置文件通过存储多个生成位置以及重生计时器,将该区域 Boss 的所有实例都保存在单个文件中。

实际而言,这意味着这个条目:

spawnLocations:
- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931
- elitemobs_sewer_maze,-135.02262355317436,168.2,-153.28849346821508,-98.53906,60.750263:1609026066482
- elitemobs_sewer_maze,-70.43846307626053,168.2,-174.13499832314378,-271.24023,64.19999:1610710886530
- elitemobs_sewer_maze,-130.39762674971664,168.2,-171.67396911490718,-47.532227,51.900173:1609026066482
- elitemobs_sewer_maze,-117.12782160766056,162.2,-166.40989416757444,-71.37402,-1.4997427:1610710974882
- elitemobs_sewer_maze,-105.13138759611667,168.2,-169.85898023126538,-124.34766,41.24988:1610710945331
- elitemobs_sewer_maze,-106.21847515732084,169.2,-152.3609257554766,-170.86523,21.450315:1610537606222

包含 7 个不同的区域 Boss,处于不同位置,并具有不同的重生计时器。

我们来拆解一下细节,看看第一个区域 Boss:

- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931

由于它遵循 world,x,y,z,pitch,yaw:unixTimeStamp 的格式,因此该 Boss 在一个名为 elitemobs_sewer_maze 的世界中生成,坐标为 x = -70.17178578884845,y = 168.2,z = -173.17112099568718,pitch = -271.24023,yaw = 64.19999

unix 时间戳以 unix 时间存储 Boss 将要重生的时刻。它用于在重启后仍能保留重生时间。如果你想知道它对应的是什么时间,网上能找到数不清的 unix 时间转真实时间的转换工具。

如果你希望某个特定 Boss 在重载或重启后重生,你只需删除 :unixTimeStamp 部分(包括冒号),使该条目看起来像这样:world,x,y,z,pitch,yaw


spawnCooldown

设定 Boss 重生所需的时间,以分钟为单位。

注意:大型 Boss 建议设置较长的重生时间!

KeyValuesDefault
spawnCooldownInteger0
示例
spawnCooldown: 20

timeout

设定 Boss 在自动逃脱/消失之前保持活跃的时长,以分钟为单位。设为 0 时,Boss 永不超时。

注意:这应该足够长,以便玩家能够从容地完成战斗。

KeyValuesDefault
timeoutInteger0
示例
timeout: 60

设定 Boss 若在 60 分钟内未被击败则逃脱。


leashRadius

设定世界 Boss 从 spawnLocation 出发后在被传送回其生成点之前所能到达的半径。这可以防止玩家将 Boss 拖到一个更容易与之战斗的位置。

注意:尽量避免制作需要拴绳半径小于 20 个方块的战斗区域,因为这会使战斗体验变差。

KeyValuesDefault
leashRadiusDoublenone
示例
leashRadius: 30

escapeMessage

设定 Boss 因超时而逃脱时向玩家广播的消息。与 timeout 和 announcementPriority 设置配合使用。

KeyValuesDefault
escapeMessageStringnone
示例
escapeMessage: "&cThe World Boss has escaped!"

announcementPriority

设定 Boss 生成/死亡/逃脱通告的优先级。值越高,显示的通告越多,并启用额外功能。

等级行为
0静默(无通告,不可追踪)
1仅聊天消息(生成/死亡/逃脱通告)
2等级 1 + 玩家可通过 /em 菜单追踪
3等级 2 + Discord 通知(如已配置)
KeyValuesDefault
announcementPriorityInteger0
示例
announcementPriority: 3

设定 Boss 在聊天和 Discord 中通告,并允许玩家追踪它。


isPersistent

控制 Boss 是否在区块卸载时存活。所有世界 Boss 都应将其设为 true,以防止它们在区块卸载时消失。

注意:持久化 Boss 过多(数百个)可能导致性能问题。

KeyValuesDefault
isPersistentBooleanfalse
示例
isPersistent: true

removeAfterDeath

决定世界 Boss 在被击败后是否被永久移除。适用于一次性的活动 Boss 或不应重生的特殊遭遇战。

false(默认)时,Boss 会在 spawnCooldown 时间过后重生。
true 时,Boss 会从生成位置列表中被永久删除。

KeyValuesDefault
removeAfterDeathBooleanfalse
示例
removeAfterDeath: true

过渡方块(Transitive Blocks)

也称为 onSpawnBlockStatesonRemoveBlockStates

这些值允许区域 Boss 在进入战斗时生成方块,并在被移除时(即因超时逃脱或死亡时)移除这些方块。

如果你将其与阶段 Boss 配合使用,这就是你让 Boss 打开或关闭门/区域,甚至在战斗中改造竞技场的方式!

KeyValuesDefault
onSpawnBlockStates见详细说明none
KeyValuesDefault
onRemoveBlockStates见详细说明none
详细说明

所有方块都是相对于生成位置而言的。在开始设置任何方块之前,请确保你已确定最终的生成位置。


如果你已经制作了一大片过渡方块区域,现在需要移动 Boss,但又不想重做过渡方块。那么你可以使用 EliteScript 的 Teleport 动作在 Boss 生成后将其移动到正确的位置。请记住,你需要相应地调整拴绳半径。

由于设置方块的复杂性,不建议手动操作。你应该使用以下命令来完成:

  • /em transitiveBlocks register <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks edit <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks registerArea <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks editArea <regional_boss_file.yml> <on_spawn/on_remove>
  • /em transitiveBlocks cancel

我们来逐一拆解。

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

最基础的命令。这是一个开关,你运行一次以开始,再运行一次以提交。和所有其他命令一样,你需要选择是为 ON_SPAWN 状态还是 ON_REMOVE 状态设置这些待修改的方块。

如果注册 ON_SPAWN,这会在 Boss 生成或重生时修改方块。如果注册 ON_REMOVE,这会在 Boss 通过自定义 Boss 超时机制死亡或超时时修改方块。

要注册方块,只需在此设置开启时放置或移除你希望修改的方块即可。

/em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

如果你想修改已设置好的方块,可以使用此命令。其工作方式与 /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE> 非常相似。

/em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE> 一样,这允许你注册方块,但它允许通过获取两个对角的角点来选择方块(与 worldedit / worldguard 的区域选择相同),而不是逐个选择方块。

出于安全原因,区域选择有 500 个方块的上限(默认值,可通过 config.yml 中的 defaultTransitiveBlockLimiter 修改)。请记住,每个方块都在同一刻被修改,所以如果你要修改大量地形,运行这些修改时很可能会开始看到严重的卡顿。

/em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>

工作方式与 /em transitiveBlocks edit 相同,但用于区域。可用于突破区域注册的 500 个(默认)方块上限。

/em transitiveBlocks cancel

在任何时候,如果在注册方块时出错,你都可以运行此命令来取消注册。它会撤销你在该次编辑/注册中已开始注册的所有更改。


制作出色而大型区域 Boss 战的专业技巧

  1. 认真考虑你的自定义 Boss 上各项技能如何相互配合。你不会希望 Boss 因为在施放某个技能而把大部分时间都停在原地,因为这实际上会让战斗变得非常简单。你也不会希望 Boss 全是远程攻击而没有近战技能,或者相反——除非你正在设计某种非常特定的东西。试玩测试很重要。

  2. 生命值——要很高。如果你想让人们真正组队来打 Boss,那个生命值倍率大概应该稳稳地设在 10。

  3. 伤害——别太高。EliteMobs 默认就已经极其致命,而技能往往会让它呈指数级地更加致命。与其把伤害堆到天上,不如考虑用技能来让 Boss 打得更疼。

  4. 作弊点,到处都是。要格外确保地形无法被作弊利用。把 Boss 放在一个封闭的房间里,防止人们试图从远处狙击它。对很多世界 Boss 来说,箭矢免疫技能大概极其重要,因为 Minecraft 的怪物应付不了在几个区块之外被狙击,所以如果你想允许弓箭攻击,请确保弓不会被作弊利用。

  5. 了解这个插件。击败 EliteMobs 有很多小技巧,比如有些技能可以用盾牌反制,而另一些则应该靠闪避甚至暂时跑离 Boss 来反制。你越了解技能的运作方式以及如何反制它们,你制作出的 Boss 就会越出色。


完整的世界 Boss 示例

下面是一个使用本指南所涵盖的全部设置的完整世界 Boss 配置示例:

isEnabled: true
entityType: ZOMBIE
name: "&cThe Zombie King"
level: 50
healthMultiplier: 10.0
damageMultiplier: 2.0

# 世界 Boss 专属设置
isRegionalBoss: true
isPersistent: true

# 生成设置
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60

# 战斗边界
leashRadius: 30
timeout: 20

# 消息与通告
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2

# 竞技场改造
onSpawnBlockStates:
- 0,0,0,BARRIER
onRemoveBlockStates:
- 0,0,0,AIR

# Boss 特性
powers:
- zombie_reinforcements.yml
- ground_pound.yml
uniqueLootList:
- magmaguys_toothpick.yml

这个 Boss 将会:

  • 在被击败后每 60 分钟在指定位置生成一次
  • 若在 20 分钟内未被击败则逃脱
  • 在聊天中通告生成/死亡/逃脱,并允许玩家追踪
  • 在区块卸载时存活
  • 在生成和死亡时改造竞技场方块
  • 在被击败时掉落独特战利品