Diese Seite führt dich durch das Verfassen deiner eigenen Blockmodelle und erklärt dir alle Optionen und Möglichkeiten.
Was sind Blockmodelle?
Blockmodelle sind im Kern die Definition des Aussehens und der Optik eines Blocks. Sie legen eine Textur, Modellübersetzung, Rotation, Skalierung und andere Attribute fest.
Modelle werden als JSON-Dateien in deinem resources-Ordner gespeichert.
Dateistruktur
Jede Blockmodell-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 Blockmodellen:
json
{
"parent": "...",
"ambientocclusion": "true/false",
"display": {
"<position>": {
"rotation": [0.0, 0.0, 0.0],
"translation": [0.0, 0.0, 0.0],
"scale": [0.0, 0.0, 0.0]
}
},
"textures": {
"particle": "...",
"<texture_variable>": "..."
},
"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
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
Ü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).
Setze dieses Tag auf builtin/generated, um ein aus dem angegebenen Icon erstelltes Modell zu verwenden. Rotation kann durch Blockzustände erreicht werden.
Umgebungsokklusion
json
{
"ambientocclusion": "true/false"
}1
2
3
2
3
Dieses Tag gibt an, ob Umgebungsokklusion verwendet werden soll. Der Standardwert ist true.
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": {
"particle": "...",
"<texture_variable>": "..."
}
}1
2
3
4
5
6
2
3
4
5
6
Das Tag textures enthält die Texturen des Modells in Form einer Bezeichnung oder einer Texturvariable. Es beinhaltet drei zusätzliche Objekte:
particle: String. Definiert die Textur, aus der Partikel geladen werden sollen. Diese Textur wird auch als Überlagerung verwendet, wenn du dich in einem Netherportal befindest, und für die Standbilder von Wasser und Lava. Wird auch als Texturvariable betrachtet, auf die als#particleverwiesen werden kann.<texture_variable>: String. Erstellt eine Variable und weist eine Textur zu. Kann später mit dem Präfix#referenziert werden (z.B.,"top": "namespace:path"⇒#top)
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 Blockmodell 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 zu 45.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 im Uhrzeigersinn 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 mit einem Farbtonwert ein. Der Standardwert-1gibt an, dass die Tönung nicht verwendet werden soll. Jede andere Zahl wird anBlockColorsübergeben, um den diesem Index entsprechenden Farbtonwert zu erhalten (gibt Weiß zurück, wenn für den Block kein Farbtonindex definiert ist).
Quellen und Links
Du kannst die Blockmodell Seite des Minecraft Wiki für eine detailliertere Anleitung besuchen. Viele Informationen hier stammen von dieser Seite.


