创建世界 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。
| 键 | 值 | 默认值 |
|---|---|---|
isRegionalBoss | 布尔值 | false |
示例
isRegionalBoss: true
spawnLocations
生成位置应在游戏内使用命令 /em place boss <filename.yml> 来设置。
加载含 isRegionalBoss: true 的 Boss 配置后,由拥有 elitemobs.place.admin 权限的玩家执行。每次使用都会为同一个 Boss 添加一个放置位置。命令将位置对齐到方块中心,并向上寻找可通过的位置。请检查该处是否有足够空间容纳 Boss。
虽然可以从配置中手动添加位置,但我不建议尝试这样做,因为太容易出错了。
| 键 | 值 | 默认值 |
|---|---|---|
spawnLocations | 字符串列表 | 无 |
示例
配置文件中的位置(面向高级用户)。区域 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,yaw,pitch:unixTimeStamp。此 Boss 在 elitemobs_sewer_maze 世界生成,x = -70.17178578884845,y = 168.2,z = -173.17112099568718,yaw = -271.24023,pitch = 64.19999。
时间戳以 Unix 纪元以来的毫秒数保存重生期限,重启后仍保留。查看时请使用支持毫秒的转换工具。
要移除保存的重生期限,请先停止服务器,再删除包含冒号的 :unixTimeStamp 后缀。条目变为 world,x,y,z,yaw,pitch。运行中的插件会定期保存放置信息,可能覆盖手动编辑。没有期限的 Boss 会在世界和区块允许生成时恢复,不播放生成公告。
spawnCooldown
设定死亡或超时后到下一次生成尝试的间隔,单位为分钟。0 安排立即尝试,负数禁用定时重生。世界和区块必须可用才会出现实体。巡逻 Boss 还需要处于实体会更新的位置。
注意:大型 Boss 建议设置较长的重生时间!
| 键 | 值 | 默认值 |
|---|---|---|
spawnCooldown | 整数 | 0 |
示例
spawnCooldown: 20
timeout
设定从生成到逃脱的时间,单位为分钟,不是从开战时开始计时。小于 1 时禁用。区域 Boss 在区块、世界加载或服务器重启后恢复时,会重新开始完整计时,不保存绝对期限。阶段切换保留当前遭遇战的计时器。
注意:这应该足够长,以便玩家能够从容地完成战斗。
| 键 | 值 | 默认值 |
|---|---|---|
timeout | 整数 | 0 |
示例
timeout: 60
设定 Boss 若在 60 分钟内未被击败则逃脱。
leashRadius
设定放置位置周围的返回边界。使用原生寻路时,支持的生物在半径的一半处开始柔性返回,强制返回使用完整半径。若无法到达目的地,Boss 可能被传送。末影龙不使用这些原生返回目标。没有原生寻路时,每 3 秒检查一次并送回超出完整半径的 Boss;此替代方式仅适用于至少为 1 的半径。原生返回结束时,只有在 MobCombatSettings.yml 中启用了 regenerateCustomBossHealthOnCombatEnd(默认 true)的情况下,Boss 才会恢复满血。
注意:尽量避免制作需要拴绳半径小于 20 个方块的战斗区域,因为这会使战斗体验变差。
| 键 | 值 | 默认值 |
|---|---|---|
leashRadius | 双精度小数 | 0(禁用) |
示例
leashRadius: 30
escapeMessage
设定 Boss 超时逃脱时发送给其所在世界玩家的消息。需要非空消息和至少为 1 的 announcementPriority。优先级为 3 或更高时,也通过已配置的 Discord 集成发送。逃脱会移除 Boss 并开始重生等待;若设置 removeAfterDeath: true,则永久删除该放置位置。
| 键 | 值 | 默认值 |
|---|---|---|
escapeMessage | 字符串 | 无 |
示例
escapeMessage: "&cThe World Boss has escaped!"
announcementPriority
控制公告和玩家追踪资格。必须配置消息。追踪还需要 MobCombatSettings.yml 中的 showCustomBossLocation;locationMessage 可选。
| 等级 | 行为 |
|---|---|
0 | 无生成、逃脱公告或追踪;配置好的死亡消息仍可能发送给攻击者 |
1 | 配置好的生成、死亡、逃脱消息,以及启用后的 /em 追踪 |
2 | 与等级 1 相同,无额外行为 |
3 | 等级 1 加上已配置的 Discord 通知 |
生成公告遵循 events.yml 的 announcementBroadcastWorldOnly。正优先级的死亡公告发送到全服,且需要启用 MobCombatSettings.yml 中的 doCustomEliteMobsDeathMessages。逃脱公告仅发往 Boss 所在世界。恢复的 Boss 可以被追踪,而不重复生成公告。请明确设置优先级;添加消息不会自动改变默认值 0。
| 键 | 值 | 默认值 |
|---|---|---|
announcementPriority | 整数 | 0 |
示例
announcementPriority: 3
设定 Boss 在聊天和 Discord 中通告,并允许玩家追踪它。
isPersistent
保存 Boss 以便在区块卸载后恢复。卸载期间移除实际实体,相关区块加载时再恢复。这不会保持区块加载,也不会让 Boss 继续战斗。
已放置的区域 Boss 会通过自身生命周期启用持久化,不依赖普通自定义 Boss 的此项设置。
注意:持久化 Boss 过多(数百个)可能导致性能问题。
| 键 | 值 | 默认值 |
|---|---|---|
isPersistent | 布尔值 | false |
示例
isPersistent: true
removeAfterDeath
决定世界 Boss 在被击败后是否被永久移除。适用于一次性的活动 Boss 或不应重生的特殊遭遇战。
默认的 false 会在死亡或超时后安排等待 spawnCooldown 再生成,负数则不安排。
设为 true 时,死亡或超时都会从生成位置列表中永久删除该 Boss 的放置记录。
| 键 | 值 | 默认值 |
|---|---|---|
removeAfterDeath | 布尔值 | false |
示例
removeAfterDeath: true
过渡方块(Transitive Blocks)
过渡方块通过 onSpawnBlockStates 和 onRemoveBlockStates 配置,分别保存下文所述 ON_SPAWN 和 ON_REMOVE 状态的方块变更。
如果你将其与阶段 Boss 配合使用,这就是你让 Boss 打开或关闭门/区域,甚至在战斗中改造竞技场的方式!
| 键 | 值 | 默认值 |
|---|---|---|
onSpawnBlockStates | 见详细说明 | 无 |
| 键 | 值 | 默认值 |
|---|---|---|
onRemoveBlockStates | 见详细说明 | 无 |
详细说明
所有方块都是相对于生成位置而言的。在开始设置任何方块之前,请确保你已确定最终的生成位置。
编辑器需要由拥有 elitemobs.transitiveblocks 的玩家使用。记录时只放置一个该区域 Boss;同一配置有多个放置位置时会被拒绝。阶段配置可使用其所属的区域 Boss。保存的是方块数据,不包括容器物品或其他方块实体内容,也不会按 Boss 的 yaw 旋转。
如果你已经制作了一大片过渡方块区域,现在需要移动 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 在生成或重生时应用保存的方块。ON_REMOVE 在死亡、击杀命令,以及进入下一阶段、替换方块配置之前应用。超时、满血导致的阶段重置、重载和关服不会应用击败后的状态。
记录时右击方块保存其当前状态,左击则在该位置保存空气。这些点击会被取消,因此只选择状态,不会放置或破坏方块。每个位置只会保存一次:用另一个按键点击已保存的位置,会将其从选择中移除。在 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 的区域选择相同),而不是逐个选择方块。
左击一个角点,右击对角点,再次运行命令保存区域。两个角点都必须位于 Boss 所在世界,保存时你也必须站在该世界中。否则 EliteMobs 会拒绝保存并提示消息,同时保留你当前的选择。区域中的方块会替换同一位置上已经选中的方块。
config.yml 中的 defaultTransitiveBlockLimiter 默认为 500,但目前只警告,仍会保存超大的选择。请自行控制范围。应用状态会加载目标区块,并在同一刻修改全部方块,大区域可能造成卡顿。
/em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
加载现有保存状态,再添加选中区域的当前方块状态。角点选择和大小警告与 registerArea 相同。
/em transitiveBlocks cancel
丢弃尚未保存的选择。不会撤销世界中的实际建筑改动,也不会撤销已保存到 Boss 配置中的更改。
设计大型区域 Boss 战的建议
-
认真考虑你的自定义 Boss 上各项技能如何相互配合。你不会希望 Boss 因为在施放某个技能而把大部分时间都停在原地,因为这实际上会让战斗变得非常简单。你也不会希望 Boss 全是远程攻击而没有近战技能,或者相反——除非你正在设计某种非常特定的东西。试玩测试很重要。
-
设置生命值时考虑上限。 生命值受服务器当前的
settings.attribute.maxHealth.max限制,通常为 2048。使用healthMultiplier: 10.0时,Boss 在 33 级达到上限。继续升级会改变战斗计算,但不再增加生命值。组合高倍率与高level前,请参阅 healthMultiplier。 -
伤害——别太高。EliteMobs 默认就已经极其致命,而技能往往会让它呈指数级地更加致命。与其把伤害堆到天上,不如考虑用技能来让 Boss 打得更疼。
-
作弊点,到处都是。要格外确保地形无法被作弊利用。把 Boss 放在一个封闭的房间里,防止人们试图从远处狙击它。对很多世界 Boss 来说,箭矢免疫技能大概极其重要,因为 Minecraft 的怪物应付不了在几个区块之外被狙击,所以如果你想允许弓箭攻击,请确保弓不会被作弊利用。
-
了解这个插件。击败 EliteMobs 有很多小技巧,比如有些技能可以用盾牌反制,而另一些则应该靠闪避甚至暂时跑离 Boss 来反制。你越了解技能的运作方式以及如何反制它们,你制作出的 Boss 就会越出色。
完整的世界 Boss 示例
此示例组合了主要设置。请替换世界和坐标,并确认列出的技能和自定义物品已启用。竞技场方块变化应在游戏内记录;这里的单个方块仅演示格式。
isEnabled: true
entityType: ZOMBIE
name: "&cThe Zombie King"
level: 30
healthMultiplier: 10.0
damageMultiplier: 2.0
# World Boss specific settings
isRegionalBoss: true
isPersistent: true
# Spawn settings
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60
# Combat boundaries
leashRadius: 30
timeout: 20
# Messages and announcements
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2
# Arena modification
onSpawnBlockStates:
- 0,0,0/minecraft:barrier
onRemoveBlockStates:
- 0,0,0/minecraft:air
# Boss features
powers:
- zombie_friends.lua
- ground_pound.lua
uniqueLootList:
- filename=magmaguys_toothpick.yml:chance=1.0
这个 Boss 将会:
- 死亡或超时 60 分钟后安排生成,世界和区块可用时出现
- 若未被击败,则从生成或恢复起 20 分钟后逃脱
- 在聊天中通告生成/死亡/逃脱,并允许玩家追踪
- 在区块重新加载时恢复
- 在生成和死亡时改造竞技场方块
- 在被击败时掉落独特战利品
在默认上限下,此示例的 30 级和 healthMultiplier: 10.0 对应 1400 生命值,33 级达到 2048。基础生命值在乘倍率前先限制一次,乘后的结果再次限制。因此,基础生命值已经达到上限后,降低倍率也无法恢复随等级增长的生命值。参阅 healthMultiplier。