User:FireX420/Glitches/Upgrading

From Minecraft Discontinued Features Wiki
Jump to navigation Jump to search

This page documents damage and corruption that can occur to a Pocket Edition world after updating it by multiple versions at once. Any intentional features or mechanics that could fall under this wiki's definitions of damage or corruption, such as placed oak wood automatically being converted to spruce wood after updating from v0.2.0 or earlier to v0.2.1 alpha2 or v0.2.2, are not included on this page.

Summary table

Post-update version

Pre-update version
v0.1.0–v0.2.0 v0.2.1–v0.8.1 v0.9.x v0.10.x v0.11.x v0.12.x v0.13.0–v0.14.3 v0.15.0–v0.16.2 1.0.0–1.0.3 1.0.4 and later
v0.1.x Safe Block Damage + Crash + Chunk Corruption + Softlock + World Files Untested Not Possible Untested
v0.2.0–v0.2.2 Safe Item Damage + Block Damage + Crash − Crash Untested
v0.3.0–v0.8.1 Safe Item Damage + Entity Damage Untested
v0.9.0–v0.12.3 Safe Untested
v0.13.0 and later Untested

Level format information

v0.1.0 – v0.8.1

In the earliest versions of Pocket Edition, every world had three files that stored different types of world data. All block, light, and biome data for a world was stored in chunks.dat. The level.dat file contained information for the world's seed, spawn point, last played time, and the world name. Information regarding the player was stored in player.dat. Additional information regarding level.dat and player.dat can be found here.

In v0.2.0 alpha, level.dat was changed to use the NBT format instead of a raw binary format, and player information that was previously in player.dat was moved into level.dat. The game automatically converts the level.dat file for a given world once the world is opened in-game. This version also added support for entities besides the player by adding the entities.dat file.

In v0.3.2 alpha, support for block entities was introduced by adding a TileEntities list to entities.dat. Outside of everything previously mentioned, the addition of several fields to level.dat across multiple versions, and the addition of level.dat_old in v0.5.0 alpha, no notable changes were made to the level format after v0.1.0 until v0.9.0 alpha. This means that most worlds can be updated from v0.1.0 straight to v0.8.1 without any issues, though there is an exception mentioned below.

v0.9.0 – v0.16.2

In v0.9.0 alpha (build 1), Minecraft switched to using a levelDB-based format. This introduced a large number of changes, including the addition of the db directory, the player tag getting moved from level.dat to db, and the removal of chunks.dat and entities.dat. Additional information regarding the chunk format in this version can be found here.

To allow players to update to v0.9.0 from previous versions without any issues, the player tag is still able to be read from level.dat if it cannot be read from db. While this version does support updating to it from as far back as v0.2.0, the different level.dat format and the existence of player.dat in v0.1.x does cause a number of issues to occur if updating from v0.1.x to v0.9.0 or later.

The game checks if a world is using the previous level format by looking at the StorageVersion field in level.dat. If the value of this field is less than 4, then the game converts the data in chunks.dat and entities.dat to the newer format. Otherwise, the game entirely ignores those two files and generates new chunk and entity data based on the information in level.dat. If the StorageVersion field is absent and the level.dat file is using the NBT format, the game assumes the world is using the older level format. If the game detects a world with the old level format and chunks.dat is nonexistent, the game creates a 4KB chunks.dat file that contains solely the chunk index.

Updating from v0.1.x

v0.2.1 or later

Before v0.2.0 alpha, all the different colors of wool were split up into their own numeric IDs since the player's inventory did not support metadata values at the time. With the addition of inventory metadata support in v0.2.0, all wool colors were merged into a single numeric ID, with different colors corresponding to different metadata values. If the player updates to v0.2.0 only, any pre-0.2.0 wool blocks are automatically converted to the new wool ID. The game's ability to convert wool was removed in v0.2.1, resulting in potential block damage if the player updates from v0.1.3 or earlier to v0.2.1 or later. See this section on the Minecraft Wiki for a resource showing what pre-v0.2.0 wool blocks get converted to.

v0.9.0 or later

The most common type of glitched chunk that occurs from this upgrade.

Several conversion glitches occur if a world with a level.dat file using the v0.1.x binary format is opened in v0.9.0 or later, though it is not yet understood why such glitches take place. These include:

  • The world type is automatically converted from old to infinite. New chunks generate in place of the invisible bedrock border.
  • Chunks outside the old world bounds may sporadically fail to generate, which can result in any of the following three outcomes:
    • An empty chunk
    • A copy of the northwest-most chunk from the old world
    • A glitched chunk based on data from the old world that crashes the game when it is loaded in. If the player is able to get close enough to such a chunk, the world can potentially get softlocked.
      • If the players opens the world in v0.10.1 or later, loading these chunks does not crash the game, but getting within a close enough distance of them can still cause a crash due to glitches related to invalid block handling. Corrupted chunks can take on various forms; the entire chunk may be shifted up on the Y-axis, causing the highest layers to wrap around and appear directly above the height limit. Several rows of blocks depending on their Z-coordinate may also be replaced by a large assortment of seemingly unrelated blocks.
        • The most common glitched chunk is one where the game misinterprets the first four bytes of the chunks.dat file (15 01 00 00) and then incorrectly begins reading chunk data starting at 277 bytes into the file instead of at 4,096 bytes as intended. Since the first 4KB of chunks.dat are always the same assuming the world has not been subjected to any downgrading or external editing, the same configuration of blocks always generates for all relative chunk coordinates where X=0 as well as where X=1 but Z≤12. This glitched chunk can generate up to several times in a single world. It contains a number of invalid block configurations, including, but not limited to:
          • Flowers and saplings on invalid blocks
          • Bottom-half doors
          • An end gateway in the Overworld
          • Multiple blocks with a GUI that cannot be interacted with
  • Chunks inside the old world bounds may regenerate while still in-game, resulting in glitchy rendering until the player either exits and reenters the world, or unloads and loads the chunk(s) back in.
    • This particular form of chunk regeneration does not seem to occur in v0.11.0 (build 3) or later.
  • If light blue wool (ID 113) was placed in the world before updating, any spaces that previously contained the block become subject to multiple crash/hang bugs associated with invalid block IDs before v0.11.0.

v0.11.0 or later

Opening a world in v0.11.0 or later that was last opened in v0.1.x also presents the following glitches:

  • The world no longer has a displayed name on the world selection screen, and its last played time before opening it is displayed as "long ago."
  • The light level of all blocks excluding those that give off light in the old world bounds is zero as long as they do not receive any block updates.
  • The game may seemingly randomly crash, which is then followed by several values in level.dat getting changed:
    • LastPlayed: unknown[note 1]
    • RandomSeed: 167,772,163 (0A000003)
    • SpawnX: 268,452,961 (10004461)
    • SpawnY: 2,034,465,123 (79437963)
    • SpawnZ: 1,818,579,828 (6C655374)
    • StorageVersion: 1 (01)
    • Time: 1,869,632,617 (6F705469; v0.11.0 build 10 and later) or 13,417 (3469; before build 10)
    • creationTime (before v0.11.0 build 10): 0 (00)
    • currentTick: 0 (00)
    • spawnMobs: false (0)
    • The world may also get softlocked after such a crash occurs. This softlock is guaranteed to occur if the player goes to the edit world screen and modifies any settings before opening the world. There are currently two known methods of fixing this softlock:
      • Method #1: opening the world in v0.1.x, then opening the world in v0.2.0 – v0.8.1, and finally opening the world in v0.9.0 or later.
        • Note that if the db directory does not have player data in it due to the softlock being performed by modifying world settings, the player is placed at the extreme X/Y/Z world spawn resulting from the level.dat damage.
      • Method #2: downgrading to v0.2.0 – v0.10.5 and performing world save insertion.

v0.12.1 or later

  • Rain immediately starts occurring upon entering the world.
  • Any snow in the old world bounds that is not under an opaque block starts melting.

v0.16.0 or later

The player's game mode is changed from Creative to Survival.

v0.17.0.1 – 1.0.4.0

Worlds last opened before v0.9.0 cannot be opened in these versions; attempting to do so causes the game to crash on world load. v0.1.x worlds last opened during this version range can be opened in later versions, but cannot be opened again in earlier versions without performing one of the anti-softlock methods mentioned above.

Updating from v0.2.0 – v0.8.1

v0.9.0 – v0.9.5

In v0.2.x, the player has 45 saved inventory slots by default — one for each available item — instead of the usual 36.[note 2] If the user updates a world where their player has more than 36 saved slots to v0.9.x, the contents of the extra slots are deleted. While v0.3.0 through v0.8.1 do properly handle extra items by throwing them from the player in random directions, all later versions simply delete them.

v0.10.0 or later

Starting in v0.10.0 (build 1), the game is no longer able to read the player tag from level.dat under any circumstances. As a result, if the player updates from v0.8.1 to v0.10.0 while skipping v0.9.x, any data associated with the player is reset. They will lose all items in their inventory, including any equipped armor, and their current position is moved to the world's set spawn point.

v0.11.0 or later

  • In v0.11.x only, any falling blocks become invisible and cause a large amount of lag when rendered until they land. No blocks appear where any falling blocks land. If a falling block lands on an irreplaceable block such as a torch from v0.11.0 build 1 to build 11, it drops an invalid item that crashes the game when rendered or picked up.
  • The light level of any areas occupied by water is changed to zero until such areas receive an update. The sky light level of all other areas, including those under overhangs, is changed to 15. Every individual opaque block has to be updated in order for the sky light to correct itself.

v0.12.1 or later

  • All snow in the world that is not under an opaque block starts to melt.
  • Any previously placed chests and furnaces can no longer be opened. Mining these blocks does not drop any of the items that were previously in them.
  • Any previously placed chests and signs become invisible.
  • A majority of paintings are deleted from the world if a sign or chest is in it before updating.
  • Any falling blocks in the world are deleted.

v0.13.0 – v0.14.3

The game crashes if the player crosses certain chunk borders. What chunk borders, one might ask? Good question. I thought I was *this* close to answering that question, but then I suddenly was not. Crashes stop occurring if the player successfully saves and quits to the title screen without crashing the game.

v0.17.0.1 – 1.0.4.0

Worlds last opened before v0.9.0 cannot be opened in these versions; attempting to do so causes the game to crash on world load. v0.2.0–v0.8.1 worlds last opened in this version range can still be opened in earlier or later versions.

Unsorted

v0.1.3 → 1.2.13.5

The player is given a starting map.

Notes

  1. Glitched values do not update in level.dat until the world is opened in-game.
  2. It is also possible to give the player up to 63 inventory slots by either downgrading from v0.8.0 alpha build 1 or through external editing.