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

Уведомления об изменениях Nightbreak

MagmaCore поставляется с общим «входящим» списком списков изменений. Его получает каждый плагин, использующий обновлятор Nightbreak из MagmaCore, и применяет его, чтобы прямо в игре сообщать администраторам сервера, что у плагина или у одного из установленных пакетов контента есть непрочитанные заметки о выпуске.

Поскольку этот механизм живёт в MagmaCore, везде он работает одинаково. Меняются только название команды и плагин, о котором идёт речь.

Команда

Каждый плагин регистрирует собственную команду списка изменений, составленную из корневой команды плагина и слова changelog — а не из его отображаемого имени, поэтому метка следует за той корневой командой, которую использует конкретный плагин:

ПлагинКоманда
EliteMobs/emchangelog
BetterStructures/bschangelog
EternalTD/etdchangelog
WorldCannon/wcchangelog
FreeMinecraftModels/freeminecraftmodelschangelog
ResurrectionChest/resurrectionchestchangelog
BetterFood/betterfoodchangelog
ResourcePackManager/resourcepackmanagerchangelog

Если такая метка на сервере уже занята, плагин вместо неё регистрирует запасной вариант с пространством имён, а если свободной метки не нашлось вовсе — записывает предупреждение в лог.

ИспользованиеЧто делает
/<root>changelogОткрывает непрочитанные заметки о выпуске.
/<root>changelog dismissПомечает только что показанные заметки как прочитанные.
/<root>changelog disableНавсегда отключает автоматическое напоминание лично для вас. Сама команда продолжает работать.

Команда доступна только в игре и только администраторам. Вы считаетесь администратором, если являетесь оператором либо обладаете подстановочным правом плагина, его правом администратора, правом настройки или правом инициализации.

Уведомление при входе

Когда администратор заходит на сервер, плагин выжидает пару секунд и затем отправляет короткое сообщение в чат с кликабельной кнопкой VIEW CHANGELOG, если есть непрочитанные заметки. Администраторы, которые уже находятся в сети, также получают одно уведомление, когда фоновая загрузка завершается и обнаруживает что-то новое.

Одно и то же уведомление не повторяется, пока набор непрочитанных выпусков не изменился, поэтому за обычную сессию приходит одно напоминание, а не их поток. Администраторы, выполнившие disable, не получают уведомлений никогда.

Как отображаются заметки

На Minecraft 1.21.6 и новее заметки открываются в диалоговом окне с кнопками Dismiss These Updates и Never Show Changelogs. На более старых серверах то же содержимое выводится в чат с эквивалентными инструкциями по командам.

За один показ отображается не более 20 выпусков, начиная с самых новых, чередуя выпуски самого плагина и каждого отслеживаемого пакета контента. Всё, что не поместилось, сообщается как количество пропущенных выпусков. Если отклонить целую страницу, более старые заметки остаются в очереди, а последующее сообщение предлагает кнопку VIEW NEXT.

Что отслеживается

  • Собственные выпуски плагина, взятые из его публичного списка изменений Nightbreak.
  • Каждый установленный пакет контента, у которого есть slug Nightbreak, — по публичному списку изменений этого пакета.

При первом запуске плагина с этим механизмом он записывает текущую версию как нижнюю границу отслеживания и показывает только этот текущий выпуск. Далее он показывает выпуски между записанной границей и той версией, которую вы используете сейчас, поэтому обновление сразу через несколько версий даёт одну сводку по всему скачку, а не пустоту.

Тексты выпусков приходят из Nightbreak и всегда отображаются как обычный текст. Если служба списков изменений недоступна, плагин повторяет попытку в фоне — начиная примерно через 15 минут и увеличивая интервал примерно до четырёх часов — и тем временем показывает то, что уже есть в кэше.

Где хранится состояние прочтения

Каждый плагин хранит собственное состояние в:

plugins/<PluginName>/nightbreak-changelogs.yml

<PluginName> — это внутреннее имя плагина, которое не всегда совпадает с его именем в вики: папка WorldCannon — это plugins/CannonRTP.

В этом файле хранятся нижняя граница отслеживания версий, кэш загруженных заметок о выпусках, а также состояние прочтения и отказа от уведомлений для каждого администратора по UUID. Он не содержит ни токена аккаунта, ни персональных данных, кроме UUID игроков.

Удаление файла сбрасывает отслеживание: плагин считает текущую версию новой нижней границей, и все администраторы начинают с чистого состояния прочтения.

Как это отключить

Общесерверного переключателя нет. Отказ от напоминаний оформляется индивидуально для каждого администратора командой:

/<root>changelog disable

Она помечает всё доступное на данный момент как прочитанное и записывает флаг отказа для этого игрока в файл состояния плагина. Команда после этого продолжает работать, если он захочет посмотреть заметки вручную — прекращается только автоматическое уведомление.