Minecraft Wiki Polska
Advertisement

Wszystkie pliki modeli i wariantów są rozszerzenia .json. Modele bloków są wykorzystywane w celu przedstawienia wszystkich bloków w grze, podczas gdy modele przedmiotów są używane do wyświetlania elementów w ręce gracza, na głowie (hełmy i czapki), na ziemi i w ekwipunku. Dlatego nawet ikony używane w ekwipunku są określone w tych plikach.

Warianty

Istnieje kilka różnych wariantów niektórych bloków, więc każdy blok posiada własny plik wariantu, który zawiera wszystkie swoje warianty i łączy je do odpowiedniego modelu. Pliki te są przechowywane w folderze assets/minecraft/blockstates. Nie należy zmieniać nazwy tych plików lub samych wariantów. Są one zakodowane w grze i również muszą być używane w paczkach zasobów.

  • Nbtsheet Tag korzenia
    • Nbtsheet variants: Mieści nazwy wszystkich wariantów bloku.
      • Nbtsheet A variant: Nazwa wariantu, która składa się z odpowiednich BlockStates oddzielonych przecinkami. Blok z tylko jednym wariantem używa normal jako nazwy dla swojego wariantu. Każdy wariant zawiera właściwości swojego modelu. Jeśli stosuje się więcej niż jeden model, modele te muszą być określone w oddzielnych Nbtsheet-tagach, które są potrzebne dla znacznika wariantu.
        • Nbtsheet A model: Zawiera właściwości modelu, jeśli więcej niż jeden jest wykorzystywany dla tego samego wariantu. Wszystkie określone modele występują naprzemiennie w grze.
          • Nbtsheet model: Określa ścieżkę do pliku modelu bloku, począwszy od assets/minecraft/models/blocks.
          • Nbtsheet x: Obrót modelu na osi x, w odstępach co 90°.
          • Nbtsheet y: Obrót modelu na osi y, w odstępach co 90°.
          • Nbtsheet uvlock: Obraca teksturę z blokiem, jeśli jest false (domyślnie).
          • Nbtsheet weight: Prawdopodobieństwo użycia modelu w grze. Domyślną wartością jest 1 (=100%).
        • Nbtsheet model: Określa ścieżkę do pliku modelu bloku, począwszy od assets/minecraft/models/blocks.
        • Nbtsheet x: Obrót modelu na osi x, w odstępach co 90°.
        • Nbtsheet y: Obrót modelu na osi y, w odstępach co 90.°
        • Nbtsheet uvlock: Obraca teksturę z blokiem, jeśli jest false (domyślnie).

Przykład: Pochodnia

Pochodnia posiada kilka wariantów: Może być umieszczona na ziemi lub na ścianie i być skierowana w cztery różne strony. Ten przykład pochodzi z pliku torch.json, który można znaleźć w assets/minecraft/blockstates.

File: torch.json

{
    "variants": {
        "facing=up": { "model": "normal_torch" },
        "facing=east": { "model": "normal_torch_wall" },
        "facing=south": { "model": "normal_torch_wall", "y": 90 },
        "facing=west": { "model": "normal_torch_wall", "y": 180 },
        "facing=north": { "model": "normal_torch_wall", "y": 270 }
    }
}

"facing=up" jest wariantem pochodni stojącym na ziemi i łączy się z modelem "normal_torch". Pochodnia może być też postawiona na wszystkich czterech ścianach bloku, więc potrzebuje czterech różnych wariantów, jeden dla każdej strony. Nazywają się one "facing=east", "facing=west", "facing=south" i "facing=north". Wszystkie 4 warianty używają "normal_torch_wall" jako ich modelu, który jest obracany o wielokrotność 90°, aby dostosować się do różnych stron bloku, na którym stoją.

Przykład: Blok trawy

Blok trawy posiada 2 warianty, przy czym jeden z nich przechowuje 4 modele. Ten przykład pochodzi z pliku grass.json, który znajduje się w assets/minecraft/blockstates.

File: grass.json

{
    "variants": {
        "snowy=false": [
            { "model": "grass_normal" },
            { "model": "grass_normal", "y": 90 },
            { "model": "grass_normal", "y": 180 },
            { "model": "grass_normal", "y": 270 }
        ],
        "snowy=true":  { "model": "grass_snowed" }
    }
}

Nieośnieżony blok trawy (snowy=false) przechowuje 4 modele, które korzystają z tego samego modelu bloku, lecz każdy z nich jest obrócony o wielokrotność 90°. Mimo iż istnieją 4 modele, count-tag nie jest używany przez żaden z nich, więc każdy ma szansę 25%, aby zostać wykorzystanym podczas postawienia bloku.

Modele bloków

Folder assets/minecraft/models/block posiada pliki modeli dla wszystkich wymienionych wariantów. Nazwy plików mogą być zmienione, ale zawsze muszą odpowiadać nazwom używanym w plikach wariantów.

  • Nbtsheet Tag korzenia
    • Nbtsheet parent: Ładuje inny model z danej ścieżki, począwszy od assets/minecraft/models.
    • Nbtsheet ambientocclusion: Czy użyć okluzji otoczenia (true - domyślne), czy nie (false).
    • Nbtsheet textures: Przechowuje tekstury modelu. Każda tekstura zaczyna się w assets/minecraft/textures lub może być inną zmienną tekstury.
      • Nbtsheet particle: Z jakiej tektury ładować cząsteczki?
      • Nbtsheet A texture variable: Definiuje zmienną teksury i zatwierdza ją.
    • Nbtsheet elements: Zawiera wszystkie elementy modelu. Mogą mieć formę wyłącznie sześcienną.
      • Nbtsheet An element
        • Nbtsheet from: Punkt początkowy sześcianu wg schematu [x, y, z]. Wartości muszą być pomiędzy -16 a 32.
        • Nbtsheet to: Punkt końcowy sześcianu wg schematu [x, y, z]. Wartości muszą być pomiędzy -16 a 32.
        • Nbtsheet rotation: Określa obrót elementu.
          • Nbtsheet origin: Ustawia środek obrotu wg schematu [x, y, z] (domyślnie [8, 8, 8]).
          • Nbtsheet axis: Określa kierunek obrotu, może być "x", "y" lub "z".
          • Nbtsheet angle: Określa kąt obrotu. Może być od 45° do -45° w wielokrotnościach po 22.5° (domyślnie 0°).
          • Nbtsheet rescale: Określa, czy skalować boki w całym bloku. Może być true lub false (domyślnie false).
        • Nbtsheet shade: Określa, czy cienie są renderowane (true - default), czy nie (false).
        • Nbtsheet faces: Przechowuje wszystkie boki sześcianu. Jeśli bok jest pominięty, to nie zostanie wyrenderowany.
          • Nbtsheet down, up, north, south, west or east: Zawiera właściwości określonych boków.
            • Nbtsheet uv: Określa powierzchnię tekstury do użycia wg schematu [x1, y1, x2, y2].
            • Nbtsheet texture: Określa teksturę w formie zmiennej tekstury poprzedzanej przez #.
            • Nbtsheet cullface: Określa, czy bok nie musi być renderowany, gdy jakiś blok dotyka go w wyznaczonej pozycji. Pozycje mogą być: down, up, north, south, west, albo east.
            • Nbtsheet rotation: Obraca teksturę w wielokrotnościach po 90°.
            • Nbtsheet tintindex: Określa, czy odcieniować teksturę za pomocą zakodowanego indeksu odcieni. Domyślnie nie używa odcienia, a każdy numer powoduje jego użycie. Pamiętaj, że tylko niektóre bloki mają indeks odcieni, wszystkie inne zostaną nietknięte.

Przykład: Stojąca pochodnia

Dla ułatwienia ten przykład pokazuje tylko stojącą pochodnię, która jest opisana w plikach torch.json i normal_torch.json przechowywanych w folderze assets/minecraft/models/block.

File: torch.json

{
    "ambientocclusion": false,
    "textures": {
        "particle": "#torch"
    },
    "elements": [
        {   "from": [ 7, 0, 7 ],
            "to": [ 9, 10, 9 ],
            "shade": false,
            "faces": {
                "down": { "uv": [ 7, 13, 9, 15 ], "texture": "#torch" },
                "up":   { "uv": [ 7,  6, 9,  8 ], "texture": "#torch" }
            }
        },
        {   "from": [ 7, 0, 0 ],
            "to": [ 9, 16, 16 ],
            "shade": false,
            "faces": {
                "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },
                "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }
            }
        },
        {   "from": [ 0, 0, 7 ],
            "to": [ 16, 16, 9 ],
            "shade": false,
            "faces": {
                "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }
            }
        }
    ]
}

Ten plik jest używany do tworzenia modelu pochodni, który używany jest przez zwykłą i czerwoną pochodnię. Dlatego elements-tag jest używany do tworzenia trzech elementów lub sześcianów. Tylko 2 boki każdego sześcianu są renderowane, bo tylko 2 z nich zostały określone. "uv" jest stosowany do określenia obszaru, gdzie tekstura ma być używana. Zmienna tekstury "#torch" jest używana dla cząsteczek i sześcianów. Nie została jeszcze zdefiniowana.

File: normal_torch.json

{
    "parent": "block/torch",
    "textures": {
        "torch": "blocks/torch_on"
    }
}

Ten plik reprezentuje model normalnej stojącej pochodni. Ładuje on model poprzednio opisanej stojącej pochodni z pomocą "parent" i dziedziczy wszystkie właściwości pliku torch.json. Ponieważ ten plik jest używany tylko dla zwykłej pochodni, tekstura może być teraz określona. Tekstura "torch_on" jest teraz przypisana do zmiennej tekstury "torch" (bez #), zatem będzie używana dla poprzednio załadowanego modelu i jego cząsteczek, jak określono w drugim pliku.

Przykład: Każdy blok

Ten przykład opisuje fundamentalną strukturę większości normalnych bloków w Minecrafcie. Te bloki używają tego samego podstawowego modelu i stosują do niego tylko swoją teksturę, jak już opisano w przykładzie powyżej. Ten model znajduje się w pliku cube.json, który jest w folderze assets/minecraft/models/block.

File: cube.json

{
    "elements": [
        {   "from": [ 0, 0, 0 ],
            "to": [ 16, 16, 16 ],
            "faces": {
                "down":  { "texture": "#down", "cullface": "down" },
                "up":    { "texture": "#up", "cullface": "up" },
                "north": { "texture": "#north", "cullface": "north" },
                "south": { "texture": "#south", "cullface": "south" },
                "west":  { "texture": "#west", "cullface": "west" },
                "east":  { "texture": "#east", "cullface": "east" }
            }
        }
    ]
}

Cechy opisane powyżej nie zostaną ponownie wspomniane. Użycie "cullface": "down" zabezpiecza dolny bok bloku przed wyrenderowaniem, jeśli jakiś inny blok jest pod nim. To samo dzieje się z resztą boków.

Przykład: Sadzonka

Ten przykład opisuje fundamentalną strukturę używaną przez wszystkie sadzonki bez przypisywania konkretnej tekstury. Ten model jest opisany w pliku cross.json, tekstura mogłaby np. zostać przypisana do oak_sapling.json. Oba pliki są przechowywane w folderze assets/minecraft/models/block.

File: cross.json

{
    "ambientocclusion": false,
    "textures": {
        "particle": "#cross"
    },
    "elements": [
        {   "from": [ 0.8, 0, 8 ],
            "to": [ 15.2, 16, 8 ],
            "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
            "shade": false,
            "faces": {
                "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }
            }
        },
        {   "from": [ 8, 0, 0.8 ],
            "to": [ 8, 16, 15.2 ],
            "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
            "shade": false,
            "faces": {
                "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" },
                "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }
            }
        }
    ]
}

Aby stworzyć zwykłego kształtu sadzonkę, oba elementy muszą być obrócone o 45°. Dlatego pochodzenie i oś obrotu są ustawione do określonych wartości, kąt jest ustawiony na 45° i "rescale" jest ustawiony na true. Ten ostatni powoduje, że model jest skalowany na osiach, które nie zostały obrócone tak, że zajmują to samo miejsce jak przed obrotem (zdjęcia poniżej).

"rescale": true "rescale": false
BlockModels rescale true BlockModels rescale false

Modele przedmiotów

Ponieważ przedmioty nie mają różnych wariantów, nie potrzeba ich opisywać. Folder assets/minecraft/models/item zawiera wszystkie pliki modeli. Nazwy plików są zakodowane i nie powinny być zmieniane.

  • Tag korzenia
    • Nbtsheet parent: Ładuje inny model z danej ścieżci, począwszy od assets/minecraft/models.
      • Może być ustawione na "builtin/generated", aby używać modelu stworzonego z określonej ikony.
      • Może być ustawione na "builtin/entity", aby załadoać model z plików bytów. Ponieważ nie można określić bytu, to nie zadziała dla wszystkich przedmiotów (tylko dla skrzyń, skrzyń Kresu, głów i sztandarów).
      • Musi być ustawione na "builtin/compass" lub "builtin/clock" dla kompasu lub zegara.
    • Nbtsheet textures: Posiada tekstury modelu. Każda tekstura zaczyna się w assets/minecraft/textures lub może być inną zmienną tekstury.
      • Nbtsheet layer#: Używane do określenia ikony przedmiotu w ekwipunku. Może być więcej niż jedna warstwa (np. dla jaj przyzywających), ale liczba możliwych warstw jest zakodowana dla każdego przedmiotu. Działa tylko w kombinacji z "builtin/generated".
      • Nbtsheet particle: Z jakiej tekstury ładować cząsteczki?
      • Nbtsheet A texture variable: Określa zmienną tekstury i przypisuje ją.
    • Nbtsheet elements: Zawiera wszystkie elementy modelu. Mogą mieć tylko formę sześcienną.
      • Nbtsheet An element
        • Nbtsheet from: Punkt początkowy sześcianu wg schematu [x, y, z]. Wartości muszą być między -16 a 32.
        • Nbtsheet to: Punkt końcowy sześcianu wg schematu [x, y, z]. Wartości muszą być między -16 a 32.
        • Nbtsheet rotation: Określa obrót elementu.
          • Nbtsheet origin: Ustawia środek obrotu wg schematu [x, y, z] (domyślnie [8, 8, 8]).
          • Nbtsheet axis: Określa kierunek obrotu. Może być "x", "y" lub "z".
          • Nbtsheet angle: Określa kąt obrotu. Może być od 45° do -45° w wielokrotnościach po 22.5° (domyślnie 0°).
        • Nbtsheet faces: Przechowuje wszystkie boki sześcianu. Jeśli bok został pominięty, to nie zostanie wyrenderowany.
          • Nbtsheet down, up, north, south, west or east: Zawiera właściwości określonego boku.
            • Nbtsheet uv: Określa powierzchnię tekstury do użycia wg schematu [x1, y1, x2, y2].
            • Nbtsheet textures: Określa teksturę w postaci zmiennej tekstury poprzedzonej przez #.
            • Nbtsheet cull: Określa, czy niewidoczne elementy powinny być renderowane (true), czy nie (false).
            • Nbtsheet rotation: Obraca teksturę w wielokrotnościach po 90°.
    • Nbtsheet display: Określa różne miejsca, gdzie modele przedmiotów są wyświetlane.
      • Nbtsheet thirdperson, firstperson, gui or head: Miejsce, gdzie model przedmiotu jest wyświetlany. Przechowuje jego obrót, pozycję i skalę dla określonej sytuacji.
        • Nbtsheet rotation: Określa obrót modelu wg schematu [x, y, z].
        • Nbtsheet translation: Określa pozycję modelu wg schematu [x, y, z].
        • Nbtsheet scale: Określa skalę modelu wg schematu [x, y, z].

Przykład: Pochodnia

Ten przykład opisuje pochodnię jako przedmiot. Model znajduje się w pliku torch.json, który jest w folderze assets/minecraft/models/item.

File: torch.json

{
    "parent": "builtin/generated",
    "textures": {
        "layer0": "blocks/torch_on"
    }
    "display": {
        "thirdperson": {
            "rotation": [ -90, 0, 0 ],
            "translation": [ 0, 1, -3 ],
            "scale": [ 0.55, 0.55, 0.55 ]
        },
        "firstperson": {
            "rotation": [ 0, -135, 25 ],
            "translation": [ 0, 4, 2 ],
            "scale": [ 1.7, 1.7, 1.7 ]
        }
    }
}

"parent"-tag używa "builtin/generated", więc gra używa zwykłego modelu pochodni, który został wygenerowany z grafiki 2D używanej dla ikony. Ikona jest określona "layer0"-tagiem i teksturą, która została już użyta dla modelu bloku, jest używana również dla ikony. Ponieważ tylko jedna warstwa jest zakodowana dla pochodni, nie można dodać więcej warstw. Ponadto właściwości ekranu dla pochodni są tak określone, że będzie on wyświetlany poprawnie w każdej możliwej sytuacji. Pochodnia nie może być postawiona na głowie gracza i używa określonej ikony w ekwipunku, więc nie trzeba dostosowywać modelu do tych sytuacji. By dopasować model do ręki gracza w widoku pierwszo- i trzecioosobowym, musi być on odpowiednio obracany, przesuwany i skalowany, co jest robione dla dwóch sytuacji oddzielnie.

Historia

Pełna wersja
1.814w06aDodano własne modele bloków.
14w07aPrzepisano on nowa format modeli. Zamiast posiadania tylko "planes", ma on teraz "planes" i "cubes". Obrót obiektów został ograniczony do jednego kierunku obrotu na obiekt w wielokrotnościach po 22.5°.
14w11aOświetlenie pełnego bloku już nie tworzy środkowej części kompletnie czarnej.
14w11bZwykłe bloki ładują modele zamiast wcześniej określonych kształtów.
12 kwietnia 2014TheMogMiner postuje o nadchodzących zmianach w formacie modeli.
14w17aPrzekonwertowano większość pozostałych bloków do formatu modeli.
Dodano "rotateVariantTextures", aby zapobiec szczegóły "uv" przed obrotem.
14w25aUsunięto atrybut kierunkowy z definicji "uv" i zamieniono na wyraźne odniesienia tekstur. "textureFacing" został zamieniony z "texture", który jest poprzedzany krzyżykiem (#).
"useAmbientOcclusion" zmieniono na "ambientocclusion"
"rotateVariantTextures" zmieniono na "UV lock"
"cull" zmieniono na "cullface", specifies the opposite of which neighboring face causes culling to occur[1].
Obrót jest bardziej rozszerzony, teraz jest jasne, że może pojawić się tylko na jednej osi. Przykład: obrót jednego z dwóch boków modelu "cross" jest teraz: "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },.
Folder models/blocks/meshes został usunięty, a pliki są teraz przechowywane w models/block.
Folder blockstates został dodany i przechowuje pliki wyboru modelu poprzednio zlokalizowane w models/block.
Format modelu wspiera teraz własne modele przedmiotów.
14w27aZamieniono nazwy stanów bloków z danymi, które lepiej odzwierciedlają dane wewnętrzne. Jeszcze nie odzwierciedla wszystkich danych dla niektórych bloków. Przełączy do rzeczywistych zapisanych danych w przyszłej wersji, gdy numeryczne wartości danych zostaną kompletnie porzucone na korzyść stanów bloków.
14w27bPliki stanów bloków teraz wspierają układ modeli pozwalających na losowe modele.
14w30aDodano model przedmiotów "builtin/entity".
Pocket Edition Alpha
0.8.0Dodano losowy obrót bloków.

Przypisy

  1. Problemy z tłumaczeniem.
Advertisement