- Chunk Section: a 16×16×16 area, sometimes also called chunk.
- Chunk Column: 16 chunks aligned vertically (totalling 16×256×16).
A Chunk Section is defined in terms of other data types. A Chunk Section consists of the following fields:
|Field Name||Field Type||Notes|
|Bits Per Block||Unsigned Byte||Determines how many bits are used to encode a block. Note that the actual value does not always match this value.|
|Palette Length||VarInt||Length of the following array. May be 0.|
|Palette||Array of VarInt||Mapping of block state IDs in the global palette to indices of this array|
|Data Array Length||VarInt||Number of bytes in the following array|
|Data Array||Long Array||List of 4096 indices pointing to state IDs in the Palette|
|Block Light||Byte Array||Half byte per block|
|Sky Light||Optional Byte Array||Only if in the Overworld; half byte per block|
Data Array, Block Light, and Sky Light are given for each block with increasing x coordinates, within rows of increasing z coordinates, within layers of increasing y coordinates.
The format of the palette changes based off of the value of bits per block.
- 0: The palette array has a length of 0, but no actual blocks can be sent since each block is represented by 0 bits. This generally shouldn't be done as instead the primary bit mask should be used to mark this chunk section as empty.
- 1 to 4: Blocks are encoded as 4 bits. The palette array is at max 16 entries long and is used.
- 5 to 8: Blocks are encoded with the given number of bits.
- 9 and above: The palette array has a length of 0, and blocks are always represented as 13 bits per block in reference to the global palette.
The global palette encodes a block as 13 bits. It uses the
minecraft:stone with damage
3) would be encoded as
000000001 0011. If the damage value is not valid for a block, then the block will be treated as air.
In half-byte arrays, two values are packed into each byte. Even-indexed items are packed into the low bits, odd-indexed into the high bits.
The following implement the previous (before 1.9) format: