Guides / Building & Resources

Piksel Mapy to jeden bajt, a dwa jego bity to jasność

61 kolorów bazowych × 4 odcienie = 244 kolory z tablicy 16 384 bajtów. Tylko jeden z czterech odcieni to prawdziwy kolor bloku; pozostałe trzy są przyciemnione do 86%, 71% i 53%.

Każda wypełniona Mapa w Minecrafcie ma ten sam rozmiar na dysku: tablica colors bajtów, dokładnie 16 384 wpisów, czyli 128 × 128. Dotyczy to Mapy o wielkości 0, obejmującej 128 bloków, i Mapy o wielkości 4, obejmującej 2048 bloków — liczba pikseli nigdy się nie zmienia. Wszystko inne w sztuce Mapy wynika z tego jednego faktu.

Bajt dzieli się na dwie części

Każdy z tych 16 384 bajtów nie jest kolorem. Jest to kolor bazowy i odcień spakowane razem:

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

Tak więc dwa najniższe bity to jasność, a reszta to blok, na który patrzysz. Zdefiniowano 61 kolorów bazowych (id 0 to przezroczyste/nieodkryte miejsce), więc najwyższy bajt, jaki zawiera prawdziwa Mapa, to 61 × 4 + 3 = 247.

61 × 4 = 244 różne kolory, co stanowi całą paletę dostępną dla sztuki Mapy. Nie 61, i nie 256.

Tylko jeden odcień to rzeczywisty kolor bloku

Cztery mnożniki nie są równomiernie rozmieszczone, a jeden z nich to 1.0:

indeks odcieniamnożnikjako procent
0180 / 25570.6%
1220 / 25586.3%
2255 / 255100%
3135 / 25552.9%

Odcień 2 to kolor tekstury bloku, nienaruszony. Pozostałe trzy to jego ciemniejsze wersje, a najciemniejszy — odcień 3 — to tylko nieco ponad połowa jasności.

Dlatego sztuka Mapy zbudowana na schodach wygląda tak inaczej niż płaska. Płaska konstrukcja może zawsze wytworzyć tylko jeden z tych czterech odcieni na blok, więc płaska Mapa ma dostępne 61 kolorów. Zmienianie wysokości odblokowuje pozostałe trzy odcienie każdego bloku i przenosi Cię do 244. Paleta nie staje się szersza — nie otrzymujesz nowych barw — staje się czterokrotnie głębsza pod względem wartości, co jest dokładnie tym, czego potrzebuje dithering.

Zauważ również, że kolejność odcieni nie jest monotoniczna: indeks 3 jest najciemniejszy, a nie najjaśniejszy. Sortowanie według indeksu i oczekiwanie gradientu daje 71%, 86%, 100%, 53%.

Wielkości mnoży obszar, nigdy rozdzielczość

Pole scale przyjmuje wartości 0–4, a obszar, który pokrywa, to 128 × 2^scale bloków na stronę:

wielkościpokryte blokijeden piksel Mapy to
0128 × 1281 blok
1256 × 2562 × 2 bloki
2512 × 5124 × 4 bloki
31,024 × 1,0248 × 8 bloków
42,048 × 2,04816 × 16 bloków — dokładnie jeden chunk

Mapa o wielkości 4 pokrywa 256 razy większy obszar niż Mapa o wielkości 0, używając tych samych 16 384 bajtów. To jest cały powód, dla którego sztuka Mapy musi być budowana w wielkości 0: przy każdym innym powiększeniu jeden piksel to średnia z kilku bloków, a obraz, który starannie umieściłeś, jest ponownie próbkowany.

Wiersz dla wielkości 4 warto zapamiętać z innego powodu — jeden piksel to dokładnie jeden chunk, co sprawia, że w pełni powiększona Mapa jest użyteczną siatką chunków.

Co to oznacza dla uszkodzonego pliku

Jeśli map_<id>.dat ma tablicę colors, która nie ma 16 384 bajtów, nie jest to Mapa z brakującymi pikselami — w ogóle nie jest to czytelna Mapa. Nie ma formy o częściowej długości. Tablica jest zawsze pełnowymiarowa, z nieodkrytymi obszarami przechowywanymi jako id koloru 0, a nie pominiętymi.

Ekstraktor mapy do PNG →

More guides

Browse all →

Szukasz innych narzędzi do Minecrafta?

Zestaw generatorów, podglądów i konwerterów działających w przeglądarce — wszystkie za darmo.