Заметки по созданию моделей для FreeMinecraftModels
Эта страница описывает текущие детали authoring, которые видны в кодовой базе FreeMinecraftModels. Она намеренно консервативна: здесь рассматривается контракт импорта и runtime, а не все возможные предпочтения рабочего процесса в Blockbench.
Исходные форматы
Сейчас FreeMinecraftModels принимает:
- файлы
.bbmodelдля редактируемых исходных импортов - файлы
.fmmodelдля упрощенных данных модели, готовых к runtime
Обычный поток импорта выглядит так:
- поместить модель в
plugins/FreeMinecraftModels/imports - выполнить
/fmm reload - дать FreeMinecraftModels импортировать модель в активный набор моделей и пересобрать сгенерированный ресурс-пак
Роли папок
plugins/FreeMinecraftModels/imports
plugins/FreeMinecraftModels/models
plugins/FreeMinecraftModels/models_disabled
importsэто входная папка для ручных импортов моделей и загрузок официальных пакетов до обработкиmodelsсодержит активный установленный контент моделейmodels_disabledсодержит загруженный или установленный контент пакетов, который сейчас отключен
ID моделей
- Runtime ID модели берется из имени файла без расширения
.bbmodelили.fmmodel - Используйте стабильные и уникальные имена файлов, потому что именно этот ID разрешают команды и вызовы API
- Ссылки на анимации в Blockbench зависят от имени, поэтому дублирующиеся или неясные названия внутри модели с большей вероятностью вызовут проблемы, чем чистое и явное именование
Совместимость с Blockbench
- FreeMinecraftModels определяет версию файла Blockbench во время импорта
- Текущий импортёр все еще содержит ветки совместимости для версий старше Blockbench v5
- Если в логах импорта говорится, что формат модели не совместим с FreeMinecraftModels, сначала считайте это проблемой формата модели, а не проблемой wiki или команды
Соглашения по именам bones, значимые для runtime
Текущий pipeline конвертации и skeleton распознает несколько соглашений по именам:
hitbox- зарезервирован для генерации hitbox
- должен четко задавать hitbox модели, а не использоваться как визуальный bone
tag_...- рассматривается как виртуальный bone, связанный с nametag
h_...- рассматривается как bone головы
Это не просто стилевые соглашения; они влияют на конвертацию и поведение во время выполнения.
IK, null objects и locators
Текущий код подтверждает поддержку:
- Blockbench null objects в качестве IK-контроллеров
- blueprint-цепочек IK и runtime-решения IK
- разбора locator
Важное практическое ограничение:
- Поиск IK-контроллеров зависит от имени, поэтому имя контроллера должно оставаться стабильным между структурой модели и данными анимации
Разделение output в 1.21.4+
Для Minecraft 1.21.4+ FreeMinecraftModels генерирует файлы определения item model в:
plugins/FreeMinecraftModels/output/FreeMinecraftModels/assets/freeminecraftmodels/items
Для более старых версий по-прежнему используется старый путь item model. Если вы проверяете сгенерированный output во время authoring, убедитесь, что смотрите на правильную форму output для вашей версии сервера.
Заметки по Bedrock и render-path
- Поддержка Bedrock зависит от
sendCustomModelsToBedrockClientsи окружающего пути Floodgate/Geyser/resource-pack - Java-клиенты на поддерживаемых версиях могут использовать рендеринг через display entities, если включен
useDisplayEntitiesWhenPossible - Не предполагайте, что модель, которая выглядит правильно на Java-клиенте, автоматически безопасна для вашего пути Bedrock
Практические советы по authoring
- держите имена файлов стабильными, потому что они становятся runtime ID
- держите имена контроллеров и анимаций явными, потому что поиск анимаций в Blockbench зависит от имени
- осознанно используйте зарезервированные имена virtual bones
- проверяйте импортированный output после
/fmm reload, а не только внутри Blockbench - проверяйте содержимое сгенерированного пакета для вашей целевой линии Minecraft, особенно на
1.21.4+
Вне области этой страницы
Эта страница не пытается гарантировать:
- точные шаги интерфейса Blockbench
- художественные предпочтения рабочего процесса
- все старые особенности
.bbmodel, описанные в более старых локальных README
Эти детали меняются быстрее, чем проверенный выше runtime-контракт.