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

Заметки по созданию моделей для FreeMinecraftModels

Эта страница описывает текущие детали authoring, которые видны в кодовой базе FreeMinecraftModels. Она намеренно консервативна: здесь рассматривается контракт импорта и runtime, а не все возможные предпочтения рабочего процесса в Blockbench.

Исходные форматы

Сейчас FreeMinecraftModels принимает:

  • файлы .bbmodel для редактируемых исходных импортов
  • файлы .fmmodel для упрощенных данных модели, готовых к runtime

Обычный поток импорта выглядит так:

  1. поместить модель в plugins/FreeMinecraftModels/imports
  2. выполнить /fmm reload
  3. дать 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-контракт.