Вывод ресурс-пака FreeMinecraftModels
FreeMinecraftModels сейчас пишет сгенерированный пак в папку output, а не outputs.
Пути вывода по умолчанию
Плагин пересобирает эту папку при старте и при /fmm reload:
plugins/FreeMinecraftModels/output/FreeMinecraftModels
После этого он упаковывает её в:
plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip
Именно этот путь к zip ожидает ResourcePackManager при интеграции с FreeMinecraftModels.
Что генерируется
Сгенерированная папка всегда содержит:
pack.mcmetapack.pngassets/minecraft/atlases/blocks.jsonassets/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-координаты ограничиваются диапазоном
0–16, чтобы избежать артефактов протекания текстур, появившихся из-за более строгого валидатора 26.1. - Пустые блок-модели костей: кости, не имеющие кубов (или содержащие только потомков
anchor_), раньше порождали некорректный JSON блок-модели на 26.1+. Теперь генератор выдаёт валидный плейсхолдер, чтобы ресурс-пак всё равно загружался.
Эти исправления применяются автоматически, конфигурации не требуется.
Поведение при перезагрузке
При перезагрузке FreeMinecraftModels:
- повторно прогоняет шаг импорта контента
- пересобирает папку
output/FreeMinecraftModels - пересоздаёт
output/FreeMinecraftModels.zip - вызывает
resourcepackmanager reload, если установлен ResourcePackManager
Именно поэтому современные связки FMM + ResourcePackManager больше не требуют ручного копирования zip.