MC Toolkit

Anleitungen / Bauen & Ressourcen

Ein Kartenpixel ist ein Byte, und zwei seiner Bits sind Helligkeit

61 Grundfarben × 4 Schattierungen = 244 Farben aus einem 16.384-Byte-Array. Nur eine der vier Schattierungen ist der volle Farbwert; die anderen drei sind auf 86 %, 71 % und 53 % abgedunkelt.

Jede gefüllte Karte in Minecraft ist auf der Festplatte gleich groß: ein colors-Byte-Array mit genau 16.384 Einträgen, also 128 × 128. Das gilt für eine Karte der Größe 0, die 128 Blöcke abdeckt, ebenso wie für eine Karte der Größe 4, die 2.048 Blöcke abdeckt — die Pixelanzahl ändert sich nie. Alles andere an Kartenkunst folgt aus dieser einen Tatsache.

Das Byte teilt sich in zwei Teile

Jedes dieser 16.384 Bytes ist keine Farbe. Es ist eine Grundfarbe und eine Schattierung, die zusammengepackt sind:

baseColorId = colorId >> 2      // 0–63
shadeIndex  = colorId & 3       // 0–3

Die unteren zwei Bits sind also die Helligkeit, und der Rest verrät, welchen Block du vor dir hast. Mit 61 definierten Grundfarben (ID 0 ist der transparente/unerforschte Platz) ist das höchste Byte, das eine echte Karte enthält, 61 × 4 + 3 = 247.

61 × 4 = 244 verschiedene Farben, und das ist die gesamte Palette, die der Kartenkunst zur Verfügung steht. Nicht 61 und nicht 256.

Nur eine Schattierung ist der volle Farbwert

Die vier Multiplikatoren sind nicht gleichmäßig verteilt, und einer davon ist 1,0:

SchattierungsindexMultiplikatorals Prozentwert
0180 / 25570,6 %
1220 / 25586,3 %
2255 / 255100 %
3135 / 25552,9 %

Schattierung 2 ist der eigene RGB-Wert der Kartenfarbe, unskaliert — ein fester Wert pro Farb-ID, der nicht aus der Textur des Blocks entnommen wird. Die anderen drei sind dunklere Versionen davon, und die dunkelste — Schattierung 3 — liegt nur knapp über der halben Helligkeit.

Deshalb sieht treppenförmige Kartenkunst so anders aus als eine flache. Ein flacher Bau erzeugt nur die normale Schattierung (86 %), also stehen einer flachen Karte 61 Farben zur Verfügung. Wenn du die Höhe variierst, schaltest du die helleren und dunkleren Schattierungen jedes Blocks frei und kommst auf 183. Die Palette wird nicht breiter — du bekommst keine neuen Farbtöne —, sie wird dreimal tiefer im Wert, und genau das braucht Dithering. Die vierte Schattierung (53 %) entsteht überhaupt nie aus Blöcken: Sie existiert im Byte-Format, und nur eine bearbeitete Kartendatei verwendet sie.

Beachte außerdem, dass die Reihenfolge der Schattierungen nicht monoton ist: Index 3 ist die dunkelste, nicht die hellste. Wenn du nach Index sortierst und einen Verlauf erwartest, bekommst du 71 %, 86 %, 100 %, 53 %.

Größe vervielfacht die Fläche, nie die Auflösung

Das Feld scale reicht von 0–4, und die Fläche, die es abdeckt, beträgt 128 × 2^scale Blöcke pro Seite:

Größeabgedeckte Blöckeein Kartenpixel ist
0128 × 1281 Block
1256 × 2562 × 2 Blöcke
2512 × 5124 × 4 Blöcke
31.024 × 1.0248 × 8 Blöcke
42.048 × 2.04816 × 16 Blöcke — genau ein Chunk

Eine Karte der Größe 4 deckt 256-mal so viel Fläche ab wie eine Karte der Größe 0, und das mit denselben 16.384 Bytes. Das ist der ganze Grund, warum Kartenkunst in Größe 0 gebaut werden muss: Bei jedem anderen Zoom ist ein Pixel ein Durchschnitt aus mehreren Blöcken, und das Bild, das du sorgfältig platziert hast, wird weggeresampelt.

Die Zeile für Größe 4 ist aus einem anderen Grund merkenswert — ein Pixel ist genau ein Chunk, was eine voll herausgezoomte Karte zu einem brauchbaren Chunk-Raster macht.

Was das für eine beschädigte Datei bedeutet

Wenn eine Kartendatei (data/minecraft/maps/<id>.dat im Weltordner) ein colors-Array hat, das nicht 16.384 Bytes groß ist, dann ist das keine Karte mit fehlenden Pixeln: Das Spiel lädt die Karte trotzdem, wirft aber die Pixel weg und zeigt sie leer an. Eine Teil-Länge gibt es nicht. Das Array hat immer die volle Größe, wobei unerforschte Bereiche als Farb-ID 0 gespeichert werden statt ausgelassen zu werden.

Kartenbild-Extraktor →

Weitere Anleitungen

Alle ansehen →