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

Вывод ресурспака FreeMinecraftModels

FreeMinecraftModels в настоящее время записывает сгенерированный пак в output, а не в outputs.

Стандартные пути вывода

Плагин пересоздаёт эту папку при запуске и по команде /fmm reload:

plugins/FreeMinecraftModels/output/FreeMinecraftModels

Затем он архивирует эту папку в:

plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip

Этот путь к zip-файлу — тот, который ResourcePackManager ожидает при интеграции с FreeMinecraftModels.

Что генерируется

Сгенерированная папка всегда включает:

  • pack.mcmeta
  • pack.png
  • assets/minecraft/atlases/blocks.json
  • assets/freeminecraftmodels/... вывод моделей и текстур

Для Minecraft 1.21.4+ FreeMinecraftModels генерирует файлы определений моделей предметов в:

assets/freeminecraftmodels/items

Для более старых серверов используется устаревший путь переопределения модели кожаной конской брони.

Вывод отображаемых моделей (1.21.4+)

Когда у модели есть сопутствующий файл .json отображаемой модели (см. Заметки по созданию моделей), FMM копирует этот JSON (с переписанными ссылками на текстуры для соответствия извлечённым текстурам) в:

assets/freeminecraftmodels/models/display/{modelId}.json

Также генерируется соответствующее определение предмета по пути:

assets/freeminecraftmodels/items/display/{modelId}.json

DisplayModelRegistry отслеживает во время выполнения, какие модели имеют отображаемые JSON, чтобы ItemMeta.setItemModel() можно было вызывать на ItemStack для придания правильного внешнего вида при удержании в руке и в инвентаре.

Условный вывод предметов для лука и арбалета

Когда FMM обнаруживает набор моделей состояний лука или арбалета (см. Заметки по созданию моделей), он генерирует единый JSON определения предмета для модели _idle, который условно переключается между всеми состояниями на уровне ресурспака. Серверная работа с пакетами не требуется — клиент обрабатывает переходы состояний нативно.

Вывод для лука

Для луков сгенерированное определение предмета использует minecraft:condition по using_item с minecraft:range_dispatch по use_duration (масштаб 0.05):

УсловиеИспользуемая модель
Предмет не используется_idle
Используется, откат (только начало)_draw_start
Используется, порог 0.65_draw_half
Используется, порог 0.9_draw_full

Вывод для арбалета

Для арбалетов сгенерированное определение предмета использует minecraft:select по charge_type. При зарядке (стрела или ракета) отображается модель _charged. Откат без зарядки использует minecraft:range_dispatch по crossbow/pull:

УсловиеИспользуемая модель
Не используется, не заряжен_idle
Используется, откат (только начало)_draw_start
Используется, порог 0.58_draw_half
Используется, порог 1.0_draw_full
Заряжен (стрела или ракета)_charged

Расположение вывода

Сгенерированное условное определение предмета записывается рядом с другими определениями предметов по пути:

assets/freeminecraftmodels/items/display/{baseModelId}_idle.json

Только модель _idle получает файл определения предмета. Модели натяжения и зарядки указываются внутри него как условные записи.

Поведение при перезагрузке

При перезагрузке FreeMinecraftModels:

  • повторно выполняет этап импорта контента
  • пересобирает папку output/FreeMinecraftModels
  • пересоздаёт output/FreeMinecraftModels.zip
  • отправляет resourcepackmanager reload, если установлен ResourcePackManager

Именно поэтому современные связки FMM + ResourcePackManager больше не нуждаются в старом ручном процессе копирования zip-файла.