Level format

From Minecraft Wiki
Jump to: navigation, search
Information icon.svg
This feature is exclusive to Java Edition.
Arrow right.png
It has been suggested that this page be moved to Java Edition level format. Do not move the page until a consensus is reached. Discuss
When moving, be sure to use the appropriate tool instead of simply copying and pasting the page's contents, to preserve edit history.

Each level is its own folder. A level folder is often identified by having a level.dat file, along with other subfolders to store the maps and regions of the level.

Level folders will always contain the items in bold, and will sometimes contain the items in italics.

Relative Path Article Description
/level.dat (below) Stores global information about the level.
/level.dat_new Program writes new global information about the level and after that file is renamed to level.dat
/level.dat_mcr A backup of the level.dat file before conversion from MCRegion to Anvil.
/level.dat_old A backup of the level.dat file before conversion from the Alpha level format to MCRegion or Anvil. [citation needed]
/session.lock (below) Used to give write access to the last program to modify this file.
/players/<player>.dat Player.dat format Stores the individual states of the players that have played on this level, for versions before 1.7.6.
/playerdata/<uuid>.dat Player.dat format Stores the individual states of the players that have played on this level, since 1.7.6.
/stats/<uuid>.json Statistics storage format Stores the statistics of the players that have played on this level, since 1.7.2.
/advancements/<uuid>.json TBD Stores the advancements and unlocked recipes of the players that have played on this level, since 17w13a.
/data/command_storage_<namespace>.dat[upcoming: JE 1.15] Command storage format Stores information about the general purpose, key/value command storage, since 19w38a.
/data/idcounts.dat
/data/map_<#>.dat
Map item format Stores the map data for the craftable Map items.
/data/villages.dat
/data/villages_nether.dat
/data/villages_end.dat
villages.dat format Stores information about the Villages in the world. The "nether" and "end" files have been added in 1.8. Replaced by point of interest region files in 1.14.
/poi/

/DIM-1/poi/

/DIM1/poi/

(below) Villager identified beds, job sites, and bells in the world.
/data/raids.dat
/DIM-1/data/raids_nether.dat
/DIM1/data/raids_end.dat
raids.dat format Stores information about the ongoing raids in the world.
/datapacks/ Data pack Stores the world's data packs.
/region/ Contains region files for the Overworld.
/DIM-1/region/ Contains region files for The Nether.
/DIM1/region/ Contains region files for The End.
/region/r.<#>.<#>.mca
/DIM-1/region/r.<#>.<#>.mca
/DIM1/region/r.<#>.<#>.mca

/poi/r.<#>.<#>.mca

/DIM-1/poi/r.<#>.<#>.mca

/DIM1/poi/r.<#>.<#>.mca

Anvil file format Individual region files.
/region/r.<#>.<#>.mcr
/DIM-1/r.<#>.<#>.mcr
/DIM1/r.<#>.<#>.mcr
Region file format Backups of the region files before conversion from MCRegion to Anvil.
/<#>/<#>/c.<#>.<#>.dat Alpha level format Backups of the chunk files before conversion from the Alpha level format to MCRegion.

level.dat format[edit]

The level.dat file contains global information about the world such as the time of day, the singleplayer player, the level generator used, and the seed. It is an NBT file with this structure:

  • The root tag.
    •  Data: This tag contains all the level data.
      •  allowCommands: 1 or 0 (true/false) - true if cheats are enabled.
      •  BorderCenterX: Center of the world border on the X coordinate. Defaults to 0.
      •  BorderCenterZ: Center of the world border on the Z coordinate. Defaults to 0.
      •  BorderDamagePerBlock: Defaults to 0.2.
      •  BorderSize: Width and length of the border of the border. Defaults to 60000000.
      •  BorderSafeZone: Defaults to 5.
      •  BorderSizeLerpTarget: Defaults to 60000000.
      •  BorderSizeLerpTime: Defaults to 0.
      •  BorderWarningBlocks: Defaults to 5.
      •  BorderWarningTime: Defaults to 15.
      •  clearWeatherTime: The number of ticks until "clear weather" has ended.
      •  CustomBossEvents: A collection of bossbars.
        •  ID: The ID of a bossbar (e.g. custom:boss)
          •  Players: A list of players that may see this boss bar.
          •  Color: ID of the color of the bossbar. Also sets the color of the display text of the bossbar, provided that the display text does not explicitly define a color for itself. See color codes for accepted values.
          •  CreateWorldFog: 1 or 0 (true/false) - If the bossbar should create fog.
          •  DarkenScreen: 1 or 0 (true/false) - If the bossbar should darken the sky.
          •  Max: The maximum health of the bossbar.
          •  Value: The current health of the bossbar.
          •  Name: The display name of the bossbar as a JSON text component.
          •  Overlay: The ID of the overlay to be shown over the health bar. Accepted values are: progress, notched_6, notched_10, notched_12, and notched_20.
          •  PlayBossMusic: 1 or 0 (true/false) - If the bossbar should initiate boss music.
          •  Visible: 1 or 0 (true/false) - If the bossbar should be visible to the listed players.
      •  DataPacks: Options for datapacks.
        •  Disabled: List of disabled datapacks.
          • : A single datapack.
        •  Enabled: List of enabled datapacks. By default, this is populated with a single string "vanilla".
          • : A single datapack.
      •  DataVersion: An integer displaying the data version.
      •  Difficulty: The current difficulty setting. 0 is Peaceful, 1 is Easy, 2 is Normal, and 3 is Hard. Defaults to 2.
      •  DifficultyLocked: 1 or 0 (true/false) - True if the difficulty has been locked. Defaults to 0.
      •  DayTime: The time of day. 0 is sunrise, 6000 is mid day, 12000 is sunset, 18000 is mid night, 24000 is the next day's 0. This value keeps counting past 24000 and does not reset to 0.
      •  DimensionData: This tag contains level data specific to certain dimensions.
        •  1: Data for The End
          •  DragonFight: Data for the ender dragon fight. Only appears after the end is entered.
            •  ExitPortalLocation: Location of the End's exit portal that the ender dragon flies to upon it's death
              •  X: The X coordinate of the portal.
              •  Y: The Y coordinate of the portal.
              •  Z: The Z coordinate of the portal.
            •  Gateways: Contains a list of locations of the End gateway portals that haven't been spawned.
              • : The angle of a future gateway, from 0 to 19. 0 is east of the exit portal, and numbers increase clockwise.
            •  DragonKilled: 1 or 0 (true/false) - If the dragon is currently alive.
            •  DragonUUIDLeast: The least significant bits of the current Ender Dragon's Universally Unique IDentifier. This is joined with DragonUUIDMost to form the dragon's unique ID.
            •  DragonUUIDMost: The most significant bits of the current Ender Dragon's Universally Unique IDentifier. This is joined with DragonUUIDLeast to form the dragon's unique ID.
            •  PreviouslyKilled: 1 or 0 (true/false) - If the ender dragon has ever been defeated. Used to determine EXP given by dragon
      •  GameType: The default game mode for the singleplayer player when they initially spawn. 0 is Survival, 1 is Creative, 2 is Adventure, 3 is Spectator. Note: Singleplayer worlds do not use this field to save which game mode the player is currently in.
      •  GameRules: The gamerules used in the world.
        •  Rule name: The value for the given rule. This is always an NBT string, which is either true or false for the majority of rules (with it being a number for some other rules, and any arbitrary string for a user-defined rule)
      •  generatorName: The name of the generator; default, flat, largeBiomes, amplified, buffet, debug_all_block_states or default_1_1. Not case sensitive, but always written in the case here. The last one can only exist if the file was edited. It is a variation of the default generation. It can also be customized if it is a customized world from before 1.13. In this case the world will become default if opened using 1.13 or newer.
      •  generatorOptions: Used in buffet, superflat and old customized worlds. Format below.
      •  generatorVersion: The version of the level generator. The effects of changing this are unknown, but values other than 0 have been observed.
      •  hardcore: 1 or 0 (true/false) - true if the player will respawn in Spectator on death in singleplayer. Affects all three game modes.
      •  initialized: 1 or 0 (true/false) - Normally true after a world has been initialized properly after creation. If the initial simulation was canceled somehow, this can be false and the world will be re-initialized on next load.
      •  LastPlayed: The Unix time in milliseconds when the level was last loaded.
      •  LevelName: The name of the level.
      •  MapFeatures: 1 or 0 (true/false) - true if the map generator should place structures such as villages, strongholds, and mineshafts. Defaults to 1. Always 1 if the world type is Customized.
      •  Player: The state of the Singleplayer player. This overrides the <player>.dat file with the same name as the Singleplayer player. This is only saved by Servers if it already exists, otherwise it is not saved for server worlds. See Player.dat Format.
      •  RandomSeed: The random level seed used to generate consistent terrain.
      •  raining: 1 or 0 (true/false) - true if the level is currently experiencing rain, snow, and cloud cover.
      •  rainTime: The number of ticks before "raining" is toggled and this value gets set to another random value.
      •  SizeOnDisk: The estimated size in bytes of the level. Currently not modified or used by Minecraft, but was previously.
      •  SpawnX: The X coordinate of the world spawn.
      •  SpawnY: The Y coordinate of the world spawn.
      •  SpawnZ: The Z coordinate of the world spawn.
      •  thundering: 1 or 0 (true/false) - true if the rain/snow/cloud cover is a lightning storm and dark enough for mobs to spawn under the sky.
      •  thunderTime: The number of ticks before "thundering" is toggled and this value gets set to another random value.
      •  Time: The number of ticks since the start of the level.
      •  version: The NBT version of the level, with 1.14.4 being 19133.
      •  Version: Information about the Minecraft version the world was saved in.
        •  Id: An integer displaying the data version.
        •  Name: The version name as a string, e.g. "15w32b".
        •  Snapshot: 1 or 0 (true/false) – Whether the version is a snapshot or not.
      •  WanderingTraderId: The UUID of the current wandering trader in the world.
      •  WanderingTraderSpawnChance: The current chance of the wandering trader spawning next attempt; this value is the percentage and will be divided by 10 when loaded by the game, for example a value of 50 means 5.0% chance.
      •  WanderingTraderSpawnDelay: The amount of ticks until another wandering trader is attempted to spawn

generatorOptions tag format[edit]

The  generatorOptions tag format varies depending on the generator name. This is the format for buffet worlds:

  •  generatorOptions
    •  biome_source:
      •  options:
        •  biomes:
          • : A biome ID
      •  type: The biome generator, cannot be selected in-game and will be minecraft:fixed for unmodified worlds, but can be minecraft:checkerboard or minecraft:vanilla_layered.
    •  chunk_generator:
      •  options:
        •  default_block: A block ID, by default minecraft:stone.
        •  default_fluid: A fluid ID, by default minecraft:water.
      •  type: The generator ID used. Can be minecraft:surface, minecraft:caves or minecraft:floating_islands.

This is the format for superflat worlds:

  •  generatorOptions
    •  structures:
      •  <structure name>: An empty compound named as the structure in the generator settings, for example "village". If properties are set, for example in the preset: village(size=9 distance=1), then the compound contains this information.
        •  <info>: A property. Its value is a number, but the tag is a string.
    •  layers:
      • : A layer
        •  block: The block ID.
        •  height: The height of the layer, used in worlds created before 1.13.
        •  height: The height of the layer, used in worlds created in 1.13.
    •  biome: The biome ID.

This is the format for customized worlds that are created before 18w06a.

Iron Pickaxe.png
This page is a work in progress.
Please help in the creation of this article by expanding or improving this page.
The talk page may contain suggestions.

session.lock format[edit]

This file contains the timestamp of when the level was last accessed. The file contains a single 64-bit integer in big endian format, which is the timestamp, stored as the number of milliseconds elapsed since 1970-01-01 00:00:00, in UTC.

Unlike typical lock files, this file ensures that the last program to access the level is that one that has read and write access. The process goes something like this:

  1. Program opens session.lock
  2. Program writes timestamp to session.lock
  3. Program monitors session.lock for changes
  4. If the contents of session.lock change, program aborts and gives up its lock on the level.

Minecraft can sometimes try to hold the lock on a level even after the player has started playing a different level, and this can cause strange behavior. It is recommended to ensure that Minecraft is closed before trying to acquire a lock on a level.

poi format[edit]

Files in poi folder use similar structure to region Anvil files (hence the mca extension), but the NBT content is different.

  • The root tag.
    •  Data: This tag contains all the level data.
      •  Sections: Keys are whole numbers (possibly chunk height sections). [more information needed]
        •  <number>:
          •  Valid: (only observed value so far was 1) [more information needed]
          •  Records: May be empty.
            • : Single record.
              •  pos: 3-element array encoding X, Y and Z
              •  free_tickets: Typically 1 or 0, but can be over 30 for type minecraft:meeting. [more information needed]
              •  type: Type of the point, for example: minecraft:home, minecraft:meeting, minecraft:butcher, minecraft:armorer, etc.
    •  DataVersion: Structure version. As of 1.14.4 the value is 1976.