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

Ручной импорт и внутриигровое управление

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

Используйте меню настройки с привязанным токеном Nightbreak, когда вам нужны:

  • просмотр контента с учётом доступа
  • установка одним кликом или через меню
  • команды массовой загрузки и обновления
  • автоматические проверки устаревших пакетов
  • рабочий процесс, соответствующий текущей кодовой базе

Это предпочтительный путь для:

  • EliteMobs
  • BetterStructures
  • FreeMinecraftModels
  • EternalTD
  • ResurrectionChest
  • WorldCannon

Все шесть используют общий импортёр, поэтому все шесть также принимают описанный ниже ручной запасной вариант.

Запасной вариант: Ручной импорт​

Ручной импорт по-прежнему полезен, когда:

  • у вас уже есть загруженные zip-файлы пакетов
  • вы перемещаете файлы между серверами
  • вы хотите работать автономно от Nightbreak во время тестирования
  • пакет намеренно распространяется вне пути загрузки в игре

Массовые загрузки Nightbreak также попадают в папку imports плагина. Разница в том, что внутриигровой путь выполняет проверки доступа и шаг загрузки за вас.

Карта папок импорта​

ПлагинПапка импорта
EliteMobsplugins/EliteMobs/imports
BetterStructuresplugins/BetterStructures/imports
FreeMinecraftModelsplugins/FreeMinecraftModels/imports
EternalTDplugins/EternalTD/imports
ResurrectionChestplugins/ResurrectionChest/imports
WorldCannonplugins/CannonRTP/imports

Папка плагина WorldCannon называется CannonRTP — это внутреннее имя плагина, и именно там находятся как его папка imports, так и установленный контент.

Правила ручного импорта​

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

Общий импортёр может обрабатывать:

  • пакеты .zip, помещённые в imports
  • определённые уже распакованные папки, если они содержат pack.meta
  • файлы .bbmodel для FreeMinecraftModels

Архивы распаковываются в скрытую промежуточную папку внутри imports и устанавливаются только оттуда. Импортёр удаляет эту промежуточную папку и после успеха, и после сбоя, поэтому обычный неудавшийся импорт оставляет исходный zip готовым к повторной попытке, а не видимый наполовину распакованный пакет рядом с ним.

Что принимает импортёр​

pack.meta решает, куда попадает контент​

Пакет может поставлять файл pack.meta на верхнем уровне, называющий целевую платформу плагина — elitemobs, betterstructures, freeminecraftmodels, eternaltd, extractioncraft, resurrectionchest, megablocksurvivors или worldcannon (также принимаются cannonrtp и world_cannon). Это имя сопоставляется без учёта регистра, а окружающие пробелы, символы конца строки и ведущая метка порядка байтов игнорируются, поэтому файл, сохранённый Windows-редактором, работает нормально.

Если в архиве нет pack.meta, он считается пакетом для того плагина, в чью папку imports его положили.

Если pack.meta называет что-то, чего импортёр не знает, пакет отклоняется, а zip остаётся в imports, чтобы вы могли исправить это и попробовать снова.

Имена папок верхнего уровня должны распознаваться​

Импортёр направляет каждую папку верхнего уровня пакета по назначению исходя из её имени. Некоторые имена работают для всех платформ:

ПапкаКуда попадает
worldcontainerКонтейнер миров сервера (каждая подпапка становится миром)
models или modelengineПапка моделей FreeMinecraftModels или папка blueprints ModelEngine, если установлен только ModelEngine
scriptsplugins/FreeMinecraftModels/scripts
freeminecraftmodels, elitemobs, betterstructuresПапка данных соответствующего плагина (plugins/FreeMinecraftModels, plugins/EliteMobs или plugins/BetterStructures). Устройте папку так же, как папку данных, например freeminecraftmodels/enchantments/
pack.metaИгнорируется — это метаданные, а не контент

Модели из freeminecraftmodels/models/ попадают в ту папку моделей, которую читает FreeMinecraftModels, включая папку Models более старой установки.

Все остальные папки верхнего уровня импортёр разрешает для платформы, на которую рассчитан пакет. Каждая папка попадает в одноимённую папку в папке данных плагина, если в таблице не указано иное:

ПлатформаПапки для этого плагинаПапки для другого плагина
elitemobscustombosses, customitems, customtreasurechests, content_packages (туда же попадает dungeonpackages), customevents, customspawns, customquests, customarenas, npcs, npc_scripts, behaviors, transport_routes, transport_networks, wormholes, powers, world_blueprints, resource_pack, enchantmentsНет
betterstructurescontent_packages, schematics, spawn_pools, components, modules, module_generators, treasures, generatorsEliteMobs: custombosses, customitems, customtreasurechests, powers, enchantments
freeminecraftmodelscontent_packages, recipes, enchantmentsEliteMobs: customitems; пропускается, если EliteMobs не включён
eternaltdnpcs, levels, waves, worlds, content_packages, content_markersНет
resurrectionchestcontent_packagesНет
worldcannoncontent_packages, cannons (туда же попадает fun_rtps), а также cannonrtp, worldcannon или world_cannon для самой папки данных (plugins/CannonRTP)Нет
extractioncraftcontent_packages, loot_pools, loot_tablesEliteMobs: customquests, npcs, custombosses, customitems, customtreasurechests, powers, enchantments, npc_scripts, behaviors. BetterStructures: schematics, spawn_pools, components, modules, module_generators, treasures, generators
megablocksurvivorscontent_packages, npcs, schematics, worlds, content_markers, а также megablocksurvivors для самой папки данных (plugins/MegaBlockSurvivors)Нет

Папка enchantments/ содержит определения зачарований и их локальные эффекты Lua и никогда не использует общий маршрут scripts/. Чтобы поставлять зачарования FreeMinecraftModels в пакете другой платформы, используйте freeminecraftmodels/enchantments/.

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

Импорт в папку другого плагина​

Плагины читают свои папки контента при запуске или перезагрузке. Когда пакет импортирует файлы в папку другого плагина:

  • FreeMinecraftModels автоматически перезагружает импортированный контент.
  • BetterStructures перезагружает новый контент после завершения собственного запуска. Если через 10 минут он всё ещё запускается, консоль предложит выполнить /bs reload.
  • Пакет BetterStructures, импортирующий контент EliteMobs, перезагружает EliteMobs.
  • Когда Extractioncraft импортирует пакеты, он перезагружает BetterStructures, а также EliteMobs, если пакет добавил контент EliteMobs.

В остальных случаях перезагрузите или перезапустите плагин, которому принадлежит папка.

Обновление загруженного мира​

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

Устаревшие файлы в импорте​

Плагин-владелец проверяет устаревшие форматы конфигурации до и после импорта. Соответствующие файлы сохраняются в plugins/MagmaCore/outdated files/, вне активных папок контента. Если старый пакет устанавливает устаревший контент, загрузите обновлённую версию. См. устаревшие конфигурационные файлы.

Файлы, которые обновление пакета перестаёт поставлять​

Импорт копирует и перезаписывает файлы, поэтому сам по себе он оставил бы файл, который отбросила новая версия пакета, и плагин продолжал бы его загружать. Для этого MagmaCore записывает файлы, которые каждый пакет устанавливает в папку plugins, в plugins/MagmaCore/import manifests/, по одному JSON-файлу на пакет. Пакет получает имя по ZIP-файлу или папке без .zip и без завершающей версии вроде _v22, поэтому the-vampire-manor_v22.zip и the-vampire-manor_v23.zip — один и тот же пакет.

Когда следующий импорт этого пакета больше не поставляет файл, установленный предыдущим импортом, импортёр перемещает файл в plugins/MagmaCore/outdated files/<plugin folder>/<time>-<package>/, сохраняя его путь внутри папки плагина, а консоль перечисляет перемещённые файлы. Перемещение входит в транзакцию импорта, поэтому неудачный импорт возвращает файлы на место. Файлы перемещаются, а не удаляются, поэтому ваши правки в них остаются в архивной копии.

Файл остаётся на месте, когда:

  • его всё ещё перечисляет запись другого пакета
  • предыдущий и текущий импорты не имеют общих файлов, то есть имя повторно использовал несвязанный пакет
  • он находится вне папки plugins, например в папке мира, которую импорт заменяет целиком

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

Неудавшиеся импорты откатываются​

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

Импорт применяется как одна транзакция. Существующие файлы резервируются перед заменой, заменяемые папки миров отодвигаются в сторону, а не удаляются, и сбой на полпути запускает откат каждого места назначения, которого коснулся пакет. Zip остаётся в imports, чтобы можно было повторить попытку после устранения ошибки. Если во время самого отката возникнет ошибка файловой системы, консоль явно сообщит, что откат был неполным, и предложит проверить записанные в лог места назначения перед повторной попыткой.

Архив удаляется только после того, как импорт полностью зафиксирован. Если после перезагрузки пакет всё ещё лежит в imports — так импортёр сообщает вам, что он не установился; проверьте консоль на предмет причины.

Важные различия​

Внутриигровой путь​

  • с учётом токена
  • может показывать заблокированный и устаревший контент
  • обычно автоматически перезагружается после массовых операций
  • отражает текущий предусмотренный административный рабочий процесс

Ручной путь​

  • работает без внутриигрового доступа к загрузкам
  • требует самостоятельного управления zip-файлами
  • может потребовать перезагрузки плагина
  • может оставить контент в состоянии «загружен, но не включён» в зависимости от плагина
  • может выявить проблемы со структурой пакета, которые внутриигровой путь доступа обычно скрывает до момента установки