创建世界Boss
世界 Boss 有时也被称为区域 Boss(Regional Boss)。
它们是什么?
世界 Boss 是被设定为在特定位置、按特定延迟生成的自定义 Boss。它们也是副本中使用的 Boss。不过在本节中,我们将专门讨论制作用于副本之外的世界 Boss。
它们有什么用?
世界 Boss 让玩家能够面对一个固定的挑战,同时知道战利品会很丰厚。
制作世界 Boss 需要什么?
- 一个位置。建议设置一个 Boss 房间,由于 Minecraft 的仇恨范围,半径大约 15 个方块(直径 30 个方块)较为合适。此外,请确保地形通过 WorldGuard 区域得到保护(这样玩家无法搭建陷阱),并且地形无法被用于战斗作弊。
- 一个重生时间。重生计时器至关重要。我不建议设置低于 30 分钟的重生计时器,否则 Boss 重生就不太像一件大事了。1 小时是相当不错的时间,但你也可能想让 Boss 每天甚至每周才重生一次。
- 一个逃脱时间。重生时间越长,逃脱时间就应该越长。同时还要考虑到,逃脱时间应足够长,让人们能够从容地挑战 Boss。如果你不想让玩家通过敢死式打法把 Boss 耗死,逃脱计时器就很重要。这不是强制的,如果你想做重生周期长达一周的大型 Boss,甚至并不推荐使用。
- 一个自定义 Boss。世界 Boss 其实就是带有自定义生成规则的自定义 Boss。请确保选择对团队规模战斗兼容性良好的技能。
- 有趣的战利品。撇开挑战不谈,世界 Boss 的最大吸引力就是战利品。请确保玩家能从中获得一些他们在别处根本无法获得的东西。
- 一个主题。一个好的区域 Boss 应该有一个主题,配以契合主题的位置和契合主题的战利品。
世界 Boss 的自定义 Boss 配置选项:
这些设置被添加到普通的自定义 Boss 配置文件中。关于这些配置的详尽 Wiki 页面可在此处找到。
isRegionalBoss
设定该 Boss 是否为区域 Boss。区域 Boss 是世界 Boss 的另一种称呼,因此你需要将其设为 true。
| Key | Values | Default |
|---|---|---|
isRegionalBoss | Boolean | false |
示例
isRegionalBoss: true
spawnLocations
生成位置应在游戏内使用命令 /em place boss <filename.yml> 来设置。
虽然可以从配置中手动添加位置,但我不建议尝试这样做,因为太容易出错了。
| Key | Values | Default |
|---|---|---|
spawnLocations | String List | none |
示例
配置文件中的位置(面向高级用户)。区域 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 建议设置较长的重生时间!
| Key | Values | Default |
|---|---|---|
spawnCooldown | Integer | 0 |
示例
spawnCooldown: 20
timeout
设定 Boss 在自动逃脱/消失之前保持活跃的时长,以分钟为单位。设为 0 时,Boss 永不超时。
注意:这应该足够长,以便玩家能够从容地完成战斗。
| Key | Values | Default |
|---|---|---|
timeout | Integer | 0 |
示例
timeout: 60
设定 Boss 若在 60 分钟内未被击败则逃脱。
leashRadius
设定世界 Boss 从 spawnLocation 出发后在被传送回其生成点之前所能到达的半径。这可以防止玩家将 Boss 拖到一个更容易与之战斗的位置。
注意:尽量避免制作需要拴绳半径小于 20 个方块的战斗区域,因为这会使战斗体验变差。
| Key | Values | Default |
|---|---|---|
leashRadius | Double | none |
示例
leashRadius: 30
escapeMessage
设定 Boss 因超时而逃脱时向玩家广播的消息。与 timeout 和 announcementPriority 设置配合使用。
| Key | Values | Default |
|---|---|---|
escapeMessage | String | none |
示例
escapeMessage: "&cThe World Boss has escaped!"
announcementPriority
设定 Boss 生成/死亡/逃脱通告的优先级。值越高,显示的通告越多,并启用额外功能。
| 等级 | 行为 |
|---|---|
0 | 静默(无通告,不可追踪) |
1 | 仅聊天消息(生成/死亡/逃脱通告) |
2 | 等级 1 + 玩家可通过 /em 菜单追踪 |
3 | 等级 2 + Discord 通知(如已配置) |
| Key | Values | Default |
|---|---|---|
announcementPriority | Integer | 0 |
示例
announcementPriority: 3
设定 Boss 在聊天和 Discord 中通告,并允许玩家追踪它。
isPersistent
控制 Boss 是否在区块卸载时存活。所有世界 Boss 都应将其设为 true,以防止它们在区块卸载时消失。
注意:持久化 Boss 过多(数百个)可能导致性能问题。
| Key | Values | Default |
|---|---|---|
isPersistent | Boolean | false |
示例
isPersistent: true
removeAfterDeath
决定世界 Boss 在被击败后是否被永久移除。适用于一次性的活动 Boss 或不应重生的特殊遭遇战。
为 false(默认)时,Boss 会在 spawnCooldown 时间过后重生。
为 true 时,Boss 会从生成位置列表中被永久删除。
| Key | Values | Default |
|---|---|---|
removeAfterDeath | Boolean | false |
示例
removeAfterDeath: true
过渡方块(Transitive Blocks)
也称为 onSpawnBlockStates 和 onRemoveBlockStates。
这些值允许区域 Boss 在进入战斗时生成方块,并在被移除时(即因超时逃脱或死亡时)移除这些方块。
如果你将其与阶段 Boss 配合使用,这就是你让 Boss 打开或关闭门/区域,甚至在战斗中改造竞技场的方式!
| Key | Values | Default |
|---|---|---|
onSpawnBlockStates | 见详细说明 | none |
| Key | Values | Default |
|---|---|---|
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 战的专业技巧
-
认真考虑你的自定义 Boss 上各项技能如何相互配合。你不会希望 Boss 因为在施放某个技能而把大部分时间都停在原地,因为这实际上会让战斗变得非常简单。你也不会希望 Boss 全是远程攻击而没有近战技能,或者相反——除非你正在设计某种非常特定的东西。试玩测试很重要。
-
生命值——要很高。如果你想让人们真正组队来打 Boss,那个生命值倍率大概应该稳稳地设在 10。
-
伤害——别太高。EliteMobs 默认就已经极其致命,而技能往往会让它呈指数级地更加致命。与其把伤害堆到天上,不如考虑用技能来让 Boss 打得更疼。
-
作弊点,到处都是。要格外确保地形无法被作弊利用。把 Boss 放在一个封闭的房间里,防止人们试图从远处狙击它。对很多世界 Boss 来说,箭矢免疫技能大概极其重要,因为 Minecraft 的怪物应付不了在几个区块之外被狙击,所以如果你想允许弓箭攻击,请确保弓不会被作弊利用。
-
了解这个插件。击败 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 分钟内未被击败则逃脱
- 在聊天中通告生成/死亡/逃脱,并允许玩家追踪
- 在区块卸载时存活
- 在生成和死亡时改造竞技场方块
- 在被击败时掉落独特战利品