Пакеты контента FreeMinecraftModels
Официальный контент FMM теперь представлен в виде управляемых пакетов Nightbreak.
Текущие официальные пакеты
Текущая версия плагина определяет пять готовых официальных пакетов, смешивающих реквизит и предметы:
| Пак | Тип | Имя файла конфига | Имя папки | Slug Nightbreak |
|---|---|---|---|---|
Basic Furniture Pack | Реквизит | basic_furniture_pack | Basic Furniture Pack | basic-furniture-pack |
BetterStructures Prop Pack | Реквизит | betterstructures_prop_pack | bs prop pack | betterstructures-prop-pack |
EliteMobs Prop Pack | Реквизит | elitemobs_prop_pack | em_dungeon_prop_pack | elitemobs-prop-pack |
Craftenmine's Weapons Item Pack | Пользовательские предметы | craftenmines_weapons_item_pack | fmm_craftenmine_weapons_items_pack | craftenmines-weapons-item-pack |
Craftenmine Tools Item Pack | Пользовательские предметы | craftenmine_tools_item_pack | fmm_craftenmine_tools_items_pack | craftenmine-tools-item-pack |
Имя файла конфига — это .yml-файл в plugins/FreeMinecraftModels/content_packages/. Имя папки — это директория, в которой фактически живут модели пака внутри models/ или models_disabled/, и одновременно префикс файлов контента/скриптов по умолчанию.
У каждого пакета есть локальное имя папки, slug Nightbreak, поле версии и состояние включено/выключено в content_packages. Два пака Craftenmine содержат пользовательские предметы (модели с заданным material:), работающие с полным набором Lua-скриптов предметов.
Чем управляет меню настройки
/fmm setup сейчас является источником правды о состоянии пакетов. Меню умеет различать:
- установленные пакеты
- скачанные, но в данный момент отключённые пакеты
- устаревшие пакеты
- пакеты, требующие доступа Nightbreak
Меню настройки также инициирует фоновое обновление версий пакетов и проверок доступа, поэтому именно в меню удобнее всего проверять текущее состояние пакетов.
Поведение папок
Плагин использует перемещение папок для включения и отключения контента в зависимости от состояния пакета:
- включённые папки моделей лежат в
models/<folderName> - отключённые папки моделей лежат в
models_disabled/<folderName> - включённые файлы скриптов лежат в
scripts/ - отключённые файлы скриптов лежат в
scripts_disabled/
Это значит, что пакет может быть полностью скачан на диск, но при этом неактивен в списке моделей среды выполнения. Когда пакет устанавливается или удаляется, и его папка моделей, и подходящие файлы скриптов перемещаются вместе.
Префиксы файлов
В конфиге каждого пакета контента есть поле contentFilePrefixes и поле scriptFilePrefixes (оба по умолчанию равны folderName пакета). Файлы контента, чьи имена начинаются с любого из contentFilePrefixes, и файлы скриптов в папке scripts/, чьи имена начинаются с любого из scriptFilePrefixes, считаются частью пакета и перемещаются вместе с ним при установке/удалении.
Жизненный цикл скачивания и установки
Здесь два отдельных шага:
- Скачивание контента пакета.
Скачивания попадают в
plugins/FreeMinecraftModels/importsи затем запускают проход reload/import. - Сохранение пакета включённым или отключённым.
Меню настройки устанавливает и удаляет пакеты, перемещая их папки между
modelsиmodels_disabled.
Массовые операции работают по той же модели:
/fmm downloadallскачивает обновление jar плагина, а затем каждый доступный пакет, который отсутствует или устарел. Контент может быть применён последующей перезагрузкой FMM; сам jar плагина по-прежнему требует перезапуска сервера/fmm downloadallcontentделает тот же проход по контенту без обновления jar плагина/fmm updatecontent(псевдоним/fmm updateallcontent) обновляет только устаревшие пакеты
Все три массовых прохода по контенту автоматически перезагружают FreeMinecraftModels после успешных скачиваний, чтобы только что загруженный контент стал доступен. Перезагрузка срабатывает, только если хотя бы один пакет действительно скачался — запуск, которому нечего делать, сообщает No new content to download! и пропускает перезагрузку.
Массовые операции защищены от параллельных запусков: пока одна выполняется, вторая массовая команда отклоняется, а не запускается рядом. Они также требуют привязанного токена Nightbreak и досрочно прерываются при ошибке аутентификации.
Восстановление пакета
Обычные команды скачивания сравнивают номера версий, поэтому пакет, чьи файлы повреждены или частично удалены, всё равно выглядит «актуальным» и пропускается. Для этого случая существует /fmm forcereinstallcontent <package|all>: она заново скачивает выбранный контент независимо от версии, а затем перезагружает плагин.
- Автодополнение предлагает
allи слаг Nightbreak каждого пакета (basic-furniture-pack,betterstructures-prop-pack,elitemobs-prop-pack,craftenmines-weapons-item-pack,craftenmine-tools-item-pack). allохватывает только те пакеты, которые FMM видит как скачанные. Если файлы пака отсутствуют полностью, она сообщитNo downloaded content was detected. Specify a package slug directly if its files are completely missing.— укажите слаг вручную.- Неизвестный селектор выдаёт
Unknown Nightbreak content package: <name>. - На неё распространяется та же защита от параллельных запусков, что и на остальные массовые операции, и она требует
freeminecraftmodels.*.
Админский браузер контента
/fmm admin открывает внутриигровой GUI-инвентарь, который позволяет администраторам одним взглядом просматривать весь установленный контент. Браузер показывает:
- все установленные пакеты (с отдельным подсчётом реквизита и предметов)
- папки моделей, не входящие в пакеты (с отдельным подсчётом реквизита и предметов)
- отдельные реквизиты (модели без
material:в YML-конфиге) - пользовательские предметы (модели с заданным
material:в YML-конфиге)
Реквизит и предметы отображаются по-разному: реквизит использует жёлтый стиль и иконку бумаги, а пользовательские предметы — фиолетовый стиль и показывают заданный материал. Модель, у которой в YML задан material:, появится только как пользовательский предмет — никогда и как реквизит, и как предмет одновременно.
Клик по любой записи в админском браузере выдаёт игроку копию этого предмета. Для пользовательских предметов выданный предмет включает заданный материал, зачарования, lore и PDC-тег fmm_item_id. Это самый быстрый способ получить реквизит, пользовательские предметы или предметы моделей для тестирования и строительства, не зная точного ID модели или синтаксиса команды.