Page 1 of 3

Anvil

Posted: Tue Feb 14, 2012 8:49 am
by Intelli
http://www.mojang.com/2012/02/14/new-mi ... mat-anvil/
New Minecraft Map Format, “Anvil”
by Jens Bergensten on February 14, 2012

Hello!

Jon and I have been working on a new map format for Minecraft that we’ve dubbed “Anvil” (it’s just a name). The purpose of the new format is to prepare for modding, especially to allow for more block types, but also to improve other areas of the game (such as map height). The changes are:
  • Maximum build height has been increased to 256 (was 128)
  • Empty sections of the world are not loaded into memory
  • Block ids have been increased to 4096 (was 256) by adding a 4 bit data layer (similar to how meta data is stored)
  • Block ordering have been changed from x/z/y to y/z/x in order to improve compression
  • Packets for sending chunks have been updated (a full 128-high chunk is smaller than the old format, and a chunk with lots of empty space is much smaller)
  • Biomes are saved per x/z column, which means they can be altered by tools
The next snapshot, and Minecraft 1.2, will automatically convert worlds to the new format. The files of the current format (“McRegion”) will remain in your save folder, if you need to restore them for some reason.

I’ve prepared a converter (with source code) for tool makers that wants to be prepared. You do not need to use this to convert your maps! It’s only for reference!

Download the converter+source here

Some info:
  • The 16x128x16 “Blocks”, “Data”, “SkyLight” and “BlockLight” tags are removed
  • A “Sections” tag has been added with up to 16 compound tags
  • Each section has 16x16x16 “Blocks”, “Data”, “SkyLight” and “BlockLight” tags
  • Each section has a “Y” integer tag saying which section it is (note that some Y positions can be skipped). 0 is at the bottom of the world and 15 is the topmost section
  • Each section also has a “AddBlocks” tag, which is a DataLayer byte array just like “Data”. The “AddBlocks” tag is not included in the converter since the old format never had block ids above 255. This extra tag is created whenever a block requires it, so the getTile() method needs to check if the array exists and then combine it with the default block data. In other words, blockId = (addBlock << 8) + baseId.
  • Each chunk has a 16×16 byte array with biome ids called “Biomes”. If this array is missing it will be filled when the game starts. The converter doesn’t include any biome sources, though (it had too many dependencies to be included).
  • Note that the old format is XZY and the new format is YZX (see the difference between DataLayer and OldDataLayer).
  • The new format uses the extension “.mca” instead of “.mcr” (the old format is kept for safety, with the level.dat backed up as “level.dat_mcr”)
Finally, a shoutout to Robinton’s hard work on his mods: http://www.minecraftforum.net/topic/310 ... tons-mods/

Cheers,

// jeb_

Re: Anvil

Posted: Tue Feb 14, 2012 8:58 am
by EpicBros
So does this mean we should expect a wipe at some point in the future?

Re: Anvil

Posted: Tue Feb 14, 2012 9:08 am
by schmidtbochum
Intelli will convert our world.

*planning skyscraper*

Re: Anvil

Posted: Tue Feb 14, 2012 9:42 am
by CalebTheCreep
schmidtbochum wrote:Intelli will convert our world.

*planning skyscraper*
Does converting include saving all current realms? :?

Re: Anvil

Posted: Tue Feb 14, 2012 9:51 am
by Laserminer
Eventually (in a long time) once Minecraft is mostly finished updating we should do a full wipe.

Re: Anvil

Posted: Tue Feb 14, 2012 9:56 am
by TechnoProdigy
As many of you may not recall, Intelli stated the current map is PERMANENT.

Re: Anvil

Posted: Tue Feb 14, 2012 10:32 am
by Prodigy9
Intelli wrote:http://www.mojang.com/2012/02/14/new-mi ... mat-anvil/
New Minecraft Map Format, “Anvil”
by Jens Bergensten on February 14, 2012

Hello!

Jon and I have been working on a new map format for Minecraft that we’ve dubbed “Anvil” (it’s just a name). The purpose of the new format is to prepare for modding, especially to allow for more block types, but also to improve other areas of the game (such as map height). The changes are:
  • Maximum build height has been increased to 256 (was 128)
  • Empty sections of the world are not loaded into memory
  • Block ids have been increased to 4096 (was 256) by adding a 4 bit data layer (similar to how meta data is stored)
  • Block ordering have been changed from x/z/y to y/z/x in order to improve compression
  • Packets for sending chunks have been updated (a full 128-high chunk is smaller than the old format, and a chunk with lots of empty space is much smaller)
  • Biomes are saved per x/z column, which means they can be altered by tools
The next snapshot, and Minecraft 1.2, will automatically convert worlds to the new format. The files of the current format (“McRegion”) will remain in your save folder, if you need to restore them for some reason.

I’ve prepared a converter (with source code) for tool makers that wants to be prepared. You do not need to use this to convert your maps! It’s only for reference!

Download the converter+source here

Some info:
  • The 16x128x16 “Blocks”, “Data”, “SkyLight” and “BlockLight” tags are removed
  • A “Sections” tag has been added with up to 16 compound tags
  • Each section has 16x16x16 “Blocks”, “Data”, “SkyLight” and “BlockLight” tags
  • Each section has a “Y” integer tag saying which section it is (note that some Y positions can be skipped). 0 is at the bottom of the world and 15 is the topmost section
  • Each section also has a “AddBlocks” tag, which is a DataLayer byte array just like “Data”. The “AddBlocks” tag is not included in the converter since the old format never had block ids above 255. This extra tag is created whenever a block requires it, so the getTile() method needs to check if the array exists and then combine it with the default block data. In other words, blockId = (addBlock << 8) + baseId.
  • Each chunk has a 16×16 byte array with biome ids called “Biomes”. If this array is missing it will be filled when the game starts. The converter doesn’t include any biome sources, though (it had too many dependencies to be included).
  • Note that the old format is XZY and the new format is YZX (see the difference between DataLayer and OldDataLayer).
  • The new format uses the extension “.mca” instead of “.mcr” (the old format is kept for safety, with the level.dat backed up as “level.dat_mcr”)
Finally, a shoutout to Robinton’s hard work on his mods: http://www.minecraftforum.net/topic/310 ... tons-mods/

Cheers,

// jeb_
Happy valentine's day to you too, jeb!

Re: Anvil

Posted: Tue Feb 14, 2012 10:36 am
by BSGSamuel
Bitshifting makes me want to puke...

But yay for higher maps. :)

Re: Anvil

Posted: Tue Feb 14, 2012 11:08 am
by bcbarton
It looks a lot like they are trying to integrate the cubic-chunks mod into the main game, which is awesome.

As for the map wipe, I'm sure Intelli will just update the map's format without changing any of the chunk contents and without wiping anything.

Re: Anvil

Posted: Tue Feb 14, 2012 11:17 am
by EpicBros
TechnoProdigy wrote:As many of you may not recall, Intelli stated the current map is PERMANENT.
There's this little thing that people have been known to do from time to time, its called changing their minds.