Skip to main content

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.mcmeta
  • pack.png
  • assets/minecraft/atlases/blocks.json
  • assets/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):

ConditionModel 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:

ConditionModel 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/FreeMinecraftModels folder
  • regenerates output/FreeMinecraftModels.zip
  • dispatches resourcepackmanager reload if ResourcePackManager is installed

This is why modern FMM + ResourcePackManager setups no longer need the old manual zip-copy workflow.