MC Toolkit

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:

  1. Błędna ścieżka tekstury — zawiera textures/ lub .png, albo plik nie znajduje się tam, gdzie wskazuje ścieżka.
  2. Wielkość liter w nazwie pliku — gra rozróżnia wielkość liter, nawet tam, gdzie twój system operacyjny tego nie robi.
  3. Nieaktualny pack.mcmeta — 26.x wymaga min_format i max_format; aktualny numer formatu w samym pack_format sprawia, że paczka wyświetla się jako niekompatybilna.
  4. Błędne spakowanie — pack.mcmeta musi 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.

Narzędzia modelu i komponentów przedmiotu →

Więcej poradników

Zobacz wszystkie →