Chunk format

From Minecraft Wiki
Jump to: navigation, search
Clock JE3.gif
This article needs to be updated. 
Please update this page to reflect recent updates or newly available information.
Reason: missing information about 1.17 custom world heights (the way worlds with non-vanilla height are stored)

Chunks store the terrain and entities within a 16×256×16 area. They also store precomputed lighting, heightmap data for Minecraft's performance, and other meta information.

NBT structure[edit]

Chunks are stored as tags in regional Minecraft Anvil files, which are named in the form r.x.z.mca. They are stored in NBT format, with the following structure (see Block Format for the ordering of the blocks within each array):

  • The root tag.
    •  DataVersion: Version of the chunk NBT structure.
    •  Level: Chunk data.
      •  Biomes: May not exist. 1024 entries of biome data. Each number in the array is the biome for a 4x4x4 volume in the chunk, (e.g. the first value corresponding to a region from 0, 0, 0 to 3, 3, 3). These 4×4×4 volumes are arranged by X, then Z, then Y. That is, the first 4×4 values in the array are for the 16×16 chunk, at Y levels 0–3, the next 4×4 is for Y levels 4–7, etc. See Java Edition data values § Biomes for biome IDs. If this tag does not exist, it gets created and filled by Minecraft when the chunk is loaded and saved. If any values in this array correspond to an unknown biome, Minecraft also sets them to the biome that would normally generate in that location
      •  CarvingMasks:
        •  AIR: A series of bits indicating whether a cave has been dug at a specific position, stored in a byte array.
        •  LIQUID: A series of bits indicating whether an underwater cave has been dug at a specific position, stored in a byte array.
      •  Entities:‌[until JE 1.17] Each TAG_Compound in this list defines an entity in the chunk. See Entity Format below. If this list is empty, it becomes a list of End tags.
      •  Heightmaps: Several different heightmaps corresponding to 256 values compacted at 9 bits per value (lowest being 0, highest being 256, both values inclusive). The 9 bit values are stored in an array of 37 longs, each containing 7 values (long = 64 bits, 7 * 9 = 63; the last bit is unused). In versions prior to 1.16 the heightmaps were stored in 36 long values, where the bits were arranged in an uninterrupted "stream" across all values, resulting in all 2304 bits being used.
        •  MOTION_BLOCKING: The highest block that blocks motion or contains a fluid.
        •  MOTION_BLOCKING_NO_LEAVES: The highest block that blocks motion or contains a fluid or is in the minecraft:leaves tag.
        •  OCEAN_FLOOR: The highest non-air block, solid block.
        •  OCEAN_FLOOR_WG: The highest block that is neither air nor contains a fluid, for worldgen.
        •  WORLD_SURFACE: The highest non-air block.
        •  WORLD_SURFACE_WG: The highest non-air block, for worldgen.
      •  LastUpdate: Tick when the chunk was last saved.
      •  Lights: A List of 16 lists that store positions of light sources per chunk section during world generation as shorts.
      •  LiquidsToBeTicked: A List of 16 TAG_Lists that store positions of "active" liquids that need to be ticked, packed in TAG_Shorts. See ToBeTicked format below
      •  LiquidTicks: Each TAG_Compound in this list is an "active" liquid in this chunk waiting to be updated. See Tile Tick Format below.
      •  InhabitedTime: The cumulative number of ticks players have been in this chunk. Note that this value increases faster when more players are in the chunk. Used for regional difficulty: increases the chances of mobs spawning with equipment, the chances of that equipment having enchantments, the chances of spiders having potion effects, the chances of mobs having the ability to pick up dropped items, and the chances of zombies having the ability to spawn other zombies when attacked. Note that at values 3600000 and above, regional difficulty is effectively maxed for this chunk. At values 0 and below, the difficulty is capped to a minimum (thus, if this is set to a negative number, it behaves identically to being set to 0, apart from taking time to build back up to the positives). See Regional Difficulty for more specifics.
      •  PostProcessing: A List of 16 TAG_Lists that store positions of blocks that need to receive an update when a proto-chunk turns into a full chunk, packed in TAG_Shorts. See ToBeTicked format below for a description of the coordinate packing format.
      •  Sections: List of Compound tags, each tag is a sub-chunk of sorts.
        • An individual Section.
          •  BlockLight: 2048 bytes recording the amount of block-emitted light in each block. Makes load times faster compared to recomputing at load time. 4 bits per block.
          •  BlockStates: A variable amount of 64-bit longs, enough to fit 4096 indices. The indices correspond to the ordering of elements in the section's Palette. All indices are the same size in a section, which is the size required to represent the largest index (minimum of 4 bits). If the size of each index is not a factor of 64, the highest bits where no block index fits anymore are unused. Since Java Edition uses big-endian, indices inside one long are in reverse order, but the longs themselves are normally ordered. In versions prior to 1.16, the full range of bits is used, where the remaining bits of a block index continue on the next long value. (See Chunk format#Block_format)
          •  Palette: Set of different block states used in the chunk.
            • A Block
              •  Name: Namespaced block ID
              •  Properties: List of block state properties, with [name] being the name of the block state property
                •  Name: The block state name and its value.
          •  SkyLight: 2048 bytes recording the amount of sunlight or moonlight hitting each block. 4 bits per block.
          •  Y: The Y index (not coordinate) of this section. No duplicates but some sections may be missing if empty.
      •  Status: Defines the world generation status of this chunk. It is always one of the following: empty, structure_starts, structure_references, biomes, noise, surface, carvers, liquid_carvers, features, light, spawn, heightmaps or full.[1]
      •  TileEntities: Each TAG_Compound in this list defines a block entity in the chunk. See Block Entity Format below. If this list is empty, it becomes a list of End tags.
      •  TileTicks: Each TAG_Compound in this list is an "active" block in this chunk waiting to be updated. These are used to save the state of redstone machines or falling sand, and other activity. See Tile Tick Format below.
      •  ToBeTicked: A List of 16 TAG_Lists that store positions of "active" blocks that need to be ticked, packed in TAG_Shorts. See ToBeTicked format below
      •  Structures: Structure data in this chunk.
        •  References: Coordinates of chunks that contain Starts.
          •  Structure Name: Each 64-bit number of this array represents a chunk coordinate (i.e. block coordinate / 16), with its X packed into the low (least significant) 32 bits and Z packed into the high (most significant) 32 bits.
        •  Starts: Structures that are yet to be generated, stored by general type. Some parts of the structures may have already been generated. Completely generated structures are removed by setting their id to "INVALID" and removing all other tags.
          •  Structure Name: Only the structures that can spawn in this dimension are stored, for example, EndCity is stored only in the end chunks.
            •  BB: Bounding box of the entire structure (remaining Children). Value is 6 ints: the minimum X, Y, and Z coordinates followed by the maximum X, Y, and Z coordinates. Absent if id is INVALID.
            •  biome: The biome id this structure is in. Absent if id is INVALID.
            •  Children: List of structure pieces making up this structure, that were not generated yet. Absent if id is INVALID.
              • Structure piece data. [more information needed]
                •  BB: Bounding box of the structure piece. (Does not include the part of a village roof that can overhang the road.) Value is 6 ints: the minimum X, Y, and Z coordinates followed by the maximum X, Y, and Z coordinates.
                •  BiomeType: The ocean temperature this ocean ruins is in. Valid values are WARM and COLD.
                •  C: (Village "ViSmH") Hut roof type.[verify]
                •  CA: (Village "ViF" and "ViDF") Crop in the farm plot.[verify]
                  •  Name: Namespaced block ID
                  •  Properties: List of block state properties, with [name] being the name of the block state property
                    •  Name: The block state name and its value.
                •  CB: (Village "ViF" and "ViDF") Crop in the farm plot.[verify]
                  •  Name: Namespaced block ID
                  •  Properties: List of block state properties, with [name] being the name of the block state property
                    •  Name: The block state name and its value.
                •  CC: (Village "ViDF") Crop in the farm plot.[verify]
                  •  Name: Namespaced block ID
                  •  Properties: List of block state properties, with [name] being the name of the block state property
                    •  Name: The block state name and its value.
                •  CD: (Village "ViDF") Crop in the farm plot.[verify]
                  •  Name: Namespaced block ID
                  •  Properties: List of block state properties, with [name] being the name of the block state property
                    •  Name: The block state name and its value.
                •  Chest: 1 or 0 (true/false) - (Fortress "NeSCLT" and "NeSCRT") Whether this fortress piece should contain a chest but hasn't had one generated yet. (Stronghold "SHCC") Whether this chest in this stronghold piece was placed. (Village "ViS") Whether the blacksmith chest has been generated.
                •  D: (Mineshaft "MSCrossing") Indicates the "incoming" direction for the crossing.
                •  Depth: (Temples and huts) Depth of the structure (X/Z).
                •  Entrances: (Mineshaft "MSRoom") List of exits from the room.
                  • : Bounding box of the exit.
                •  EntryDoor: (Stronghold) The type of door at the entry to this piece.
                •  GD: Appears to be some sort of measure of how far this piece is from the start.
                •  hasPlacedChest0: 1 or 0 (true/false) - (Desert temple) Whether chest was placed.
                •  hasPlacedChest1: 1 or 0 (true/false) - (Desert temple) Whether chest was placed.
                •  hasPlacedChest2: 1 or 0 (true/false) - (Desert temple) Whether chest was placed.
                •  hasPlacedChest3: 1 or 0 (true/false) - (Desert temple) Whether chest was placed.
                •  Height: (Temples and huts) Height of the structure (Y).
                •  HPos: (Temples, huts and villages) Y level the structure was moved to in order to place it on the surface, or -1 if it hasn't been moved yet.[verify]
                •  hps: 1 or 0 (true/false) - (Mineshaft "MSCorridor") Whether the corridor has a cave spider spawner.
                •  hr: 1 or 0 (true/false) - (Mineshaft "MSCorridor") Whether the corridor has rails.
                •  id: Identifier for the structure piece. Typically a heavily abbreviated code rather than something human-readable.
                •  integrity: The integrity of this structure (only used by ocean ruins).
                •  isLarge: 1 or 0 (true/false) - If this ocean ruin is big.
                •  junctions: (Village) List of junction points. [more information needed][verify]
                    •  source_x: Block coordinate.
                    •  source_ground_y: Block coordinate.
                    •  source_z: Block coordinate.
                    •  delta_y:
                    •  dest_proj: One of terrain_matching or rigid.
                •  Left: 1 or 0 (true/false) - (Stronghold "SHS") Whether the corridor has an opening on the left.
                •  leftHigh: 1 or 0 (true/false) - (Stronghold "SH5C") Whether the 5-way crossing has an exit on the upper level on the side with the upward staircase.
                •  leftLow: 1 or 0 (true/false) - (Stronghold "SH5C") Whether the 5-way crossing has an exit on the lower level on the side with the upward staircase.
                •  Length: (Village "ViSR") Length of the road piece.[verify]
                •  Mob: 1 or 0 (true/false) - (Fortress "NeMT") Whether this fortress piece should contain a Blaze spawner but hasn't had one generated yet. (Stronghold "SHPR") Whether the Silverfish spawner has been placed in this piece.
                •  Num: (Mineshaft "MSCorridor") Corridor length.
                •  O: Likely orientation of the structure piece.
                •  placedHiddenChest: 1 or 0 (true/false) - (Jungle temple) Whether the hidden chest was placed.
                •  placedMainChest: 1 or 0 (true/false) - (Jungle temple) Whether the main chest was placed.
                •  placedTrap1: 1 or 0 (true/false) - (Jungle temple) Whether the hallway arrow trap dispenser was placed.
                •  placedTrap2: 1 or 0 (true/false) - (Jungle temple) Whether the chest arrow trap dispenser was placed.
                •  PosX: The X coordinate origin of this village part.[verify]
                •  PosY: The Y coordinate origin of this village part.[verify]
                •  PosZ: The Z coordinate origin of this village part.[verify]
                •  Right: 1 or 0 (true/false) - (Stronghold "SHS") Whether the corridor has an opening on the right.
                •  rightHigh: 1 or 0 (true/false) - (Stronghold "SH5C") Whether the 5-way crossing has an exit on the upper level on the side with the downward staircase.
                •  rightLow: 1 or 0 (true/false) - (Stronghold "SH5C") Whether the 5-way crossing has an exit on the lower level on the side with the downward staircase.
                •  Rot: Rotation of ocean ruins and shipwrecks. Valid values are COUNTERCLOCKWISE_90, NONE, CLOCKWISE_90, and CLOCKWISE_180.
                •  sc: 1 or 0 (true/false) - (Mineshaft "MSCorridor") Whether the corridor has cobwebs.
                •  Seed: (Fortress "NeBEF") Random seed for the broken-bridge fortress piece.
                •  Source: 1 or 0 (true/false) - (Stronghold "SHSD") Whether the spiral staircase is the source of the Stronghold or was randomly generated.
                •  Steps: (Stronghold "SHFC") Length of the corridor
                •  T: (Village "ViSmH") Table: 0 is no table, 1 and 2 place it on either side of the hut.[verify]
                •  Tall: 1 or 0 (true/false) - (Stronghold "SHLi") Whether the library has an upper level.
                •  Template: The template of the ocean ruin or shipwreck that was used.
                •  Terrace: 1 or 0 (true/false) - (Village "ViSH") Whether the house has a ladder to the roof and fencing.[verify]
                •  tf: 1 or 0 (true/false) - (Mineshaft "MSCrossing") Whether the crossing is two floors tall.
                •  TPX: The X coordinate origin of this ocean ruin or shipwreck.
                •  TPY: The Y coordinate origin of this ocean ruin or shipwreck.
                •  TPZ: The Z coordinate origin of this ocean ruin or shipwreck.
                •  Type: (Village) Village type: 0=plains, 1=desert, 2=savanna, 3=taiga.[verify]
                •  Type: (Stronghold "SHRC") Indicates whether the room contains a pillar with torches, a fountain, an upper level with a chest, or is just empty room.
                •  VCount: (Village) Count of villagers spawned along with this piece.[verify]
                •  Width: (Temples and huts) Width of the structure (X/Z).
                •  Witch: 1 or 0 (true/false) - (Witch hut) Whether the initial witch has been spawned for the hut.
                •  Zombie: 1 or 0 (true/false) - (Village) Whether this village generated as a zombie village.[verify]
            •  ChunkX: Chunk X coordinate of the start of the structure. Absent if id is INVALID.
            •  ChunkZ: Chunk Z coordinate of the start of the structure. Absent if id is INVALID.
            •  id: If there's no structure of this kind in this chunk, this value is "INVALID", else it's the structure name.
            •  Processed: (Monument only) List of chunks that have had their piece of the structure created. Absent if id is INVALID.
              • : A chunk.
                •  X: The chunk's X position (chunk coordinates, not block coordinates).
                •  Z: The chunk's Z position.
            •  Valid: 1 or 0 (true/false) - (Village only) Whether the village generated at least 3 non-roads. Absent if id is INVALID.
      •  xPos: X position of the chunk (in chunks, from the origin, not relative to region).
      •  zPos: Z position of the chunk (in chunks, from the origin, not relative to region).

Block format[edit]

In the Anvil format, block positions are ordered YZX for compression purposes.

The coordinate system is as follows:

  • X increases East, decreases West
  • Y increases upward, decreases downward
  • Z increases South, decreases North

This means indices are ordered like in a book, with its top to the North, read from beneath and with words written backward: each letter is a different X-index, each line a Z-index, and each page a Y-index. In case of a flat 2D array, the Y-index is omitted, and the array reads like a single page.

Each section is a 16×16×16-block area, with up to 16 sections in a chunk : from 0 at the bottom, to 15 on top. Empty sections are not saved. Each section has a "Y" byte for its Y-index (0 to 15), a "Palette" list linking IDs to block states, and a "BlockStates" long array storing the IDs per block location, compressed by fitting multiple IDs inside each entry. There is an additional section at the top and bottom of the world used to store light, so that light travels proverly over and under the world limits.

The "BlockLight" byte array is for block light levels. The "SkyLight" byte array stores the maximum sky light that reaches each block, regardless of current time. Each of them are 2048 bytes long, and both are omitted if no light reaches this section of the chunk. Light level is stored as 4 bits per block, 2 blocks sharing a byte : starting at 0, even blocks take the first nibble, and odd blocks the second one. This is the only known instance of small-endian data storage in Java Edition.

The pseudo-code below shows how to access individual block information from a single section. Hover over text to see additional information or comments.

byte Nibble4(byte[] arr, int index){ return index%2 == 0 ? arr[index/2]&0x0F : (arr[index/2]>>4)&0x0F; }
int BlockPos = y*16*16 + z*16 + x;
compound Block = Palette[change_array_element_size(BlockStates,Log2(length(Palette)))[BlockPos]]
string BlockName = Block.Name;
compound BlockState = Block.Properties;
byte Blocklight = Nibble4(BlockLight, BlockPos);
byte Skylight = Nibble4(SkyLight, BlockPos);

Entity format[edit]

Every entity is an unnamed  TAG_Compound contained in the Entities list of a chunk file. The sole exception is the Player entity, stored in level.dat, or in <player>.dat files on servers. All entities share this base:

  • Entity data
    •  Air: How much air the entity has, in ticks. Fills to a maximum of 300 in air, giving 15 seconds submerged before the entity starts to drown, and a total of up to 35 seconds before the entity dies (if it has 20 health). Decreases while underwater. If 0 while underwater, the entity loses 1 health per second.
    •  CustomName: The custom name JSON text component of this entity. Appears in player death messages and villager trading interfaces, as well as above the entity when the player's cursor is over it. May be empty or not exist.
    •  CustomNameVisible: 1 or 0 (true/false) - if true, and this entity has a custom name, the name always appears above the entity, regardless of where the cursor points. If the entity does not have a custom name, a default name is shown. May not exist.
    •  FallDistance: Distance the entity has fallen. Larger values cause more damage when the entity lands.
    •  Fire: Number of ticks until the fire is put out. Negative values reflect how long the entity can stand in fire before burning. Default -20 when not on fire.
    •  Glowing: 1 or 0 (true/false) - true if the entity has a glowing outline.
    •  id: String representation of the entity's ID. Does not exist for the Player entity.
    •  Invulnerable: 1 or 0 (true/false) - true if the entity should not take damage. This applies to living and nonliving entities alike: mobs should not take damage from any source (including potion effects), and cannot be moved by fishing rods, attacks, explosions, or projectiles, and objects such as vehicles and item frames cannot be destroyed unless their supports are removed. Invulnerable player entities are also ignored by any hostile mobs. Note that these entities can be damaged by players in Creative mode.
    •  Motion: 3 TAG_Doubles describing the current dX, dY and dZ velocity of the entity in meters per tick.
    •  NoGravity: 1 or 0 (true/false) - if true, the entity does not fall down naturally. Set to true by striders in lava.
    •  OnGround: 1 or 0 (true/false) - true if the entity is touching the ground.
    •  Passengers: The data of the entity that is riding this entity. Note that both entities control movement and the topmost entity controls spawning conditions when created by a mob spawner.
      • See this format (recursive).
    •  PortalCooldown: The number of ticks before which the entity may be teleported back through a nether portal. Initially starts at 300 ticks (15 seconds) after teleportation and counts down to 0.
    •  Pos: 3 TAG_Doubles describing the current X, Y and Z position of the entity.
    •  Rotation: Two TAG_Floats representing rotation in degrees.
      • The entity's rotation clockwise around the Y axis (called yaw). Due south is 0. Does not exceed 360 degrees.
      • The entity's declination from the horizon (called pitch). Horizontal is 0. Positive values look downward. Does not exceed positive or negative 90 degrees.
    •  Silent: 1 or 0 (true/false) - if true, this entity is silenced. May not exist.
    •  Tags: List of scoreboard tags of this entity.
    •  TicksFrozen:‌[upcoming: JE 1.17] Optional. How many ticks the entity has been freezing. Although this tag is defined for all entities, it is actually only used by mobs that are not in the freeze_immune_entity_types entity type tag. Ticks up by 1 every tick while in powder snow, up to a maximum of 300 (15 seconds), and ticks down by 2 while out of it.
    •  UUID: This entity's Universally Unique IDentifier. The 128-bit UUID is stored as four 32-bit integers, ordered from most to least significant.


Mob Entities
Entity ID Name
axolotl Axolotl[upcoming: JE 1.17]
bat Bat
bee Bee
blaze Blaze
cat Cat
cave_spider Cave Spider
chicken Chicken
cod Cod
cow Cow
creeper Creeper
dolphin Dolphin
donkey Donkey
drowned Drowned
elder_guardian Elder Guardian
ender_dragon Ender Dragon
enderman Enderman
endermite Endermite
evoker Evoker
fox Fox
ghast Ghast
giant Giant
glow_squid Glow Squid[upcoming: JE 1.17]
goat Goat[upcoming: JE 1.17]
guardian Guardian
hoglin Hoglin
horse Horse
husk Husk
illusioner Illusioner
iron_golem Iron Golem
llama Llama
magma_cube Magma Cube
mooshroom Mooshroom
mule Mule
ocelot Ocelot
panda Panda
parrot Parrot
phantom Phantom
pig Pig
piglin Piglin
piglin_brute Piglin Brute
pillager Pillager
polar_bear Polar Bear
pufferfish Pufferfish
rabbit Rabbit
ravager Ravager
salmon Salmon
sheep Sheep
shulker Shulker
silverfish Silverfish
skeleton Skeleton
skeleton_horse Skeleton Horse
slime Slime
snow_golem Snow Golem
spider Spider
strider Strider
squid Squid
stray Stray
trader_llama Trader Llama[Java Edition only]
tropical_fish Tropical Fish
turtle Turtle
vex Vex
villager Villager
villager_v2 Villager[Bedrock Edition only]
vindicator Vindicator
wandering_trader Wandering Trader
witch Witch
wither Wither
wither_skeleton Wither Skeleton
wolf Wolf
zoglin Zoglin
zombie Zombie
zombie_horse Zombie Horse
zombie_villager Zombie Villager
zombie_villager_v2 Zombie Villager[Bedrock Edition only]
zombified_piglin Zombified Piglin

Mobs are a subclass of Entity with additional tags to store their health, attacking/damaged state, potion effects, and more depending on the mob. Players are a subclass of Mob.


Projectile Entities
Entity ID Name
arrow Arrow
dragon_fireball Ender Dragon Fireball
egg Egg
ender_pearl Ender Pearl
experience_bottle Bottle o' Enchanting
fireball Ghast Fireball
firework_rocket Firework Rocket
llama_spit Llama spit
potion Splash Potion
small_fireball Blaze Fireball/Fire Charge
shulker_bullet Shulker Bullet
snowball Snowball
spectral_arrow Spectral Arrow[Java Edition only]
trident Trident
wither_skull Wither Skull

Projectiles are a subclass of Entity.

Items and XP Orbs[edit]

Item Entities
Entity ID Name
experience_orb Experience Orb
item Dropped Item

Items and XPOrbs are a subclass of Entity.


Vehicle Entities
Entity ID Name
boat Boat
minecart Minecart
chest_minecart Minecart with Chest
command_block_minecart Minecart with Command Block
furnace_minecart Minecart with Furnace
hopper_minecart Minecart with Hopper
spawner_minecart Minecart with Spawner
tnt_minecart Minecart with TNT

Vehicles are subclasses of Entity.

Dynamic tiles[edit]

Dynamic Block Entities
Entity ID Name
falling_block Dynamic Tile
tnt TNT

Dynamic tiles are a subclass of Entity and are used to simulate realistically moving blocks.


Other Entities
Entity ID Name
area_effect_cloud Area Effect Cloud
armor_stand Armor Stand
end_crystal End Crystal
evoker_fangs Evoker Fangs
eye_of_ender Eye of Ender
fishing_bobber Fishing Bobber
item_frame Item Frame
leash_knot Lead Knot
lightning_bolt Lightning Bolt
marker Marker[upcoming: JE 1.17]
painting Painting

Other entity types that are a subclass of Entity but do not fit into any of the above categories.

Block entity format[edit]

Block Entities
Block Entity ID Associated Block
banner Banner
barrel Barrel
beacon Beacon
bed Bed
beehive Bee nest/beehive
bell Bell
blast_furnace Blast Furnace
brewing_stand Brewing Stand
campfire Campfire
cauldron Cauldron[BE only]
chest Chest
comparator Redstone Comparator
command_block Command Block
conduit Conduit
daylight_detector Daylight Detector
dispenser Dispenser
dropper Dropper
enchanting_table Enchanting Table
ender_chest Ender Chest
end_gateway End Gateway
end_portal End Portal
furnace Furnace
hopper Hopper
jigsaw Jigsaw Block
jukebox Jukebox
lectern Lectern
mob_spawner Spawner
piston Moving Piston
shulker_box Shulker Box
sign Sign
skull Mob head
smoker Smoker
soul_campfire Soul Campfire
structure_block Structure Block
trapped_chest Trapped Chest

A block entity (not related to entity) is used by Minecraft to store information about a block that can't be stored in the block's block states. Block entities were called "tile entities" until the 1.8 snapshots and that term is still used in some command usage.

Tile tick format[edit]

Tile Ticks represent block updates that need to happen because they could not happen before the chunk was saved. Examples reasons for tile ticks include redstone circuits needing to continue updating, water and lava that should continue flowing, recently placed sand or gravel that should fall, etc. Tile ticks are not used for purposes such as leaf decay, where the decay information is stored in the leaf block data values and handled by Minecraft when the chunk loads. For map makers, tile ticks can be used to update blocks after a period of time has passed with the chunk loaded into memory.

  • A Tile Tick
    •  i: The ID of the block; used to activate the correct block update procedure.
    •  p: If multiple tile ticks are scheduled for the same tick, tile ticks with lower p are processed first. If they also have the same p, the order is unknown.
    •  t: The number of ticks until processing should occur. May be negative when processing is overdue.
    •  x: X position
    •  y: Y position
    •  z: Z position

ToBeTicked format[edit]

This TAG_List is always present, and contains 16 TAG_lists, each representing one of the "sections" of the chunk. Those inside lists may contain TAG_Shorts, each representing a packed coordinate relative to the section : The 4 most significant bits are always 0, then each group of 4 bits (or nibble) represents a section-relative coordinate, from 0 to 15. The order of sections in the list, and the packing order of the coordinates are as of yet undocumented.


Clock JE3.gif
This section needs to be updated. 
Please update this section to reflect recent updates or newly available information.
Reason: This history section is missing a significant number of changes, including most of the 1.13 changes, mainly the region file format.

Chunks were first introduced in Java Edition Infdev. Before the addition of the MCRegion format in Beta 1.3, chunks were stored as individual chunk files ".dat" where the file names contained the chunk's position encoded in Base36 - this is known as the Java Edition Alpha level format. MCRegion changed this by storing groups of 32×32 chunks in individual ".mcr" files with the coordinates in Base10, with the goal being to reduce disk usage by cutting down on the number of file handles Minecraft had open at once. MCRegion's successor is the current format, Anvil, which made changes only to the chunk format. The region file technique is still used, but the region file extensions are ".mca" instead.

The major change from MCRegion to Anvil was the division of Chunks into Sections; each chunk has up to 16 individual 16×16×16 block Sections so that completely empty sections are not saved at all. Preparation has also been made to support blocks with IDs in the range 0 to 4095, as compared to the previous 0 to 255 limitation. However, Minecraft is not fully prepared for such blocks to exist as items; many item IDs are already taken in the range 256 to 4095.

The Blocks, Data, BlockLight, and SkyLight arrays are now housed in individual chunk Sections. The Data, SkyLight, and BlockLight are arrays of 4-bit values, and the BlockLight and SkyLight arrays no longer house part of the block ID. The Blocks array is 8 bits per block, and the 4096-blocks support exists in the form of an optional Add byte array of 4-bits per block for additional block ID information. With the Anvil format, the NBT Format was changed from Notch's original specification to include an integer array tag similar to the existing byte array tag. It is currently used only for HeightMap information in chunks.

Java Edition
1.3.112w21aMaxExperience, RemainingExperience, ExperienceRegenTick, ExperienceRegenRate and ExperienceRegenAmount from MobSpawner have been removed.
1.4.212w34aAdded entity WitherBoss.
1.513w02aAdded entity MinecartTNT.
Minecart is now deprecated.
13w03aAdded entity MinecartHopper.
13w06aAdded entity MinecartSpawner.
1.6.113w16aAdded entity EntityHorse.
13w21aArmorType has been removed from EntityHorse.
Saddle has been removed from EntityHorse.
releaseSaddle to EntityHorse has been re-added.
1.7.213w39aAdded entity MinecartCommandBlock.
1.814w02aAdded Lock to containers.
Item IDs are no longer used when specifying NBT data.
Added Block to FallingSand, using the alphabetical ID format.
14w06aAdded ShowParticles to all mobs.
Added PickupDelay to item entities.
Setting Age to -32768 makes items, which never expire.
AttackTime has been removed from mobs.
14w10aAdded rewardExp to Villager.
Added OwnerUUID for mobs that can breed.
Added Owner to Skull.
Changes to item frames and paintings: added Facing, TileX, TileY and TileZ now represent the co-ordinates of the block the item is in rather than what it is placed on. Direction and Dir are now deprecated.
14w11aAdded entity Endermite.
Added EndermiteCount to Enderman.
14w21aCustomName and CustomNameVisible now work for all entities.
14w25aAdded entity Guardian.
Added Text1, Text2, Text3 and Text4 to signs. The limit no longer depends on the amount of characters (16), it now depends on the width of the characters.
14w27aAdded entity Rabbit. Added CommandStats to command blocks and signs.
14w28aEndermiteCount has been removed from Enderman.
14w30aAdded Silent for all entities.
14w32aAdded NoAI for all mobs.
Added entity ArmorStand.
14w32cAdded NoBasePlate to ArmorStand.
1.915w31aAdded tags HandItems, ArmorItems, HandDropChances, and ArmorDropChances to Living, which now replace the DropChances and Equipment tags.
Added HandItems and ArmorItems to ArmorStand.
Added Glowing to Entity.
Added Team to LivingBase.
Added DragonPhase to EnderDragon
Added entity Shulker, child of Entity.
Added entity ShulkerBullet, child of Entity.
Added entity DragonFireball, which extends FireballBase and has no unique tags.
Added entities TippedArrow and SpectralArrow, children of Arrow.
Added block EndGateway, child of TileEntity.
Added block Structure, child of TileEntity.
Added item tag Potion, child of tag.
15w32aTags and DataVersion tag can now be applied on entities.
Changed the Fuse tag's type for the PrimedTnt entity from "Byte" to "Short".
15w32cIntroduced a limit on the amount of tags an entity can now have (1024 tags). When surpassed it displays an error saying: "Cannot add more than 1024 tags to an entity."
15w33aAdded entity AreaEffectCloud, child of Entity.
Added ExactTeleport and renamed Life to Age for EndGateway.
Added Linger to ThrownPotion.
DataVersion from Entity has been removed. It is now applied to Player only, child of LivingBase.
UUID from Entity has been removed.
HealF under LivingBase has now become deprecated.
Health under LivingBase has now changed from type "Short" to "Float".
Equipment has been removed from ArmorStand and Living entity, its usage is now replaced by HandItems and ArmorItems, which were added earlier.
15w33cAdded BeamTarget to EnderCrystal.
15w34aAdded powered and conditional byte tags to Control tile entity for command blocks.
Added life and power to FireballBase.
Added id inside SpawnData to MobSpawner.
Added powered to the Music tile entity for note blocks.
15w35aAdded VillagerProfession to Zombie.
15w37aAdded Enabled to MinecartHopper.
15w38aAdded SkeletonTrap and SkeletonTrapTime to EntityHorse.
15w41aRiding has been replaced with Passengers for all entities.
Added RootVehicle for all passengers.
Added Type to Boat.
15w42aAdded Fuel to Cauldron (brewing stands).
15w43aAdded LootTable and LootTableSeed to Chest, Minecart and MinecartHopper.
Added DeathLootTable and DeathLootTableSeed to all mobs.
Added life and power to all fireballs (FireballBase).
15w44aAdded ShowBottom to EnderCrystal.
15w44bAdded Potion and CustomPotionEffects to Arrow.
Added Potion to AreaEffectCloud.
15w45aLinger has been removed from ThrownPotion. Instead, the potion lingers if the stored item has an ID of minecraft:lingering_potion.
ThrownPotion now renders as its stored item, even if the item is not a potion.
15w46aMoreCarrotTicks from Rabbit is now set to 40 when rabbits eat a carrot crop, but is not used anyway.
15w47aAdded PaymentItem to Beacon.
15w49aPaymentItem has been removed from Beacon.
In order for a sign to accept text, all 4 tags ("Text1", "Text2", "Text3", and "Text4") must exist.
15w51bThe original values of DisabledSlots in ArmorStand have been changed in nature.
1.1016w20aAdded entity PolarBear.
Added ZombieType to Zombie, replacing VillagerProfession and IsVillager. Value of 6 indicates the "husk" zombie.
A value of 2 on SkeletonType indicates the "stray" skeleton.
NoGravity extended to all entities.
Added powered, showboundingbox and showair to Structure.
16w21aAdded FallFlying to mobs and armor stands.
Added integrity and seed to Structure.
pre1Added ParticleParam1 and ParticleParam2 to AreaEffectCloud.
1.1116w32aHorses have been split into entity IDs horse, donkey, mule, skeleton_horse and zombie_horse for their respective types. Type and HasReproduced removed from horse, ChestedHorse and Items tags now apply only to mule and donkey, and SkeletonTrap and SkeletonTrapTime tags now apply only to skeleton_horse.
Skeletons have been split into entity IDs skeleton, stray and wither_skeleton. SkeletonType tag is removed from all skeleton types.
Zombies have been split into entity IDs zombie, zombie_villager and husk. ZombieType tag is removed from all zombie types, ConversionTime and Profession tags now apply only to zombie_villager.
Guardians have been split into entity IDs guardian and elder_guardian. Elder tag has been removed from guardian.
Unused savegame IDs Mob and Monster have been removed.
Pumpkin byte tag has been added to snowman.
16w35aAdded CustomName to banner.
16w39aAdded llama, llama_spit, vindication_illager, vex, evocation_fangs and evocation_illager.
Added Color to shulker.
Added LocName, CustomPotionColor and ColorMap to items.
16w40aAdded Johnny to vindication_illager.
Removed xTile, yTile, zTile, inTile, inGround from the FireballBase class (in large fireballs, small fireballs, dragon fireballs, and wither skulls).
16w41allama_spit is now available as a save game entity.
16w42aAdded crit to arrow.
16w43aAdded OwnerUUIDLeast and OwnerUUIDMost to evocation_fangs.
16w44axTile, yTile, zTile, inTile, inGround have been removed from the fishing bobber entity.
pre1ench has been changed to require at least one compound.
1.1217w13aAdded entity Parrot, ShoulderEntityLeft/ShoulderEntityRight, seenCredits, recipeBook and Recipes.
17w14aAdded isFilteringCraftable, isGuiOpen and recipes to recipeBook, which is now a compound tag.
Added ConversionPlayerLeast and ConversionPlayerMost to entity Zombie.
17w16aNBT parsing in commands has been improved.
17w17aAdded toBeDisplayed to recipeBook, UpdateLastExecution and LastExecution.
17w17bAdded LoveCauseLeast and LoveCauseMost to breedable entities.
1.1317w47aThe damage tag from items removed, tools and armor now use Damage and maps use map, both in tag.
Endermen's carried and carriedData merged into carriedBlockState.
Arrows' inTile and inData merged into inBlockState.
Minecarts' DisplayTile and DisplayData merged into DisplayState.
Falling blocks' Block and Data merged into BlockState.
Moving pistons' BlockId and BlockData merged into blockState.
Removed note block and flower pot block entities.
Trapped chests now have their own block entity trapped_chest.
Removed Base from banners.
Removed Rot from heads.
17w47aRemoved Record from jukeboxes.
17w47bTrapped chests no longer have their own block entity, and again use chest.
18w01aThrower and Owner has been changed from strings to compounds with two longs named L and M.
18w02aBobbers created by fishing rods now have the entity ID fishing_bobber.
Painting motives are now lowercased and namespaced.
18w07aAdded turtle, trident, and phantom entities.
Added HomePosX, HomePosY, HomePosZ, TravelPosX, TravelPosY, TravelPosZ, and HasEgg to turtle.
Added AX, AY, AZ, and Size to phantom.
18w15aAdded dolphin entity.
18w19aRenamed puffer_fish to pufferfish.
18w20aRenamed cod_mob to cod.
Renamed salmon_mob to salmon.
18w21aAdded TreasurePosX, TreasurePosY, TreasurePosZ, GotFish, and CanFindTreasure to dolphin.
ench has been renamed to Enchantments.
Enchantments no longer accepts numeric IDs, and instead requires name IDs.
pre5Renamed xp_orb to experience_orb.
Renamed xp_bottle to experience_bottle.
Renamed eye_of_ender_signal to eye_of_ender.
Renamed ender_crystal to end_crystal.
Renamed fireworks_rocket to firework_rocket.
Renamed commandblock_minecart to command_block_minecart.
Renamed villager_golem to iron_golem.
Renamed evocation_fangs to evoker_fangs.
Renamed evocation_illager to evoker.
Renamed vindication_illager to vindicator.
Renamed illusion_illager to illusioner.
1.1418w43aAdded illager_beast, panda, and pillager entities.
18w45aThe LIGHT_BLOCKING heightmap has been removed.
1.1519w36aThe  Biomes array in the  Level tag for each chunk now contains 1024 integers instead of 256, allowing biomes to differ based on altitude.
Upcoming Java Edition
1.1720w51aAdded axolotl.
21w03aAdded glow_squid.