FreeMinecraftModels Model Authoring Notes
This page documents the current authoring details that are visible in the FreeMinecraftModels codebase. It is intentionally conservative: it focuses on the import/runtime contract, not on every Blockbench workflow preference.
Source Formats
FreeMinecraftModels currently accepts:
.bbmodelfiles for editable source imports.fmmodelfiles for stripped runtime-ready model data
The normal import flow is:
- place the model in
plugins/FreeMinecraftModels/imports - run
/fmm reload - let FreeMinecraftModels import the model into the active model set and rebuild the generated resource pack
Folder Roles
plugins/FreeMinecraftModels/imports
plugins/FreeMinecraftModels/models
plugins/FreeMinecraftModels/models_disabled
importsis the intake folder for manual model imports and official package downloads before processingmodelscontains active installed model contentmodels_disabledcontains downloaded or installed package content that is currently disabled
Model IDs
- Runtime model IDs come from the file name, without the
.bbmodelor.fmmodelextension - Use stable, unique file names because the ID is what commands and API calls resolve against
- Blockbench animation references are name-based, so duplicate or unclear naming inside the model is more likely to cause trouble than a clean, explicit naming scheme
Blockbench Compatibility
- FreeMinecraftModels detects the Blockbench file version during import
- The current importer still contains compatibility branches for versions older than Blockbench v5
- If import logs say the model format is not compatible with FreeMinecraftModels, treat that as a model-format issue first, not a wiki or command issue
Runtime-Significant Bone Conventions
The current converter and skeleton pipeline recognize a few naming conventions:
hitbox- reserved for hitbox generation
- should define the model hitbox cleanly instead of being used as a visual bone
tag_...- treated as nametag-related virtual bones
h_...- treated as head bones
These are not just style conventions; they affect conversion and runtime behavior.
IK, Null Objects, And Locators
Current code confirms support for:
- Blockbench null objects as IK controllers
- IK chain blueprints and runtime IK solving
- locator parsing
Important practical constraint:
- IK controller lookup is name-based, so controller naming needs to stay stable between the model structure and animation data
1.21.4+ Output Split
For Minecraft 1.21.4+, FreeMinecraftModels generates item-model definition files under:
plugins/FreeMinecraftModels/output/FreeMinecraftModels/assets/freeminecraftmodels/items
Older versions still use the legacy item-model pathing. If you are checking generated output while authoring, make sure you are looking at the right output shape for your server version.
Bedrock And Render-Path Notes
- Bedrock support depends on
sendCustomModelsToBedrockClientsand the surrounding Floodgate/Geyser/resource-pack path - Java clients on supported versions can use display-entity rendering when
useDisplayEntitiesWhenPossibleis enabled - Do not assume a model that looks correct on a Java client is automatically safe for your Bedrock path
Practical Authoring Advice
- keep file names stable because they become runtime IDs
- keep controller and animation naming explicit because Blockbench animation lookup is name-driven
- use the reserved virtual-bone names intentionally
- validate imported output after
/fmm reload, not just inside Blockbench - verify the generated pack contents for your target Minecraft line, especially on
1.21.4+
Out Of Scope
This page does not try to guarantee:
- exact Blockbench UI steps
- artistic workflow preferences
- every legacy
.bbmodelquirk described in older local README material
Those details change faster than the verified runtime contract above.