Настройка Nightbreak и управление контентом
Эта страница является общим руководством по настройке плагинов, управляемых Nightbreak.
Оно напрямую применяется к:
- EliteMobs
- BetterStructures
- FreeMinecraftModels
- EternalTD
- ResurrectionChest
- WorldCannon
Эти плагины теперь разделяют один и тот же общий жизненный цикл:
- Установите плагин и все обязательные зависимости.
- Запустите сервер один раз, чтобы были сгенерированы файлы и меню.
- Выполните команду первоначальной настройки плагина, если она есть.
- Привяжите сервер к своему аккаунту Nightbreak с помощью
/nightbreaklogin, затем одобрите его по выведенной ссылке. - Используйте меню настройки плагина для просмотра, установки, включения, отключения и обновления контента.
- Используйте команды массовой загрузки/обновления плагина, когда хотите ускорить начальную настройку.
Что именно предоставляет MagmaCore
MagmaCore — это общий слой за управляемым Nightbreak потоком. Он предоставляет:
- общую команду
/nightbreaklogin, которая привязывает сервер через браузер или сохраняет вставленный вами токен (правоnightbreak.login, по умолчанию OP) - общую команду
/nightbreaklogoutдля отвязки сервера от его аккаунта Nightbreak (правоnightbreak.login, по умолчанию OP) - общую команду
/logifyдля выгрузки текущего лога сервера на mclo.gs (правоlogify.*, по умолчанию OP). Она выгружаетlogs/latest.logили, если его нет, самый новый файл.log, предварительно маскируя цифры IPv4-адресов и портов, и отвечает кликабельной ссылкой - общую команду
/nightbreak pluginsдля просмотра каталога плагинов Nightbreak (правоnightbreak.plugins, по умолчанию OP) - общее хранилище токенов в
plugins/MagmaCore/nightbreak.yml - общие примитивы меню настройки, используемые меню настройки плагинов
- общие проверки доступа, версий и загрузок Nightbreak
- общую логику массовой загрузки, которая скачивает файлы в папку
importsвладеющего плагина - общий «входящий» список изменений, который сообщает администраторам прямо в игре, что у плагина или установленного пакета контента есть непрочитанные заметки о выпуске (см. Уведомления об изменениях Nightbreak)
- обновления плагинов без перезапуска через
applypluginupdateи настройкуnightbreak.applyPluginUpdatesWithoutRestart(см. ниже) - стандартный набор подкоманд, который каждый управляемый Nightbreak плагин регистрирует под своей корневой командой (см. ниже)
/nightbreaklogin, /nightbreaklogout, /logify и /nightbreak регистрируются один раз на сервер тем из управляемых Nightbreak плагинов, который первым загружает MagmaCore, поэтому они доступны независимо от того, какой плагин «владеет» ими в данный момент.
Общие стандартные подкоманды
Приведённые ниже подкоманды не пишутся каждым плагином. MagmaCore регистрирует одни и те же реализации под той корневой командой, которую объявляет плагин (/em, /bs, /fmm, /etd, …), поэтому они ведут себя одинаково везде.
| Подкоманда | Что делает | Право |
|---|---|---|
setup | Открывает меню настройки плагина. Только для игроков. | право настройки плагина |
initialize | Открывает меню первичной настройки для игроков, если плагин регистрирует этот процесс. Предустановленные режимы не обязательны; FreeMinecraftModels тоже регистрирует команду. Сверяйтесь со страницей команд каждого плагина. | право initialize плагина |
recommendedplugins | Показывает рекомендуемые сопутствующие плагины (меню в игре, список в чат из консоли). | право настройки плагина |
downloadpluginupdate | Загружает только jar обновления плагина. Без контента. | право администратора плагина |
applypluginupdate | Применяет загруженное обновление плагина без перезапуска сервера. См. Применение обновлений без перезапуска. | право администратора плагина |
downloadall | Загружает обновление плагина, а затем весь доступный контент. | право администратора плагина |
downloadallcontent | Загружает весь доступный контент, без обновления плагина. Регистрируется только плагинами, поставляющими пакеты контента. | право настройки плагина |
updatecontent (псевдоним updateallcontent) | Загружает обновления только для уже устаревшего контента. Регистрируется только плагинами, поставляющими пакеты контента. | право настройки плагина |
forcereinstallcontent <package|all> | Повторно загружает контент через обычный путь аутентифицированного импорта и перезагрузки, даже если установленная версия уже актуальна. all охватывает каждый пакет, который загружен, установлен или устарел; если файлы пакета полностью отсутствуют, укажите его slug напрямую. Регистрируется только плагинами, поставляющими пакеты контента. | право администратора плагина |
Конкретный узел прав за каждой колонкой выбирается плагином, поэтому имена узлов смотрите на странице самого плагина. initialize — это поток начального руководства; он не заменяет меню настройки или команды управления контентом.
Поскольку downloadall начинается с обновления плагина, он останавливается до этапа контента, если у аккаунта нет токена или аутентификация токена не удалась. Сначала исправьте токен, затем запустите команду заново.
MagmaCore также имеет отдельную систему инициализации при запуске плагина. Она не связана с описанными здесь командами initialize для игроков.
Автоматические обновления
Каждый управляемый Nightbreak плагин записывает два общих ключа в собственный config.yml:
nightbreak:
autoDownloadPluginUpdates: false
applyPluginUpdatesWithoutRestart: never
Когда autoDownloadPluginUpdates равно true, этот плагин через несколько минут после запуска автоматически загружает:
- доступный jar обновления плагина и
- файлы обновлений для любых устаревших пакетов контента, которыми он управляет.
Автоматически загруженные обновления контента используются после перезапуска сервера. Загруженное обновление плагина тоже ждёт перезапуска, если только applyPluginUpdatesWithoutRestart не применит его раньше (см. Применение обновлений без перезапуска). Обе настройки изначально выключены, поэтому «из коробки» вы остаётесь на внутриигровой кнопке обновления. Кнопка Automatic Updates на панели инструментов меню настройки включает и выключает autoDownloadPluginUpdates. Эта кнопка и пункт Plugin Update сообщают, когда загруженное обновление плагина применится при текущем значении applyPluginUpdatesWithoutRestart. У ResourcePackManager они сообщают о необходимости перезапуска.
ResourcePackManager записывает только autoDownloadPluginUpdates, потому что его обновления всегда требуют перезапуска.
Для загрузки jar плагинов в игре — автоматической или запущенной командой либо из меню — нужны действительный токен и активная подписка сторонника на Patreon у привязанного аккаунта Nightbreak. Без них загрузка отклоняется, а плагин сообщает причину и даёт ссылку на публичную страницу загрузки. Прежде чем загруженный jar получит окончательное имя в папке update сервера или, при новой установке, в папке plugins, MagmaCore проверяет его соответствие ожидаемым имени и версии плагина. Если Nightbreak передаёт контрольную сумму SHA-256, она тоже проверяется. При любой неудачной проверке временный файл удаляется вместо установки.
Отдельно от настройки автозагрузки каждый плагин примерно раз в час тихо перепроверяет наличие более новой версии, чтобы меню настройки могло показать актуальное состояние обновления. Эта проверка сама по себе ничего не загружает. Некоторые плагины также записывают в консоль последнюю публичную версию, когда этот результат меняется, и сообщают входящим операторам, что их версия устарела, со ссылкой на загрузку.
Применение обновлений без перезапуска
Загруженное обновление плагина ждёт в папке update сервера. Выполните /<root> applypluginupdate, например /em applypluginupdate, чтобы подставить его в работающий сервер. Команда использует право администратора плагина и работает также из консоли.
При замене отключаются плагин и все включённые плагины MagmaGuy, которые объявляют его в depend или softdepend, jar заменяется, после чего они снова загружаются и включаются. В чате перечисляются плагины, перезагруженные вместе с ним. Если новый jar не включается, снова загружается предыдущий jar, а обновление остаётся в папке update до следующего перезапуска. Обновления, ожидающие там для других перезагружаемых плагинов, тоже остаются до следующего перезапуска; версию меняет только указанный вами плагин.
Команда отказывает с сообщением, если:
- загруженного обновления в ожидании нет либо ожидающий jar недействителен или не новее работающей версии
- от плагина зависит (через
dependилиsoftdepend) плагин другого автора. В этом случае перезапустите сервер - уже выполняется замена другого плагина
- плагин всегда требует перезапуска. ResourcePackManager отказывает, потому что его расширение Geyser загружается только при запуске Geyser
Используйте эту команду вместо сторонних плагинов для перезагрузки. До замены или перезапуска сервер продолжает работать со старым jar.
nightbreak.applyPluginUpdatesWithoutRestart определяет, что происходит сразу после загрузки обновления плагина — независимо от того, пришла ли загрузка из downloadpluginupdate, downloadall, меню настройки или автоматической загрузки:
| Значение | Поведение |
|---|---|
never | По умолчанию. Обновление ждёт следующего перезапуска. Игроки онлайн с правом администратора плагина или wildcard получают заголовок и сообщение в чате о том, что требуется перезапуск. Сообщение называет /<root> applypluginupdate только тогда, когда плагин регистрирует эту команду и разрешает обновления без перезапуска. |
when-empty | Применяет обновление сразу, если на сервере нет игроков. Иначе плагин проверяет каждые 30 секунд и применяет обновление, когда сервер опустеет. |
immediately | Применяет обновление сразу после завершения загрузки. |
Любое другое значение работает как never. Если when-empty или immediately сталкивается с одним из перечисленных выше отказов, обновление ждёт следующего перезапуска. Замена перезагружает плагин, поэтому идущие бои с боссами, арены и экземпляры подземелий завершаются.
Рекомендованный порядок действий для владельцев серверов
1. Сначала установите плагин
Поместите jar-файл плагина и все необходимые обязательные зависимости в plugins/, затем запустите сервер один раз.
2. Выполните процесс первоначальной настройки
Если плагин предоставляет команду initialize, используйте её первой. Текущие меню предназначены для того, чтобы:
- отметить первоначальную настройку как завершённую
- направить вас к привязке аккаунта Nightbreak или запустить привязку за вас
- направить вас к текущему меню настройки
- уточнить, когда ручной импорт всё ещё допустим
Для этого процесса не нужны предустановленные режимы; FreeMinecraftModels тоже его предоставляет. Наличие команды уточняйте на странице соответствующего плагина.
3. Привяжите свой аккаунт Nightbreak
Выполните:
/nightbreaklogin
Откройте выведенную ссылку, войдите и одобрите сервер. Сервер сам сохранит токен вашего аккаунта. Вы по-прежнему можете вставить токен со страницы аккаунта Nightbreak командой /nightbreaklogin <token>. См. Привязка аккаунта Nightbreak.
Токен используется совместно через MagmaCore, поэтому один привязанный токен может использоваться всеми совместимыми плагинами MagmaGuy на этом сервере.
4. Используйте меню настройки для повседневного управления контентом
Меню настройки являются текущим первоисточником для:
- состояний пакетов
- состояний доступа
- установленного и загруженного контента
- частично установленного контента, требующего исправления
- устаревшего контента
- фильтров контента по категориям
Если у вас есть привязанный токен, меню настройки — рекомендуемое место для установки и обновления контента.
5. Используйте массовую установку/обновление, когда нужна скорость
Используйте команду downloadall, когда хотите быстро настроить сервер, и команду updatecontent, когда хотите обновить всё устаревшее.
Общий массовый загрузчик пытается загрузить только пакеты, управляемые Nightbreak, у которых есть slug Nightbreak. Из них:
downloadallиdownloadallcontentвыбирают пакеты, которые ещё не загружены или устарели. Доступ определяет аутентифицированная проверка загрузки Nightbreak, поэтому пакет, к которому у вашего аккаунта нет доступа, в конце отображается как неудачный.updatecontentсначала обновляет сведения о версиях пакетов, затем выбирает только устаревшие пакеты, пропуская те, которые проверка доступа уже отметила как заблокированные.
Интерактивные массовые команды просят владеющий плагин перезагрузиться после хотя бы одной успешной загрузки. Автоматические загрузки контента при запуске намеренно не перезагружают плагин; они вступают в силу после перезапуска сервера.
Общие концепции
Загружено и установлено
Пакет может существовать локально, не будучи включённым. Точное значение немного варьируется в зависимости от плагина, но состояние в меню настройки важнее, чем наличие zip-файла в imports.
Массовые загрузки также попадают в ту же папку imports плагина, которая используется ручным импортом, до завершения этапа импорта/перезагрузки, специфичного для плагина.
Контент с учётом доступа
Меню настройки теперь могут различать контент, который:
- доступен для вашего токена
- необходимо приобрести или разблокировать
- установлен
- установлен лишь частично
- загружен, но отключён
- устарел
Плагин может перечислить пакет до того, как Nightbreak его выпустит. Когда плагин загрузил список опубликованных пакетов Nightbreak и этого пакета в нём нет, клик по пакету сообщает, что он ещё не выпущен на Nightbreak. Проверки доступа и массовые команды, включая forcereinstallcontent, его пропускают. Если Nightbreak всё же отвечает на запрос такого пакета «not found», консоль один раз отмечает, что пакет не выпущен, вместо записи ошибки API.
Обновления контента архивируют убранные файлы
Когда обновлённый пакет больше не поставляет файл, который установила его предыдущая версия, импорт перемещает этот файл в plugins/MagmaCore/outdated files/, а не оставляет его загруженным. См. Файлы, которые обновление пакета перестаёт поставлять.
Ручной импорт по-прежнему допустим
Плагины, управляемые Nightbreak, по-прежнему поддерживают рабочие процессы ручного импорта. Ручной импорт теперь является запасным путём, а не путём по умолчанию. См. Ручной импорт и внутриигровое управление.
Каталог плагинов и рекомендации
/nightbreak plugins показывает плагины MagmaGuy — в виде меню в игре и списка в чате из консоли. В меню клик по установленному плагину открывает его меню настройки. Клик по отсутствующему плагину загружает его jar прямо в папку plugins под именем файла из каталога; для этого нужны привязанный токен и доступ сторонника, после чего сообщение в чате попросит перезапустить сервер, чтобы новый плагин загрузился. Если в папке plugins уже лежит jar этого плагина, который сервер не загружал, загрузка вместо этого попадает в папку update под именем того jar. Без токена или доступа сообщение вместо этого даёт ссылку на публичную страницу загрузки.
/<root> recommendedplugins показывает сопутствующие плагины для одного плагина, каждый с пометкой Required, Recommended или Encouraged. Плагины MagmaGuy ведут себя так же, как в /nightbreak plugins. Внешние плагины, такие как WorldEdit, WorldGuard, LibsDisguises и PacketEvents, ссылаются на свои официальные страницы. Кнопка Recommended Plugins в меню настройки открывает тот же список и становится зелёной, когда установлены все перечисленные плагины.
Плагины, не использующие этот поток
Не каждый плагин в этой вики использует загружаемый контент, управляемый Nightbreak.
- BetterFood не использует управление пакетами Nightbreak
- ResourcePackManager управляет ресурс-паками, а не DLC-пакетами Nightbreak
Оба этих плагина всё же регистрируют общую оболочку настройки, а также общие команды обновления плагина и списка изменений; им не хватает именно пакетов контента Nightbreak.
ResurrectionChest и WorldCannon не являются исключениями — оба объявляют пакеты контента, оба регистрируют общие подкоманды для контента и оба используют общий импортёр, поэтому они также принимают вручную помещённые zip-архивы пакетов. См. Ручной импорт и внутриигровое управление.