FreeMinecraftModels Resource Pack Output
FreeMinecraftModels currently writes its generated pack into output, not outputs.
Default Output Paths
The plugin rebuilds this folder during startup and on /fmm reload:
plugins/FreeMinecraftModels/output/FreeMinecraftModels
It then zips that folder into:
plugins/FreeMinecraftModels/output/FreeMinecraftModels.zip
That zip path is the one ResourcePackManager expects when it integrates with FreeMinecraftModels.
What Gets Generated
The generated folder always includes:
pack.mcmetapack.pngassets/minecraft/atlases/blocks.jsonassets/freeminecraftmodels/...model and texture output
For Minecraft 1.21.4+, FreeMinecraftModels generates item-model definition files under:
assets/freeminecraftmodels/items
For older servers, it falls back to the legacy leather-horse-armor override model path.
Display Model Output (1.21.4+)
When a model has a sibling .json display model file (see Model Authoring Notes), FMM copies that JSON (with texture references rewritten to match the extracted textures) into:
assets/freeminecraftmodels/models/display/{modelId}.json
It also generates a corresponding item definition at:
assets/freeminecraftmodels/items/display/{modelId}.json
The DisplayModelRegistry tracks which models have display JSONs at runtime so that ItemMeta.setItemModel() can be called on ItemStacks to give them the correct in-hand and inventory appearance.
Bow And Crossbow Conditional Item Output
When FMM detects a set of bow or crossbow state models (see Model Authoring Notes), it generates a single item definition JSON for the _idle model that conditionally switches between all states at the resource-pack level. No server-side packet work is needed -- the client handles state transitions natively.
Bow Output
For bows, the generated item definition uses minecraft:condition on using_item with a minecraft:range_dispatch on use_duration (scale 0.05):
| Condition | Model used |
|---|---|
| Not using the item | _idle |
| Using, fallback (just started) | _draw_start |
Using, threshold 0.65 | _draw_half |
Using, threshold 0.9 | _draw_full |
Crossbow Output
For crossbows, the generated item definition uses minecraft:select on charge_type. When charged (arrow or rocket), it shows the _charged model. The uncharged fallback uses minecraft:range_dispatch on crossbow/pull:
| Condition | Model used |
|---|---|
| Not using, not charged | _idle |
| Using, fallback (just started) | _draw_start |
Using, threshold 0.58 | _draw_half |
Using, threshold 1.0 | _draw_full |
| Charged (arrow or rocket) | _charged |
Output Location
The generated conditional item definition is written alongside other item definitions at:
assets/freeminecraftmodels/items/display/{baseModelId}_idle.json
Only the _idle model gets an item definition file. The draw and charged models are referenced inside it as conditional entries.
Reload Behavior
When FreeMinecraftModels reloads, it:
- re-runs the content import step
- rebuilds the
output/FreeMinecraftModelsfolder - regenerates
output/FreeMinecraftModels.zip - dispatches
resourcepackmanager reloadif ResourcePackManager is installed
This is why modern FMM + ResourcePackManager setups no longer need the old manual zip-copy workflow.