Интеграция с DiscordSRV
EliteMobs использует DiscordSRV, чтобы транслировать сообщения с приоритетом объявлений 3 и выше. О системе приоритета объявлений можно почитать здесь.
По сути это означает, что некоторые особые Кастомные боссы могут отправлять сообщения в Discord — выглядит это так:

Задумка в том, чтобы создать отдельную комнату объявлений EliteMobs, куда игроки смогут заглянуть и посмотреть, нет ли сейчас живых интересных Мировых боссов, которых можно пойти убить и похвастаться этим в таблице лидеров по убийствам.
Настройка всего этого
Настройка DiscordSRV
DiscordSRV — это отдельный плагин, разработанный не мной. Их подробное руководство по настройке доступно здесь. Если у вас возникнут трудности с настройкой, их комната поддержки находится здесь. Я не могу оказывать поддержку по этому плагину, поэтому по этой части установки обращайтесь к ним.
EliteMobs компилируется с DiscordSRV 1.28.0. Используйте команду проверки ниже, чтобы подтвердить доставку с версией, установленной на вашем сервере.
Настройка конфигурации DiscordSRV в EliteMobs
После того как вы корректно настроили DiscordSRV (и обязательно проверьте, что он действительно работает, прежде чем переходить к этому шагу), в конфигурации EliteMobs остаётся всего 1 шаг.
Откройте конфигурационный файл DiscordSRV.yml в папке конфигурации EliteMobs (обычно plugins/EliteMobs/DiscordSRV.yml) — там вы найдёте настройку announcementRoomName.
Для этого сообщения можно использовать три варианта значения. Я рекомендую №1.
-
[Рекомендуется] Название комнаты в том виде, в каком вы задали его в конфигурационном файле DiscordSRV. Неважно, как вы назвали комнату, важно лишь использовать правильное название. Вот пример комнаты, которую я выделил под события EliteMobs:
В моём случае настройка должна выглядеть так: announcementRoomName: EMEvents. -
Идентификатор комнаты в том виде, в каком вы задали его в конфигурационном файле DiscordSRV. Вот пример комнаты. Обратите внимание, что каждая комната уникальна. Изображения приведены лишь как пример, не пытайтесь копировать эти числовые идентификаторы. Это не сработает. В вашей настройке должен быть уникальный набор цифр, соответствующий идентификатору вашей комнаты в Discord.

-
[Менее надёжно] Название канала в Discord. Последний поиск не учитывает регистр и выбирает первый подходящий текстовый канал, поэтому одинаковые названия могут привести к неверному получателю. DiscordSRV и его бот должны быть настроены и иметь доступ к каналу; сам поиск по имени не требует сопоставления с игровым каналом.
Технические замечания
- У сообщений, отправляемых в Discord, автоматически удаляются цветовые коды Minecraft — это нужно для корректного отображения
- Сообщения в Discord отправляются асинхронно, чтобы не вызывать лаги сервера
- EliteMobs использует трёхуровневый поиск вашего канала Discord: сначала по идентификатору канала (только если
announcementRoomNameсостоит из одних цифр), затем по сопоставлению каналов DiscordSRV и, наконец, по поиску по названию канала - Автоматические объявления контента требуют приоритета не ниже 3: сообщения о спавне, смерти и побеге кастомных боссов, а также
startMessage/endMessageкастомных событий. Команда ручной проверки ниже отправляет сообщение напрямую, без проверки приоритета контента. - В Discord отправляются те же сообщения, что показываются в игре
- Канал ищется заново для каждого объявления, поэтому исправленное значение
announcementRoomNameвступает в силу после/em reload. Если поиск ничего не нашёл, в лог пишетсяChannel room <name> is not valid!; если Discord отклонил сообщение, в лог пишетсяDiscordSRV announcement failed for <name>.
Тестирование
Чтобы проверить, работает ли ваша конфигурация, используйте команду /em discord <message>. Замените <message> на любой текст, который хотите отправить в Discord.
Пример: /em discord Test message from EliteMobs!
Убедитесь, что сообщение появилось в нужном канале Discord. Ответ команды подтверждает лишь попытку отправки; он может появиться даже без DiscordSRV, со значением-заглушкой в настройке или при неудачном поиске канала. Без сообщения в Discord доставка не подтверждена.
Примечание: для этой команды требуется право elitemobs.discord.message
Кроме того, командой /em discord (без сообщения) можно вывести ссылку-приглашение на сервер Discord EliteMobs для поддержки и загрузок. Для этой команды требуется право elitemobs.discord.link.
Устранение неполадок
Сообщения не появляются в Discord:
- Убедитесь, что DiscordSRV установлен и работает (сначала проверьте это собственными командами DiscordSRV)
- Проверьте, что
announcementRoomNameНЕ оставлено со значением-заглушкой по умолчанию - Убедитесь, что название/идентификатор комнаты в точности совпадает с указанным в вашей конфигурации DiscordSRV
- Проверьте консоль на наличие предупреждений EliteMobs об интеграции с Discord
- Убедитесь, что у вас есть право
elitemobs.discord.messageдля тестирования
Ошибки «канал не найден»:
- Ещё раз проверьте написание названия канала как в DiscordSRV.yml, так и в DiscordSRV.yml от EliteMobs
- Попробуйте использовать числовой идентификатор канала вместо названия
- Убедитесь, что канал правильно настроен в config.yml от DiscordSRV
Команда тестирования не работает:
- Убедитесь, что у вас есть право
elitemobs.discord.message - Используйте правильный синтаксис:
/em discord <message>(с сообщением) - Проверьте консоль сервера на наличие сообщений об ошибках