Chunk

A chunk is a 256 block tall 16×16 segment of a Minecraft world. Chunks are the method used by the world generator to divide maps into manageable pieces.

Generation
Chunks are 16 blocks wide, 16 blocks long, and 256 blocks high, which is 65,536 blocks total. Chunks are generated around players when they first enter the world. As they wander around the world, new chunks are generated as needed.

Chunks are generated with the help of the map seed, which means that the chunks are always the same if you would use the same seed again, as long as the map generator and version number remain the same.

Loaded and unloaded chunks
Chunks near the player are loaded into memory. The range depends on the Render Distance setting. These chunks may have activity (mobs spawning, trees growing, water flowing, dropped items disappearing etc.), while chunks outside of the range are inactive, and are stored on the disk. Once stored, a chunk is not stored again for at least 30 seconds.

In multiplayer mode, a grid with a default inradius of 10 (for a total of 21×21 or 441) chunks is loaded around each player and sent to the player by default, although this can be configured to be between 3 and 15, usually lowered with a poor connection home server.

Spawn chunks
The chunks in the area immediately surrounding the world spawn point are special chunks that are never unloaded from memory as long as at least one player is in the Overworld. This means that things like redstone mechanisms and mob farms continue to operate even when all players are far away.

Effects on performance
Chunks are normally loaded into volatile memory only when they are needed for displaying. This 'store until needed' memory management is commonly used in games with procedurally-generated terrain so that the players' computers don't have to track and update hundreds of plants and mobs simultaneously.

Minecraft's render engine uses OpenGL's display list feature to divide a world chunk into sixteen 16×16×16 blocks large display lists to speed up rendering significantly. They need to be rebuilt each time when a block within them is changed and can be rendered multiple times to achieve e. g. transparency.

Slime chunks
Slime chunks are specific chunks capable of spawning Slimes bellow Y=40 regardless of Light. These chunks are otherwise same as all other chunks.

Slime chunks generate throughout the world (except in mushroom islands). 1 in 10 of all chunks is slime chunk. These slime chunks are determined pseudo-randomly by combining their chunk coordinates with the seed of the world: Random rnd = new Random(   seed +    (int) (xPosition * xPosition * 0x4c1906) +    (int) (xPosition * 0x5ac0db) +     (int) (zPosition * zPosition) * 0x4307a7L +    (int) (zPosition * 0x5f24f) ^ 0x3ad8025f ); return rnd.nextInt(10) == 0; That is, using the chunk coordinates to help generate a seed, a random number between 0 and 9 inclusive is generated, and if that number is 0, the chunk can spawn slimes. To convert world coordinates to chunk coordinates, divide by 16 and round down. Note that are 32-bit integers ( int s).

Bedrock Edition
The slime chunk algorithm $$ is different from $$. The algorithm doesn't depend on the world seed, thus the chunks that slimes can naturally spawn in are the same for every world.

Finding chunk edges


The key can be used to display chunk boundaries.

Alternately, pressing the "F3" button opens the Debug screen that shows the player's X, Y, and Z coordinates, in addition to the "c" variable. These coordinates change as the player moves around. The player can know the chunk they are in by the variable "c" that is next to both "x" and "z" variables. The number in the brackets specifies how far the player is from the north-western corner of the chunk, so if the "c" beside X was 3(5), and the "c" beside Z was 2(4), then the player is on chunk (3, 2), and is on block (5, 4) from the north-western corner.

X and Z coordinates that are divisible by 16 represent the boundaries between chunks. EG: (96, -32) is a corner where four chunks meet. One of those chunks is between X coordinates 80 to 96 and Z coordinates -48 to -32. Another one is between X coordinates 96 to 112 and Z coordinates -32 to -16, and so on. When either X or Z crosses a multiple of 16, the player is moving across chunks.

Essentially, the player is in the top-left corner (north-western) of a chunk when both x and z coordinates are divisible by 16.

Additionally, the player can know the chunk they are on by this formula: The X of chunk is Floor( X coordinate / 16 ) The Z of chunk is Floor( Z coordinate / 16 ) Where Floor is the largest previous integer. E.g. Floor( 27.9561 ) is 27 In other words if X was 27, Z was -15 the chunk is chunk ( Floor( 27 / 16 ), Floor( -15 / 16 ) ), meaning that the player is on chunk (1, -1) Also, The player can know how far he is from the north-western corner by this formula: (X or Z coordinate) AND 15

In Bedrock Edition, when toggling fancy graphics, the world renders again, loading only the chunk the player is in for a split second, briefly showing the chunk boundaries. When the player changes the render distance rapidly, chunk barriers appear as a blue line.

Trivia

 * There are a possible fourteen trillion (14,062,500,000,000) real chunks that can be generated. There are 7.46&times;10244,700 possible chunks, excluding entities.
 * If a player stands in a chunk that has not generated yet, the world immediately becomes invisible until they are in a valid chunk. This does not happen if the Y coordinates are beyond the chunk boundaries.
 * $$, if one of the sixteen 16×16×16 sections of a chunk doesn't have any blocks in it, placing a block there shows the same animation as a chunk loading. This bug makes the block that the player placed turn to the same color of the sky in the direction the player is facing for about 1 second and starts fading away into the normal block texture. If the time is sunrise or sunset and the player places a block there, it actually changes colors constantly for 1 second if the player keeps bobbing their head up and down. The block also makes blocks behind it appear invisible.
 * Placing or destroying a block in an unloaded chunk usually reloads it.