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