Ручной импорт и внутриигровое управление
Плагины, управляемые Nightbreak, теперь предпочитают внутриигровую настройку и управление контентом, но ручной импорт по-прежнему существует как запасной вариант.
Рекомендуется: Внутриигровое управление
Используйте меню настройки с привязанным токеном Nightbreak, когда вам нужны:
- просмотр контента с учётом доступа
- установка одним кликом или через меню
- команды массовой загрузки и обновления
- автоматические проверки устаревших пакетов
- рабочий процесс, соответствующий текущей кодовой базе
Это предпочтительный путь для:
- EliteMobs
- BetterStructures
- FreeMinecraftModels
- EternalTD
- ResurrectionChest
- WorldCannon
Все шесть используют общий импортёр, поэтому все шесть также принимают описанный ниже ручной запасной вариант.
Запасной вариант: Ручной импорт
Ручной импорт по-прежнему полезен, когда:
- у вас уже есть загруженные zip-файлы пакетов
- вы перемещаете файлы между серверами
- вы хотите работать автономно от Nightbreak во время тестирования
- пакет намеренно распространяется вне пути загрузки в игре
Массовые загрузки Nightbreak также попадают в папку imports плагина. Разница в том, что внутриигровой путь выполняет проверки доступа и шаг загрузки за вас.
Карта папок импорта
| Плагин | Папка импорта |
|---|---|
| EliteMobs | plugins/EliteMobs/imports |
| BetterStructures | plugins/BetterStructures/imports |
| FreeMinecraftModels | plugins/FreeMinecraftModels/imports |
| EternalTD | plugins/EternalTD/imports |
| ResurrectionChest | plugins/ResurrectionChest/imports |
| WorldCannon | plugins/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 |
scripts | plugins/FreeMinecraftModels/scripts |
freeminecraftmodels, elitemobs, betterstructures | Папка данных соответствующего плагина (plugins/FreeMinecraftModels, plugins/EliteMobs или plugins/BetterStructures). Устройте папку так же, как папку данных, например freeminecraftmodels/enchantments/ |
pack.meta | Игнорируется — это метаданные, а не контент |
Модели из freeminecraftmodels/models/ попадают в ту папку моделей, которую читает FreeMinecraftModels, включая папку Models более старой установки.
Все остальные папки верхнего уровня импортёр разрешает для платформы, на которую рассчитан пакет. Каждая папка попадает в одноимённую папку в папке данных плагина, если в таблице не указано иное:
| Платформа | Папки для этого плагина | Папки для другого плагина |
|---|---|---|
elitemobs | custombosses, customitems, customtreasurechests, content_packages (туда же попадает dungeonpackages), customevents, customspawns, customquests, customarenas, npcs, npc_scripts, behaviors, transport_routes, transport_networks, wormholes, powers, world_blueprints, resource_pack, enchantments | Нет |
betterstructures | content_packages, schematics, spawn_pools, components, modules, module_generators, treasures, generators | EliteMobs: custombosses, customitems, customtreasurechests, powers, enchantments |
freeminecraftmodels | content_packages, recipes, enchantments | EliteMobs: customitems; пропускается, если EliteMobs не включён |
eternaltd | npcs, levels, waves, worlds, content_packages, content_markers | Нет |
resurrectionchest | content_packages | Нет |
worldcannon | content_packages, cannons (туда же попадает fun_rtps), а также cannonrtp, worldcannon или world_cannon для самой папки данных (plugins/CannonRTP) | Нет |
extractioncraft | content_packages, loot_pools, loot_tables | EliteMobs: customquests, npcs, custombosses, customitems, customtreasurechests, powers, enchantments, npc_scripts, behaviors. BetterStructures: schematics, spawn_pools, components, modules, module_generators, treasures, generators |
megablocksurvivors | content_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-файлами
- может потребовать перезагрузки плагина
- может оставить контент в состоянии «загружен, но не включён» в зависимости от плагина
- может выявить проблемы со структурой пакета, которые внутриигровой путь доступа обычно скрывает до момента установки