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

Пакеты контента FreeMinecraftModels

Официальный контент FMM теперь представлен в виде управляемых пакетов Nightbreak.

Текущие официальные пакеты

Текущая версия плагина определяет пять готовых официальных пакетов, смешивающих реквизит и предметы:

ПакТипИмя файла конфигаИмя папкиSlug Nightbreak
Basic Furniture PackРеквизитbasic_furniture_packBasic Furniture Packbasic-furniture-pack
BetterStructures Prop PackРеквизитbetterstructures_prop_packbs prop packbetterstructures-prop-pack
EliteMobs Prop PackРеквизитelitemobs_prop_packem_dungeon_prop_packelitemobs-prop-pack
Craftenmine's Weapons Item PackПользовательские предметыcraftenmines_weapons_item_packfmm_craftenmine_weapons_items_packcraftenmines-weapons-item-pack
Craftenmine Tools Item PackПользовательские предметыcraftenmine_tools_item_packfmm_craftenmine_tools_items_packcraftenmine-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, считаются частью пакета и перемещаются вместе с ним при установке/удалении.

Жизненный цикл скачивания и установки

Здесь два отдельных шага:

  1. Скачивание контента пакета. Скачивания попадают в plugins/FreeMinecraftModels/imports и затем запускают проход reload/import.
  2. Сохранение пакета включённым или отключённым. Меню настройки устанавливает и удаляет пакеты, перемещая их папки между 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 модели или синтаксиса команды.