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

Совместимость BetterFood

Целевые платформы​

Текущий репозиторий нацелен на:

  • Версия плагина: 1.5.5
  • Bukkit api-version: 1.21.4
  • Цель сборки Spigot API: 26.3-R0.1-SNAPSHOT
  • Java: 21

Команды​

Плагин использует:

  • /betterfood
  • /bf

Подкоманды для игроков сосредоточены на переключении:

  • автоматического поедания (toggleEating или просто /betterfood без аргументов)
  • сообщений обратной связи о потреблении в панели действий (toggleMessage)

Админские подкоманды (требуют betterfood.admin) предоставляют общий инструментарий Nightbreak:

  • setup — открывает внутриигровое меню настройки
  • recommendedplugins — показывает плагины, которые хорошо сочетаются с BetterFood. Сейчас у BetterFood нет записей в общем каталоге рекомендаций, поэтому открывается пустое меню с сообщением о том, что дополнительных рекомендаций пока нет (отправители из консоли получают то же примечание в чате)
  • downloadpluginupdate / downloadall — загружает обновление плагина, если оно доступно
  • applypluginupdate применяет загруженное обновление плагина без перезапуска сервера (см. Обновление плагина без перезапуска)
  • downloadallcontent — сообщает, что у BetterFood нет пакетов контента

Автодополнение учитывает разрешения и введённый текст: toggleEating и toggleMessage предлагаются только с betterfood.user, а downloadpluginupdate, applypluginupdate, downloadallcontent, setup и recommendedplugins — только с betterfood.admin. Псевдоним downloadall принимается, но намеренно не предлагается. Обе настройки доступны только игрокам. Явные подкоманды toggleEating / toggleMessage отвечают другим отправителям «BetterFood settings can only be changed in-game.», а /betterfood без аргументов указывает консоли команду обновления. Игрок без betterfood.user получает сообщение об отсутствии разрешения. Неизвестная подкоманда или более одного аргумента выводит справку. Администраторы видят две настройки и команды обновления, настройки меню и рекомендаций; остальные — только две настройки. В справке нет downloadallcontent, хотя команда принимается и предлагается администраторам при автодополнении.

Общие команды MagmaCore​

Встроенные инструменты MagmaCore добавляют следующие команды при запуске. Глобальные команды регистрируются при загрузке, только если их имена свободны. Если на сервере есть другие плагины MagmaGuy, каждое имя остаётся за первой регистрацией. Команда заметок о выпусках BetterFood инициализируется при включении плагина:

  • /nightbreak plugins — просмотр каталога плагинов: в виде меню в игре и в виде списка в чате из консоли (nightbreak.plugins, по умолчанию op). Голая команда /nightbreak только выводит строку с описанием использования.
  • /nightbreaklogin <token> и /nightbreaklogout — подключают и отключают общий токен аккаунта Nightbreak (nightbreak.login, по умолчанию op)
  • /logify — загружает текущий лог сервера на mclo.gs (logify.*, по умолчанию op)
  • /betterfoodchangelog [dismiss|disable] — показывает непрочитанные заметки о выпусках BetterFood. Эта команда снабжена пространством имён для каждого плагина, поэтому конфликтов не возникает; если /betterfoodchangelog всё же занята, используется запасное имя вида betterfood:betterfoodchangelog.

Команда просмотра изменений доступна только администраторам и только в игре: отправителям без админского разрешения (или из консоли) она отвечает «This command is only available to plugin administrators in-game.» Игрок считается администратором, если он op либо имеет betterfood.admin или betterfood.*. Администраторам также напоминают о непрочитанных заметках о выпусках вскоре после входа, если только они не выполнили /betterfoodchangelog disable. Состояние «прочитано/скрыто» хранится для каждого игрока в plugins/BetterFood/nightbreak-changelogs.yml.

Об общем потоке смотрите Токены Nightbreak, Настройка Nightbreak и Уведомления о списке изменений.

Разрешения​

  • betterfood.user (по умолчанию true) — управляет обработчиком автоматического поедания и переключателями игрока.
  • betterfood.admin (по умолчанию op) — управляет загрузкой и применением обновления плагина, меню настройки и командой рекомендуемых плагинов. Также считается админским разрешением для команды просмотра изменений.
  • nightbreak.plugins, nightbreak.login и logify.* (все по умолчанию op) — регистрируются встроенным инструментарием MagmaCore для перечисленных выше общих команд и не объявлены в plugin.yml самого BetterFood.

Прочие интеграции​

  • Включена статистика bStats (id плагина 4557) — отключите глобально через конфигурацию bStats, если хотите отказаться от сбора данных.
  • BetterFood теперь поставляется с общим инструментарием MagmaCore. Он создаёт config.yml с двумя ключами — переключателем nightbreak.autoDownloadPluginUpdates (по умолчанию false) и nightbreak.applyPluginUpdatesWithoutRestart (по умолчанию never, см. Обновление плагина без перезапуска) — и проверяет nightbreak.io на наличие более новой версии через несколько минут после загрузки (задержка разнесена по плагинам, чтобы несколько плагинов MagmaGuy не обращались наружу одновременно), а затем примерно раз в час. Результаты записываются в лог только при изменении, поэтому консоль не засоряется каждый час. BetterFood не передаёт идентификатор ресурса SpigotMC, и в его записи каталога его тоже нет, поэтому резервного варианта с версией SpigotMC не существует.
  • Операторы, заходящие на сервер, когда доступно обновление, получают через несколько секунд после входа сообщение в чат со ссылкой на страницу загрузки. Оно отправляется при каждом входе, пока установленная версия отстаёт.
  • Токен аккаунта хранится вне папки плагина, в общем файле plugins/MagmaCore/nightbreak.yml, поэтому одной привязки достаточно для всех плагинов MagmaGuy на сервере.
  • Никаких внешних зависимостей от плагинов; логика еды прослушивает только ванильное событие FoodLevelChangeEvent.

Обновление плагина без перезапуска​

Загруженное обновление плагина ждёт в папке обновлений сервера. /betterfood applypluginupdate подставляет его без перезапуска сервера: BetterFood отключается, его jar-файл заменяется, а новая версия загружается и включается. Переключатели поедания и сообщений хранятся у самих игроков, поэтому они сохраняются.

Команда отказывается выполняться и выводит сообщение, если загруженного обновления нет, если ожидающее обновление не новее запущенной версии или его jar-файл недействителен, если от BetterFood зависит (через depend или softdepend) плагин другого автора или если уже выполняется подмена другого плагина. Если новая версия не включается, снова загружается предыдущий jar-файл, а обновление остаётся в папке обновлений до следующего перезапуска.

Параметр nightbreak.applyPluginUpdatesWithoutRestart в config.yml определяет, что происходит сразу после любой загрузки обновления плагина — через downloadpluginupdate, downloadall, меню настройки или автоматическую загрузку:

ЗначениеПоведение
neverПо умолчанию. Обновление ждёт следующего перезапуска. Администраторам в сети с betterfood.admin или betterfood.* сообщается, что нужен перезапуск, и показывается команда applypluginupdate
when-emptyПрименяет обновление сразу, если на сервере нет игроков; иначе проверяет каждые 30 секунд и применяет его, как только сервер опустеет
immediatelyПрименяет обновление сразу по завершении загрузки

Любое другое значение работает как never.