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

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

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

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

Команда​

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

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

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

ИспользованиеЧто делает
/<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, уже не содержит начальную версию, для этого компонента учитываются только последние 20 выпусков до установленной версии включительно.

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

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

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

plugins/<PluginName>/nightbreak-changelogs.yml

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

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

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

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

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

/<root>changelog disable

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