Mapee only reads chunks that are saved in single-player worlds. The mapper converts them to the latest version in its memory. The world files remain unmodified. Mapee is capable of loading worlds from beta 1.3 up to the most recent version. Future plans involve the addition of pre-1.3 beta worlds as well.
Mapee uses a top-down scanning technique. Each chunk comprises 256 columns, with each column representing a block on the horizontal plane. There are three types of blocks:
2) Transparent, e.g. water, leaves, glass.
3) Solid, e.g. stone, grass block, wood.
If the scanner hits a solid block, the column is said to be 'finished', it will not be scanned further.
Y level:The scanner has to choose the Y level from which to start scanning the column; there are 2 configurations:
2) Heightmap - Heightmaps store the Y level of the highest block for each column, that meets a certain specifiction. Mapee uses 4 such heightmaps:
OCEAN_FLOOR - Higest motion blocking block. Can be used to render ocean floors efficiently.
MOTION_BLOCKING - Highest motion blocking block, except it stores water, lava & waterlogged blocks.
MOTION_BLOCKING_NO_LEAVES - Similar to the previous one, except leaves of all types are ignored.
As the scanner goes through each block in the column, it has to know which of the three types apply to it. This opportunity can the employed to filter certain blocks for more interesting block formations.
This stage is perhaps the most complicated one. Each column is represented by one pixel. Blocks inside columns get painted in a top-down fashion.
There are 5 steps when it comes to painting a block, say we want to get the output color:
2) If a block is affected by biomes, combine the plain color with the biome color. Note, biomes before 1.2 are not saved in chunks and therefore, Mapee will default to the minecraft:plains biome.
3) Get the sky light and block light values, combine them into one. Darken the output color (from step 2) based on the light intensity.
4) Change block hue and its brightness depending on the altitude (Y value).
5) If neighboring blocks are above the current one (i.e. if the step is negative), darken the output color; if above, lighten it.