Chunk Loading

Attention **: The content below is partially outdated and some aspects (e.g. sizes) only apply to older minecraft versions. More recent information about chunk loading needs to be included. See discussion page for now.**

Minecraft processes the world in groups of blocks known as "chunks". A chunk is a column of 16 x 256 x 16 blocks. The term "subchunk" is used to refer to a group of 16 x 16 x 16 blocks that are stacked on top of each other to make up a chunk. Centered around the world spawn point is a 16x16 grid of chunks (or 17x17 if the Spawnpoint of the world is in the exact center of a chunk) that are referred to as the Spawn Chunks. The Spawn Chunks are special because they are always loaded in memory, unlike regular chunks which are only loaded when a player is nearby. However only the center 12x12 (or 13x13 chunks, in case the Spawnpoint of the world is in the exact center of a chunk) will process entities, the chunks at the border will only handle block updates. When a player logs out or travels to another dimension, all loaded chunks will keep being loaded for **60 seconds** prior to 1.9 or **10 seconds** in 1.9 and above. Then, all chunks, including redstone, entities, and game mechanics will stop working until a player logs back on. If during the 60-second period an entity moves through a Nether portal, all loaded chunks will continue to be loaded for another 60 seconds. That is a simple concept of Chunk Loading.

The most common methods of making sure that chunks outside of the Spawn Chunks are loaded, is moving an entity (usually an Item) through a Nether portal, or using hoppers on the chunk border between the spawn chunks or any other chunk that is always loaded and an unloaded chunk. The hopper must face towards the chunk that needs to be loaded. This way, the game sees the hopper and checks the other chunk to check if there is a container. It notices it is not loaded, and loads the chunk. This method can be chained to eternity. This way of chunk loading has some very clear flaws: First, it's very tedious to link up the spawn chunks with every single chunk on the way to the destination, that can be thousands of blocks away. Also, unless a wood farm and an Iron Golem farm (Note that there are iron farm designs, which have to be loaded at all times.) exist in the world or on the server where chunks are to be loaded, it can be very hard to gather resources for such operation.

### Lazy chunks and Entity processing chunks.

If a single chunk is loaded in a world, it will not process any entities and will only handle block updates and things like terrain population. This is referred to as a lazy chunk. For a chunk to become an entity processing chunk, it needs to be in the center of a 5x5 grid of loaded chunks. It is possible to use the method described above to create a grid of 5x5 loaded chunks.

## Chunk loader designs

### Remote chunk loaders using nether portals

When an entity enters a nether portal, it will load a 5x5 area of chunks having the chunk containing the portal in the middle. The outer chunks are lazy chunks. Using this mechanic it is possible to create machines that send items one way and the other to permanently load the chunks. It is the only design that works in Minecraft 1.14+.

### Remote chunk loaders using doors

Doors will tick themselves as long as they are part of a village. This allows for doors to remotely load chunks as long as the villager(s) that detect the doors are loaded. This does require additional chunk loading to make the villager's chunk entity processing.

### Remote chunk loaders using glitched arrows

Arrows continuously check the location of the block they are in, and this fact can be used to load chunks. If an arrow is shot into a dispenser, the arrow gets severely glitched and any player inside the section + a border of 3 blocks is able to pick up the arrow. If an arrow moves before the arrow is picked up, the arrows coordinates are set to NaN, which causes the arrow to teleport to the coordinates (0, 0). If the chunk at (0, 0) is an entity processing chunk, the chunk which fired the arrow becomes remotely loaded as a non-entity-processing chunk. Loading a 5x5 area of chunks around this chunk will allow it to process entities.