Перейти к основному содержимому

Интеграция с DiscordSRV

EliteMobs использует DiscordSRV, чтобы транслировать сообщения с приоритетом объявлений 3 и выше. О системе приоритета объявлений можно почитать здесь.

По сути это означает, что некоторые особые Кастомные боссы могут отправлять сообщения в Discord — выглядит это так:

discord message example

Задумка в том, чтобы создать отдельную комнату объявлений EliteMobs, куда игроки смогут заглянуть и посмотреть, нет ли сейчас живых интересных Мировых боссов, которых можно пойти убить и похвастаться этим в таблице лидеров по убийствам.

Настройка всего этого

Настройка DiscordSRV

DiscordSRV — это отдельный плагин, разработанный не мной. Их подробное руководство по настройке доступно здесь. Если у вас возникнут трудности с настройкой, их комната поддержки находится здесь. Я не могу оказывать поддержку по этому плагину, поэтому по этой части установки обращайтесь к ним.

Примечание: EliteMobs протестирован с DiscordSRV версии 1.28.0. Другие версии тоже могут работать, но именно эта версия точно совместима.

Настройка конфигурации DiscordSRV в EliteMobs

После того как вы корректно настроили DiscordSRV (и обязательно проверьте, что он действительно работает, прежде чем переходить к этому шагу), в конфигурации EliteMobs остаётся всего 1 шаг.

Откройте конфигурационный файл DiscordSRV.yml в папке конфигурации EliteMobs (обычно plugins/EliteMobs/DiscordSRV.yml) — там вы найдёте настройку announcementRoomName.

Для этого сообщения можно использовать три варианта значения. Я рекомендую №1.

  1. [Рекомендуется] Название комнаты в том виде, в каком вы задали его в конфигурационном файле DiscordSRV. Неважно, как вы назвали комнату, важно лишь использовать правильное название. Вот пример комнаты, которую я выделил под события EliteMobs: using name example В моём случае настройка должна выглядеть так: announcementRoomName: EMEvents.

  2. Идентификатор комнаты в том виде, в каком вы задали его в конфигурационном файле DiscordSRV. Вот пример комнаты. Обратите внимание, что каждая комната уникальна. Изображения приведены лишь как пример, не пытайтесь копировать эти числовые идентификаторы. Это не сработает. В вашей настройке должен быть уникальный набор цифр, соответствующий идентификатору вашей комнаты в Discord. using id example

  3. [Плохой вариант] Название вашей комнаты в том виде, в каком оно отображается в Discord. Корректная работа не гарантируется по ряду причин. Помните, что ваша комната Discord должна быть настроена в конфигурационных файлах DiscordSRV — то, что вы можете указать название комнаты в этом файле конфигурации, не означает, что настройку в DiscordSRV можно пропустить.

Технические замечания

  • У сообщений, отправляемых в Discord, автоматически удаляются цветовые коды Minecraft — это нужно для корректного отображения
  • Сообщения в Discord отправляются асинхронно, чтобы не вызывать лаги сервера
  • EliteMobs использует трёхуровневый поиск вашего канала Discord: сначала по идентификатору канала, затем по сопоставлению каналов DiscordSRV и, наконец, по поиску по названию канала
  • Уведомления в Discord запускает только контент с приоритетом объявлений 3 или выше — это охватывает сообщения о спавне/смерти/побеге Кастомных боссов и startMessage/endMessage Кастомных событий
  • В Discord отправляются те же сообщения, что показываются в игре
  • Канал определяется один раз и затем кешируется на весь сеанс работы сервера, поэтому для изменения announcementRoomName нужен перезапуск, а не просто /em reload

Тестирование

Чтобы проверить, работает ли ваша конфигурация, используйте команду /em discord <message>. Замените <message> на любой текст, который хотите отправить в Discord.

Пример: /em discord Test message from EliteMobs!

Если ваше сообщение появилось в настроенном канале 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> (с сообщением)
  • Проверьте консоль сервера на наличие сообщений об ошибках