Diese Seite führt dich durch das Verfassen deiner eigenen Item Modelle und erklärt dir alle Optionen und Möglichkeiten.
Was sind Item Modelle?
Item Modelle sind im Kern die Definition des Aussehens und der Optik eines Items. Sie legen eine Textur, Modellübersetzung, Rotation, Skalierung und andere Attribute fest.
Modelle werden als JSON-Dateien in deinem resources-Ordner gespeichert.
Dateistruktur
Jede Item Modell-Datei hat eine festgelegte Struktur, die eingehalten werden muss. Es beginnt mit leeren geschweiften Klammern, die das Root-Tag des Modells darstellen. Hier ist ein kurzer Überblick über die Struktur von Item Modellen:
json
{
"parent": "...",
"display": {
"<position>": {
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}
},
"textures": {
"<layerN>": "...",
"particle": "...",
"<texture_variable>": "..."
},
"gui_light": "...",
"elements": [
{
"from": [0.0, 0.0, 0.0],
"to": [0.0, 0.0, 0.0],
"rotation": {
"origin": [0.0, 0.0, 0.0],
"axis": "...",
"angle": "...",
"rescale": "true/false"
},
"shade": "true/false",
"light_emission": "...",
"faces": {
"<key>": {
"uv": [0, 0, 0, 0],
"texture": "...",
"cullface": "...",
"rotation": "...",
"tintindex": "..."
}
}
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Übergeordnet
json
{
"parent": "..."
}1
2
3
2
3
Lädt ein anderes Modell mit all seinen Attributen aus dem angegebenen Pfad als Bezeichner (namespace:path).
Setzt das Tag auf item/generated, um ein aus dem angegebenen Icon erstelltes Modell zu verwenden, oder setze es auf builtin/generated, um das Modell ohne Übersetzung, Drehung oder Skalierung zu verwenden.
Anzeige
json
{
"display": {
"<position>": {
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}
}
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
Dieses Tag ist für das Setzen der Modell Übersetzung, Rotation und Skalierung an einer bestimmten Position verantwortlich.
Das Positionsobjekt kann eine der folgenden Zeichenfolgen sein, die definieren, wie das Modell in verschiedenen Positionen aussehen wird:
| Wert | Beschreibung |
|---|---|
firstperson_righthand | Rechte Hand, aus der Perspektive der ersten Person gesehen |
firstperson_lefthand | Linke Hand, aus der Perspektive der ersten Person gesehen |
thirdperson_righthand | Rechte Hand, aus der Perspektive der dritten Person gesehen (F5) |
thirdperson_lefthand | Linke Hand, aus der Perspektive der dritten Person gesehen (F5) |
gui | Wenn in einem GUI, zum Beispiel das Inventar |
head | Wenn es auf den Kopf des Spielers gesetzt wird, zum Beispiel ein Banner |
ground | Wenn auf dem Boden |
fixed | Wenn in einen Rahmen platziert |
Weiterhin kann jede Position diese drei Werte in Form eines Arrays von Fließkommazahlen enthalten:
json
{
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}1
2
3
4
5
2
3
4
5
rotation: Drei Fließkommazahlen. Legt die Rotation des Modells gemäß dem Schema[x, y, z]fest.translation: Drei Fließkommazahlen. Legt die Übersetzung des Modells gemäß dem Schema[x, y, z]fest. Werte müssen zwischen-80und80; Werte außerhalb dieses Bereichs werden auf den nächstgelegenen Extremwert gesetzt.scale: Drei Fließkommazahlen. Legt die Skalierung des Modells gemäß dem Schema[x, y, z]fest. Der maximale Wert ist4, größere Werte werden als4gesehen.
Texturen
json
{
"textures": {
"<layerN>": "...",
"particle": "...",
"<texture_variable>": "..."
}
}1
2
3
4
5
6
7
2
3
4
5
6
7
Das Tag textures enthält die Texturen des Modells in Form einer Bezeichnung oder einer Texturvariable. Es beinhaltet drei zusätzliche Objekte:
<layerN>: String. Es gibt das Icon des im Inventar verwendeten Items an. Es kann mehr als eine Ebene geben (z.B. Spawn-Eier), maximal jedoch 3.particle: String. Definiert die Textur, aus der Partikel geladen werden sollen. Wenn nicht definiert, wirdlayer0verwendet.<texture_variable>: String. Es erstellt eine Variable und weist eine Textur zu. Kann später mit dem Präfix#referenziert werden (z.B.,"top": "namespace:path"⇒#top)
WICHTIG
<layerN> funktioniert nur, wenn parent als item/generated gesetzt ist!
GUI Licht
json
{
"gui_light": "..."
}1
2
3
2
3
Dieses Tag definiert die Richtung, aus der das Item Modell beleuchtet wird. Kann entweder front oder side sein, wobei das letztere der Standard ist. Wenn auf front gesetzt, wird das Modell wie ein flaches Item gerendert, wenn auf side gesetzt, wird das Element wie ein Block gerendert.
Elemente
json
{
"elements": [
{
"from": [0.0, 0.0, 0.0],
"to": [0.0, 0.0, 0.0],
"rotation": {
"origin": [0.0, 0.0, 0.0],
"axis": "...",
"angle": "...",
"rescale": "true/false"
},
"shade": "true/false",
"light_emission": "...",
"faces": {
"<face>": {
"uv": [0, 0, 0, 0],
"texture": "...",
"cullface": "...",
"rotation": "...",
"tintindex": "..."
}
}
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Beinhaltet alle Elemente eines Modells, welches nur würfelförmig sein kann. Wenn sowohl das parent- als auch das elements-Tag gesetzt sind, überschreibt das elements-Tag dieser Datei das des übergeordneten Tags.
json
{
"from": [0.0, 0.0, 0.0],
"to": [0.0, 0.0, 0.0]
}1
2
3
4
2
3
4
from gibt den Startpunkt des Quaders gemäß dem Schema [x, y, z] relativ zu der unteren linken Ecke an. to gibt den Endpunkt an. Ein Quader, der so groß wie ein Standardblock ist, würde bei [0, 0, 0] beginnen und bei [16, 16, 16] enden. Die Werte von beiden müssen zwischen -16 und 32 liegen, was bedeutet das jedes Item Modell 3×3 Blöcke groß sein kann.
json
{
"rotation": {
"origin": [0.0, 0.0, 0.0],
"axis": "...",
"angle": "...",
"rescale": "true/false"
}
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
rotation definiert die Rotation von Elementen. Es beinhaltet vier weitere Werte:
origin: Drei Fließkommazahlen. Legt den Punkt der Rotation gemäß dem Schema[x, y, z]fest.axis: String. Legt die Drehrichtung an und muss einer der folgenden Werte sein:x,yundz.angle: Fließkommazahl. Legt den Winkel der Rotation fest. Reicht von -45 bis 45 in Schritten von 22,5 Grad.rescale: Boolean. Legt fest, ob die Flächen über den gesamten Block skaliert werden sollen. Der Standardwert istfalse.
json
{
"shade": "true/false"
}1
2
3
2
3
shade definiert, ob Schatten gerendert werden sollen. Der Standardwert ist true.
json
{
"light_emission": "..."
}1
2
3
2
3
light_emission definiert das minimale Licht-Level, das das Element empfangen kann. Der Wert kann zwischen 0 und 15 liegen. Der Standardwert ist 0.
json
{
"faces": {
"<key>": {
"uv": [0, 0, 0, 0],
"texture": "...",
"cullface": "...",
"rotation": 0,
"tintindex": 0
}
}
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
faces enthält alle Flächen eines Quaders. Wenn eine Fläche nicht gesetzt wird, wird sie nicht gerendert. Dessen Schlüssel (<key>) können einer der folgenden sein: down, up, north, south, west oder east. Jeder Schlüssel enthält die Eigenschaften für diese Fläche:
uv: Vier Ganzzahlen. Definiert den Bereich der zu verwendenden Textur gemäß dem Schema[x1, y1, x2, y2]. Wenn nicht festgelegt, wird standardmäßig ein Wert verwendet, der der xyz-Position des Elements entspricht. Tauschen der Werte vonx1undx2(zum Beispiel von0, 0, 16, 16zu16, 0, 0, 16) dreht die Textur um. UV ist optional und wird, wenn nicht angegeben, automatisch anhand der Position des Elements generiert.texture: String. Gibt die Textur der Fläche in Form einer Texturvariable an, der ein#vorangestellt ist.cullface: String. Kann sein:down,up,north,south,west, odereast. Gibt an, ob eine Fläche nicht gerendert werden muss, wenn sich an der angegebenen Position ein Block befindet, der sie berührt. Es bestimmt auch die Seite des Blocks, von der aus das Lichtlevel für die Beleuchtung der Fläche verwendet wird. Wenn diese Option nicht gesetzt ist, wird standardmäßig die Seite verwendet.rotation: Ganzzahl. Rotiert die Textur um den angegebenen Winkel in 90-Grad-Schritten. Die Drehung hat keinen Einfluss darauf, welcher Teil der Textur verwendet wird. Stattdessen handelt es sich um eine Permutation der ausgewählten Textur-Eckpunkte (implizit oder explizit überuvausgewählt).tintidex: Ganzzahl. Färbt die Textur auf dieser Fläche unter Verwendung eines Farbwerts, der aus der Definition des Client Items referenziert wird. Wenn keine Farbe für die Färbung (oder Weiß) angegeben ist, wird die Textur nicht gefärbt.
Quellen und Links
Du kannst die Item Modell Seite des Minecraft Wiki für eine detailliertere Anleitung besuchen. Viele Informationen hier stammen von dieser Seite.



