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

Вывод ресурс-пака 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 генерирует файлы определения item-модели в:

assets/freeminecraftmodels/items

Для более старых серверов используется устаревший путь с моделью-перекрытием для leather-horse-armor.

Вывод display-модели (1.21.4+)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Совместимость с Minecraft 26.1+

Генератор пака применяет два автоматических исправления совместимости для Minecraft 26.1 и новее:

  • Clamping UV: в сгенерированных моделях предметов UV-координаты ограничиваются диапазоном 016, чтобы избежать артефактов протекания текстур, появившихся из-за более строгого валидатора 26.1.
  • Пустые блок-модели костей: кости, не имеющие кубов (или содержащие только потомков anchor_), раньше порождали некорректный JSON блок-модели на 26.1+. Теперь генератор выдаёт валидный плейсхолдер, чтобы ресурс-пак всё равно загружался.

Эти исправления применяются автоматически, конфигурации не требуется.

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

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

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

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