The polar format resembles the anvil format in many ways, though it is binary, not NBT.
Header
Name |
Type |
Notes |
Magic Number |
int |
Polr |
Version |
short |
|
Compression |
byte |
0 = None, 1 = Zstd |
Length of data |
varint |
Uncompressed length of data (or just length of data if Compression=0 ) |
World |
world |
|
Name |
Type |
Notes |
Min Section |
byte |
For example, -4 in a vanilla world |
Max Section |
byte |
For example, 19 in a vanilla world |
User data |
array[byte] |
Arbitrary user data segment |
Number of Chunks |
varint |
Number of entries in the following array |
Chunks |
array[chunk] |
Chunk data |
Entities or some other extra data field needs to be added to chunks in the future.
Name |
Type |
Notes |
Chunk X |
varint |
|
Chunk Z |
varint |
|
Sections |
array[section] |
maxSection-minSection+1 entries |
Number of Block Entities |
varint |
Number of entries in the following array |
Block Entities |
array[block entity] |
|
Heightmap Mask |
int |
A mask indicating which heightmaps are present. See AnvilChunk for flag constants. |
Heightmaps |
array[bytes] |
One heightmap for each bit present in Heightmap Mask |
Length of user data |
varint |
Number of entries in the following array |
User data |
array[byte] |
Arbitrary user data segment |
Name |
Type |
Notes |
Is Empty |
bool |
If set, nothing follows |
Block Palette Size |
varint |
|
Block Palette |
array[string] |
Entries are in the form `minecraft:block[key1=value1,key2=value2] |
Block Palette Data Length |
varint |
Only present if Block Palette Size > 1 |
Block Palette Data |
array[long] |
See the anvil format for more information about this type |
Biome Palette Size |
varint |
|
Biome Palette |
array[string] |
|
Biome Palette Data Length |
varint |
Only present if Biome Palette Size > 1 |
Biome Palette Data |
array[long] |
See the anvil format for more information about this type |
Block Light Data Content |
byte |
0 = no lighting, 1 = all zero, 2 = all max, 3 = present after |
Block Light |
bytes |
A 2048 byte long nibble array, only present if above = 3 |
Sky Light Data Content |
byte |
0 = no lighting, 1 = all zero, 2 = all max, 3 = present after |
Sky Light |
bytes |
A 2048 byte long nibble array, only present if above = 3 |
Name |
Type |
Notes |
Chunk Pos |
int |
|
Has ID |
bool |
If unset, Block Entity ID is omitted |
Block Entity ID |
string |
|
Has NBT Data |
bool |
If unset, NBT Data is omitted |
NBT Data |
nbt |
|