The Best Resource for Minecraft
The Best Resource for Minecraft

Een kaartpixel is één byte, en twee van de bits zijn helderheid

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:

tintindexvermenigvuldigerals een percentage
0180 / 25570.6%
1220 / 25586.3%
2255 / 255100%
3135 / 25552.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:

schaalblokken beslagenéén kaartpixel is
0128 × 1281 blok
1256 × 2562 × 2 blokken
2512 × 5124 × 4 blokken
31,024 × 1,0248 × 8 blokken
42,048 × 2,04816 × 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.

Probeer de tool: Map Art Extractor →