Custom model data: één item meerdere modellen geven zonder iets te vervangen
Het item-model-systeem verving het oude CustomModelData-predicaat. Hier is de mapstructuur, de JSON die waarden aan modellen koppelt en waarom je textuur als een paarse kubus verschijnt.
Aangepaste itemmodellen laten een server een "toverstaf" uitdelen die eigenlijk een wortel aan een stok met een ander model is. Het mechanisme is veranderd en de meeste handleidingen beschrijven nog steeds het oude.
Wat er is veranderd
Oude manier — a predicate block inside the base item's model file, keyed on custom_model_data as a number:
{ "predicate": { "custom_model_data": 1 }, "model": "item/wand" }
Huidige manier — een items/ definition that selects a model:
assets/minecraft/items/carrot_on_a_stick.json
{
"model": {
"type": "minecraft:range_dispatch",
"property": "minecraft:custom_model_data",
"fallback": { "type": "minecraft:model", "model": "minecraft:item/carrot_on_a_stick" },
"entries": [
{ "threshold": 1, "model": { "type": "minecraft:model", "model": "minecraft:item/wand" } }
]
}
}
De fallback is what a plain carrot on a stick still looks like. Without it, every unmodified one in the world turns into your wand.
De mapstructuur
pack.mcmeta
assets/minecraft/
├── items/carrot_on_a_stick.json the dispatch
├── models/item/wand.json the model
└── textures/item/wand.png the texture
models/item/wand.json at its simplest:
{ "parent": "minecraft:item/generated", "textures": { "layer0": "minecraft:item/wand" } }
Merk op dat het textuurpad geen textures/ prefix and no .png — dat is de meest voorkomende oorzaak van een paars-zwarte kubus.
Het item geven
/give @p carrot_on_a_stick[custom_model_data={floats:[1]}]
Het component gebruikt nu een object met getypeerde lijsten, geen losse integer. custom_model_data=1 is the old syntax and silently does nothing.
Waarom het als een paarse kubus verschijnt
Op volgorde van waarschijnlijkheid:
- Textuurpad verkeerd — bevat
textures/or.png, or the file is not where the
pad aangeeft.
- Hoofdlettergebruik bestandsnaam — het spel is hoofdlettergevoelig, zelfs als je besturingssysteem dat niet is.
pack_formattoo low — het pack laadt, maar deitems/folder is ignored. Match
het formaat aan naar de versie waarop je zit.
- Verkeerd ingepakt —
pack.mcmetamust be at the root van de zip, niet binnen een
map binnen de zip.
Andere selectors
range_dispatch on a number is only one option. You can also dispatch on minecraft:display_context (different model in hand versus in a frame), minecraft:using_item, or minecraft:selected — which is how a bow shows a drawn state.
Bouw de dispatch-JSON, het modelbestand en het give-commando samen in de Custom Model & Item Component Tools.