MC Toolkit

Guias / Construção e recursos

Um pixel de mapa é um byte, e dois de seus bits são brilho

61 cores base × 4 tons = 244 cores a partir de um array de 16.384 bytes. Apenas um dos quatro tons é o valor pleno da cor; os outros três são escurecidos para 86%, 71% e 53%.

Todo mapa preenchido no Minecraft tem o mesmo tamanho em disco: um array de colors bytes com exatamente 16.384 entradas, ou seja, 128 × 128. Isso vale tanto para um mapa de escala 0 que cobre 128 blocos quanto para um de escala 4 que cobre 2.048 blocos — a contagem de pixels nunca muda. Todo o resto sobre map art decorre desse único fato.

O byte se divide em dois

Cada um desses 16.384 bytes não é uma cor. É uma cor base e um tom compactados juntos:

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

Assim, os dois bits inferiores são o brilho e o restante indica qual bloco você está vendo. Com 61 cores base definidas (o id 0 é o espaço transparente/não explorado), o maior byte que um mapa real comporta é 61 × 4 + 3 = 247.

61 × 4 = 244 cores distintas, que é a paleta inteira disponível para map art. Não 61, e não 256.

Apenas um tom é o valor pleno da cor

Os quatro multiplicadores não são igualmente espaçados, e um deles é 1,0:

índice do tommultiplicadorem porcentagem
0180 / 25570,6%
1220 / 25586,3%
2255 / 255100%
3135 / 25552,9%

O tom 2 é o próprio RGB da cor do mapa, sem escala — um valor fixo por id de cor, não amostrado da textura do bloco. Os outros três são versões mais escuras dele, e o mais escuro — o tom 3 — tem pouco mais da metade do brilho.

É por isso que uma map art em degraus parece tão diferente de uma plana. Uma construção plana produz apenas o tom normal (86%), então um mapa plano tem 61 cores disponíveis. Variar a altura libera os tons mais claros e mais escuros de cada bloco e leva você a 183. A paleta não fica mais ampla — você não ganha matizes novas — ela fica três vezes mais profunda em valor, que é exatamente o que o dithering precisa. O quarto tom (53%) nunca é produzido a partir de blocos: ele existe no formato do byte, e só um arquivo de mapa editado o utiliza.

Vale notar também que a ordem dos tons não é monotônica: o índice 3 é o mais escuro, não o mais claro. Ordenar por índice esperando um gradiente resulta em 71%, 86%, 100%, 53%.

A escala multiplica a área, nunca a resolução

O campo scale vai de 0 a 4, e o terreno que ele cobre tem 128 × 2^scale blocos de lado:

escalablocos cobertosum pixel de mapa equivale a
0128 × 1281 bloco
1256 × 2562 × 2 blocos
2512 × 5124 × 4 blocos
31.024 × 1.0248 × 8 blocos
42.048 × 2.04816 × 16 blocos — exatamente um chunk

Um mapa de escala 4 cobre 256 vezes a área de um mapa de escala 0 usando os mesmos 16.384 bytes. É justamente por isso que a map art precisa ser construída na escala 0: em qualquer outro zoom, um pixel é a média de vários blocos e a imagem que você posicionou com tanto cuidado é reamostrada e se perde.

A linha da escala 4 vale ser lembrada por outro motivo — um pixel é precisamente um chunk, o que torna um mapa totalmente ampliado uma grade de chunks utilizável.

O que isso significa para um arquivo corrompido

Se um arquivo de mapa (data/minecraft/maps/<id>.dat na pasta do mundo) tiver um array colors que não tenha 16.384 bytes, ele não é um mapa com pixels faltando: o jogo ainda carrega o mapa, mas descarta os pixels e o exibe em branco. Não existe forma de comprimento parcial. O array é sempre do tamanho completo, com áreas não exploradas armazenadas como id de cor 0 em vez de omitidas.

Extrator de mapas em PNG →

Mais guias

Ver todos →