DiscordSRV 集成
EliteMobs 使用 DiscordSRV 来实现公告优先级 3 及以上消息的广播。你可以在这里了解公告优先级系统。
本质上,这意味着一些非常特殊的自定义 Boss 能够在 Discord 上发送形如下图的消息:

其目的是创建一个专门的 EliteMobs 公告房间,玩家可以查看当前是否有有趣的世界 Boss 存活,从而前去击杀,并在击杀排行榜上炫耀自己的战绩。
完整设置流程
设置 DiscordSRV
DiscordSRV 是另一个插件,并非由我开发。你可以在这里找到他们详尽的设置指南。如果你在设置时遇到困难,他们的支持房间在这里。我无法为该插件提供支持,因此安装的这一部分请向他们咨询。
注意: EliteMobs 是基于 DiscordSRV 1.28.0 版本测试的。虽然其他版本可能也能工作,但这个版本是已知兼容的。
设置 EliteMobs 的 DiscordSRV 配置
一旦你正确配置好 DiscordSRV(并且在进入这一步之前你必须测试它是否真的能工作),EliteMobs 的配置只有 1 个步骤。
前往 EliteMobs 配置文件夹中的 DiscordSRV.yml 配置文件(通常位于 plugins/EliteMobs/DiscordSRV.yml),你会找到一个名为 announcementRoomName 的配置项。
这个配置项有三种可用的取值方式。我推荐第 1 种。
-
[推荐] 你在 DiscordSRV 配置文件中所配置的房间名称。你把房间叫什么并不重要,重要的是使用正确的名称。下面是我配置为专门用于 EliteMobs 事件的房间示例:
在我的情况下,该选项应写为 announcementRoomName: EMEvents。 -
你在 DiscordSRV 配置文件中所配置的房间 ID。下面是该房间的示例。请注意每个房间都是唯一的。我展示图片只是作为示例,请不要尝试照抄这些 ID 数字,那是行不通的。你的设置应当有基于你自己 Discord 房间 ID 的一组唯一数字。

-
[不推荐] 你的房间在 Discord 上显示的名称。由于多种因素,这并不保证能正确工作。请记住,你的 Discord 房间必须在 DiscordSRV 的配置文件中设置好——能够把房间名称填进这个配置文件,并不意味着你可以跳过在 DiscordSRV 中的配置。
技术说明
- 发送到 Discord 的消息会自动去除 Minecraft 颜色代码,以确保正确显示
- Discord 消息是异步发送的,以防止服务器卡顿
- EliteMobs 使用三层查找来定位你的 Discord 频道:先按频道 ID,然后按 DiscordSRV 的频道映射,最后按频道名称搜索
- 只有公告优先级为 3 或更高的内容才会触发 Discord 通知——这涵盖自定义 Boss 的生成/死亡/逃脱消息,以及自定义事件的
startMessage/endMessage - 发送到 Discord 的消息与游戏内显示的消息相同
- 频道只会解析一次,随后在整个服务器会话期间被缓存,因此修改
announcementRoomName需要重启,仅执行/em reload是不够的
测试
你可以使用命令 /em discord <message> 来测试你的配置是否正常工作。把 <message> 替换为你想发送到 Discord 的任意文本。
示例:/em discord Test message from EliteMobs!
如果你的消息出现在了配置的 Discord 频道中,那就大功告成了!
注意: 此命令需要权限 elitemobs.discord.message
此外,你可以使用 /em discord(不带任何消息)来显示 EliteMobs Discord 服务器的邀请链接,用于获取支持和下载。该命令需要权限 elitemobs.discord.link。
疑难解答
消息没有出现在 Discord 中:
- 确认 DiscordSRV 已安装且能正常工作(先用 DiscordSRV 自己的命令测试)
- 检查
announcementRoomName没有仍然是默认的占位值 - 确保房间名称/ID 与你的 DiscordSRV 配置中的完全一致
- 检查控制台中是否有关于 Discord 集成的 EliteMobs 警告
- 确认你拥有用于测试的
elitemobs.discord.message权限
找不到频道的错误:
- 仔细核对 DiscordSRV.yml 和 EliteMobs 的 DiscordSRV.yml 中频道名称的拼写
- 尝试使用数字频道 ID 而不是名称
- 确保该频道已在 DiscordSRV 的 config.yml 中正确配置
测试命令不起作用:
- 确认你拥有
elitemobs.discord.message权限 - 使用正确的语法:
/em discord <message>(带一条消息) - 检查服务器控制台中的错误信息