Poradniki / Budowanie i zasoby
Niestandardowe modele przedmiotów: wiele modeli dla jednego przedmiotu bez zastępowania czegokolwiek
System modeli przedmiotów zastąpił stary predykat CustomModelData. Oto układ folderów, JSON mapujący wartości na modele i wyjaśnienie, dlaczego twoja tekstura wyświetla się jako fioletowy sześcian.
Niestandardowe modele przedmiotów pozwalają serwerowi rozdawać „magiczną różdżkę", która w rzeczywistości jest marchewką na patyku z innym modelem. Mechanizm się zmienił, a większość poradników wciąż opisuje ten stary.
Co się zmieniło
Stary sposób — blok predicate wewnątrz pliku modelu przedmiotu bazowego, kluczowany po custom_model_data jako liczba:
{ "predicate": { "custom_model_data": 1 }, "model": "item/wand" }
Obecny sposób — definicja items/, która wybiera 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" } }
]
}
}
fallback to to, jak wciąż wygląda zwykła marchewka na patyku. Bez tego każda niezmodyfikowana sztuka w świecie renderuje się jako fioletowo-czarny sześcian brakującego modelu.
Układ folderów
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 w najprostszej postaci:
{ "parent": "minecraft:item/generated", "textures": { "layer0": "minecraft:item/wand" } }
Zwróć uwagę, że ścieżka tekstury nie ma przedrostka textures/ ani .png — to jest najczęstsza przyczyna fioletowo-czarnego sześcianu.
Wydawanie przedmiotu
/give @p carrot_on_a_stick[custom_model_data={floats:[1]}]
Komponent przyjmuje teraz obiekt z typowanymi listami, a nie samą liczbę całkowitą. custom_model_data=1 to stara składnia, a polecenie odrzuca ją teraz jako nieprawidłową.
Dlaczego wyświetla się jako fioletowy sześcian
W kolejności prawdopodobieństwa:
- Błędna ścieżka tekstury — zawiera
textures/lub.png, albo plik nie znajduje się tam, gdzie wskazuje ścieżka. - Wielkość liter w nazwie pliku — gra rozróżnia wielkość liter, nawet tam, gdzie twój system operacyjny tego nie robi.
- Nieaktualny
pack.mcmeta— 26.x wymagamin_formatimax_format; aktualny numer formatu w samympack_formatsprawia, że paczka wyświetla się jako niekompatybilna. - Błędne spakowanie —
pack.mcmetamusi znajdować się w katalogu głównym pliku zip, a nie w folderze wewnątrz zipa.
Inne selektory
range_dispatch po liczbie to tylko jedna z opcji. Możesz też rozdzielać na podstawie minecraft:display_context (inny model w ręce, a inny w ramce), minecraft:using_item lub minecraft:selected — tak właśnie łuk pokazuje stan naciągnięcia.
Zbuduj JSON rozdzielający, plik modelu i polecenie wydania razem w narzędziu Custom Model & Item Component Tools.