跳到主要内容

公告优先级系统

公告优先级系统用于管理 EliteMobs 消息的重要程度。它被自定义 Boss(生成 / 死亡 / 逃脱消息以及追踪)和自定义事件(startMessage / endMessage)所使用。

这两者走的是不同的代码路径,并且在优先级 2 上表现不同 —— 参见本页底部的自定义事件走的是另一条路径。

简明速查表:

  • 等级 0:不发送公开公告;配置的死亡消息仅发送给造成伤害的玩家
  • 等级 1:配置的聊天消息 + 启用 showCustomBossLocation 时的追踪
  • 等级 2:对于自定义 Boss 而言与等级 1 完全相同(没有单独的行为)
  • 等级 3:等级 1 的功能 + Discord 公告(需要 DiscordSRV)

工作原理:

注意:如果你想使用非默认值,需要为你的自定义 Boss 配置这个优先级系统。点击 这里 了解如何操作。

等级 0​

关闭自定义 Boss 的公开公告。这意味着:

  • 不会发送任何生成消息
  • 不会发送任何逃脱消息
  • 死亡消息 仅 发送给对 Boss 造成过伤害的玩家(而非全服务器)
  • 即使配置了 locationMessage,Boss 追踪也会被禁用

等级 1​

仅配置消息不会启用公开公告

如果省略 announcementPriority,即使配置了消息字段,Boss 也使用优先级 0。死亡消息仍可私下发送给造成伤害的玩家。设置 announcementPriority: 1 或更高以启用公开公告。

如果自定义 Boss 被配置为发送消息,它就能在聊天中发送消息。如果配置了生成、死亡和逃脱消息,它就会发送这些消息。

默认情况下,生成消息会向服务器上的所有玩家广播。你可以在 events.yml 中启用仅在事件世界广播的设置(announcementBroadcastWorldOnly: true),将广播限制在 Boss 所在世界。

启用 showCustomBossLocation 后,该等级也会启用 Boss 追踪。Boss 生成时,同世界玩家会收到可点击的追踪通知;也可以使用 /em 菜单。locationMessage 用于自定义追踪文本,是可选设置。

追踪要求​

要在优先级 1 或 2 下使 Boss 追踪生效,必须配置以下内容:

  • 将 announcementPriority 设置为 1 或更高
  • 可选添加 locationMessage 以自定义文本;缺失或空白时使用 $name: $distance blocks away!
  • 确保服务器配置中启用了 showCustomBossLocation(默认值:true)

locationMessage 可以包含占位符:

  • $name - 显示 Boss 名称
  • $distance - 显示到导航目标的距离
  • $location - 显示导航目标的坐标

在同一世界中,导航目标就是 Boss。跨世界时,追踪可以指向直接连接两个世界的虫洞入口;如果不存在这样的连接,则显示配置的异世界消息。

等级 2​

对于自定义 Boss,等级 2 的行为与 等级 1 完全相同——优先级 2 没有单独的代码路径。每种消息类型在优先级 1 和优先级 2 下都遵循相同的规则:

  • 除非设置了 announcementBroadcastWorldOnly: true,否则生成消息会向全服务器广播;若设置了该项,则只发送给 Boss 所在世界的玩家。
  • 对于优先级 1 或更高的任何级别,死亡消息都会向全服务器广播。
  • 对于优先级 1 或更高的任何级别,逃脱消息始终只发送给 Boss 所在世界的玩家。

启用 showCustomBossLocation 后,该等级也会启用 Boss 追踪。

注意:追踪需要公告优先级至少为 1,并启用 showCustomBossLocation;locationMessage 是可选设置。

等级 3​

自定义 Boss 的行为与等级 1 相同,此外还会向被配置为接收 EliteMobs 通知的 Discord 频道发送消息。设置此功能的方法请见此页面。 Discord 上的消息将与聊天消息相同——生成 / 死亡 / 逃脱。

自定义事件走的是另一条路径​

自定义事件(customevents/*.yml)同样带有 announcementPriority,但它们的 startMessage 和 endMessage 走的是另一套更简单的处理流程。其行为如下:

优先级消息发送给谁Discord
0仅事件所在世界的玩家否
1全服务器广播;除非 events.yml 中设置了 announcementBroadcastWorldOnly: true,此时仅事件所在世界否
2仅事件所在世界的玩家(全服广播的分支是精确针对优先级 1 编写的)否
3+仅事件所在世界的玩家是

因此对于事件来说 —— 与 Boss 不同 —— 优先级 2 并不等同于优先级 1,而且即使 announcementBroadcastWorldOnly 为 false,优先级 3 或更高也不会进行全服广播。事件的 announcementPriority 默认为 0。

消息类型​

自定义 Boss 可以拥有三种类型的公告:

  • 生成消息(spawnMessage)——在 Boss 生成时发送
  • 死亡消息(deathMessage)——在 Boss 被击杀时发送
  • 逃脱消息(escapeMessage)——在 Boss 消失 / 逃脱时发送

每种消息类型都必须在你的 Boss 文件中单独配置。公告优先级等级控制这些消息是否发送以及由谁接收。

Boss 死亡消息还要求启用 MobCombatSettings.yml 中的 doCustomEliteMobsDeathMessages(默认为 true)。非空的 deathMessages 列表优先于单条 deathMessage。没有对应攻击者的排名行会被省略。

占位符按字段区分。locationMessage 支持 $name、$distance 和 $location。生成与逃脱消息不替换 $name,请直接填写 Boss 名称。单条 deathMessage 支持 $players 和 $playersName;排名占位符 $damager1name/$damager1Name 应放在 deathMessages 列表中。

配置示例​

# Silent boss - only damagers see death message
announcementPriority: 0
deathMessage: '&cThe Sentinel has been defeated!'

# Chat announcements with tracking
announcementPriority: 1
spawnMessage: '&4The Sentinel &chas spawned!'
deathMessages:
- '&aThe Sentinel &2has been slain by $damager1Name!'
escapeMessage: '&eThe Sentinel &6has escaped!'
locationMessage: '&6$name &eis $distance blocks away at $location'

# Discord integration
announcementPriority: 3
spawnMessage: '&4The Sentinel &chas spawned!'
locationMessage: '&6Track $name at $location'