Een kaartpixel is één byte, en twee van de bits zijn helderheid
61 basiskleuren × 4 tinten = 244 kleuren uit een 16,384-byte array. Slechts één van de vier tinten is de echte kleur van het blok; de andere drie zijn verdonkerd naar 86%, 71% en 53%.
Elke ingevulde kaart in Minecraft heeft dezelfde grootte op schijf: een colors byte array of exactly 16,384 items, wat 128 × 128 is. Dat geldt voor een schaal-0-kaart die 128 blokken beslaat en een schaal-4-kaart die 2,048 blokken beslaat — het aantal pixels verandert nooit. Al het andere over kaartkunst volgt uit dat ene feit.
De byte splitst in tweeën
Elk van die 16,384 bytes is geen kleur. Het is een basiskleur en een tint samengepakt:
baseColorId = colorId >> 2 // 0–63
shadeIndex = colorId & 3 // 0–3
De laagste twee bits zijn dus helderheid en de rest is naar welk blok je kijkt. Met 61 gedefinieerde basiskleuren (id 0 is het transparante/onverkende slot), is de hoogste byte die een echte kaart bevat 61 × 4 + 3 = 247.
61 × 4 = 244 verschillende kleuren, wat het volledige palet is dat beschikbaar is voor kaartkunst. Niet 61, en niet 256.
Slechts één tint is de werkelijke kleur van het blok
De vier vermenigvuldigers zijn niet gelijkmatig verdeeld, en een ervan is 1.0:
| tintindex | vermenigvuldiger | als een percentage |
|---|---|---|
| 0 | 180 / 255 | 70.6% |
| 1 | 220 / 255 | 86.3% |
| 2 | 255 / 255 | 100% |
| 3 | 135 / 255 | 52.9% |
Tint 2 is de textuurkleur van het blok, onaangetast. De andere drie zijn donkerdere versies ervan, en de donkerste — tint 3 — is nog maar net iets meer dan de helft van de helderheid.
Dit is waarom getrapte kaartkunst er zo anders uitziet dan een platte. Een plat bouwwerk kan per blok slechts één van deze vier produceren, dus een platte kaart heeft 61 kleuren beschikbaar. Het variëren van de hoogte ontgrendelt de andere drie tinten van elk blok en brengt je op 244. Het palet wordt niet breder — je krijgt geen nieuwe kleurtinten — het wordt vier keer dieper in waarde, wat precies is wat dithering nodig heeft.
Merk ook op dat de volgorde van de tinten niet monotoon is: index 3 is de donkerste, niet de helderste. Sorteren op index en een verloop verwachten geeft 71%, 86%, 100%, 53%.
Schaal vermenigvuldigt oppervlakte, nooit resolutie
De scale field runs 0–4, en het gebied dat het beslaat is 128 × 2^scale blocks on a side:
| schaal | blokken beslagen | één kaartpixel is |
|---|---|---|
| 0 | 128 × 128 | 1 blok |
| 1 | 256 × 256 | 2 × 2 blokken |
| 2 | 512 × 512 | 4 × 4 blokken |
| 3 | 1,024 × 1,024 | 8 × 8 blokken |
| 4 | 2,048 × 2,048 | 16 × 16 blokken — precies één chunk |
Een schaal-4-kaart beslaat 256 keer de oppervlakte van een schaal-0-kaart met dezelfde 16,384 bytes. Dat is de hele reden waarom kaartkunst op schaal 0 moet worden gebouwd: bij elke andere zoomfactor is één pixel een gemiddelde van meerdere blokken en wordt de afbeelding die je zorgvuldig hebt geplaatst weggemonsterd.
De schaal-4-rij is om een andere reden het onthouden waard — één pixel is precies één chunk, waardoor een volledig uitgezoomde kaart een bruikbaar chunk-raster wordt.
Wat dit betekent voor een beschadigd bestand
Als een map_<id>.dat has a colors array that is not 16,384 bytes, it is not a map with missing pixels — it is not a readable map at all. There is no partial-length form. The array is always full-size, with unexplored areas stored as colour id 0 rather than omitted.