Niestandardowe dane modelu: wiele modeli dla jednego przedmiotu bez zastępowania
System modeli przedmiotów zastąpił stary predykat CustomModelData. Oto układ folderów, JSON, który mapuje wartości na modele, oraz 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 ten uległ zmianie, a większość poradników nadal opisuje stary sposób.
Co się zmieniło
Stary sposób — blok predicate w pliku modelu podstawowego przedmiotu, kluczowany przez 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 wygląd zwykłej Marchewki na patyku. Bez tego każda niezmieniona Marchewka na patyku na świecie zamieniłaby się w Twoją różdżkę.
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 formie:
{ "parent": "minecraft:item/generated", "textures": { "layer0": "minecraft:item/wand" } }
Zwróć uwagę, że ścieżka tekstury nie ma prefiksu textures/ ani .png — to najczęstsza przyczyna pojawienia się fioletowo-czarnego sześcianu.
Nadawanie przedmiotu
/give @p carrot_on_a_stick[custom_model_data={floats:[1]}]
Komponent przyjmuje teraz obiekt z listami typowanymi, a nie samą liczbę całkowitą. custom_model_data=1 to stara składnia, która po cichu nic nie robi.
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 jeśli Twój system operacyjny tego nie robi.
- Zbyt niskie
pack_format— pakiet się ładuje, ale folderitems/jest ignorowany. Dopasuj format do wersji, na której grasz. - Źle spakowane —
pack.mcmetamusi znajdować się w katalogu głównym pliku zip, a nie w folderze wewnątrz pliku zip.
Inne selektory
range_dispatch na liczbie to tylko jedna z opcji. Możesz również rozróżniać na podstawie minecraft:display_context (inny model w ręce niż w ramce), minecraft:using_item lub minecraft:selected — w ten sposób Łuk pokazuje stan naciągnięcia.
Zbuduj JSON do rozsyłania, plik modelu i komendę nadawania razem w Narzędziach do niestandardowych modeli i komponentów przedmiotów.