CustomModelData is the secret behind custom item weapons, hats, and UI textures on top Minecraft servers. It allows a single item (like a Feather or Stick) to render as hundreds of different 3D models based on an integer tag!
How CustomModelData Overrides Work
In your resource pack's assets/minecraft/models/item/feather.json, you define an overrides array:
{
"parent": "item/generated",
"textures": { "layer0": "item/feather" },
"overrides": [
{ "predicate": { "custom_model_data": 1001 }, "model": "custom/ruby_dagger" },
{ "predicate": { "custom_model_data": 1002 }, "model": "custom/magic_wand" }
]
}
Summoning the Custom Item In-Game
In Minecraft 26.x, give the item using the new custom_model_data component:
/give @p feather[custom_model_data=1001,item_name='"Ruby Dagger"']
Generate valid resource pack item JSON models with our Block & Item Model Generator!
Build a custom item model without replacing the base item
- Choose a vanilla item to act as the carrier.
- Create the model JSON and place its textures in a unique namespace.
- Add an item-model rule that selects your model from a component or custom data value supported by the target version.
- Give yourself the carrier item with the matching component value.
- Reload resources and test the item in inventory, hand, item frame and dropped-item views.
Version compatibility matters
The item model system and the shape of custom_model_data changed across recent Java releases. Keep separate pack branches when supporting older 1.21.x clients and current 26.x clients. Do not advertise one JSON file as universal unless it has been tested in every listed version.
A missing purple-and-black model usually means the selector matched but a model or texture path is wrong. If the vanilla item still appears, inspect the predicate or component value first.
