Пользовательские модели: много моделей для одного предмета без замены
Система моделей предметов заменила старый предикат CustomModelData. Здесь вы найдете структуру папок, JSON, который сопоставляет значения с моделями, и объяснение, почему ваша текстура отображается как фиолетовый куб.
Пользовательские модели предметов позволяют серверу выдавать «волшебную палочку», которая на самом деле является Удочкой с морковкой с другой моделью. Механизм изменился, и большинство руководств до сих пор описывают старый.
Что изменилось
Старый способ — блок predicate внутри файла модели базового предмета, с ключом custom_model_data в виде числа:
{ "predicate": { "custom_model_data": 1 }, "model": "item/wand" }
Текущий способ — определение items/, которое выбирает модель:
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" } }
]
}
}
fallback — это то, как выглядит обычная Удочка с морковкой. Без него каждая немодифицированная удочка в мире превратится в вашу палочку.
Структура папок
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 в простейшем виде:
{ "parent": "minecraft:item/generated", "textures": { "layer0": "minecraft:item/wand" } }
Обратите внимание, что путь к текстуре не содержит префикса textures/ и .png — это самая распространенная причина появления фиолетово-черного куба.
Выдача предмета
/give @p carrot_on_a_stick[custom_model_data={floats:[1]}]
Компонент теперь принимает объект с типизированными списками, а не просто целое число. custom_model_data=1 — это старый синтаксис, который молча ничего не делает.
Почему отображается фиолетовый куб
В порядке вероятности:
- Неправильный путь к текстуре — включает
textures/или.png, или файл находится не там, где указано в пути. - Регистр имени файла — игра чувствительна к регистру, даже если ваша ОС нет.
pack_formatслишком низкий — пакет загружается, но папкаitems/игнорируется. Сопоставьте формат с используемой вами версией.- Неправильно заархивировано —
pack.mcmetaдолжен находиться в корне ZIP-архива, а не внутри папки внутри ZIP-архива.
Другие селекторы
range_dispatch по номеру — это лишь один из вариантов. Вы также можете использовать minecraft:display_context (разная модель в руке и в рамке), minecraft:using_item или minecraft:selected — так Лук показывает натянутое состояние.
Создайте JSON-файл для диспетчеризации, файл модели и команду выдачи вместе в Инструментах для пользовательских моделей и компонентов предметов.