Biome



Biomes are regions in a Minecraft world with varying geographical features, flora, heights, temperatures, humidity ratings, and sky and foliage colors. Biomes separate every generated world into different environments, paralleling the real world; examples of biomes include the forest, jungle, desert and ice plains.

The term biome is analogous to its scientific usage: on Earth, a biome is climatically and geographically defined by distinctive communities of plants, animals and soil organisms supported by similar climatic conditions. They are often referred to as ecosystems.

Biomes have a temperature value that determines if it snows, rains, or does not have either. The required values are: <0.15 for snow, 0.15 - 0.95 for rain, or >1.0 for none. These values can be used to determine the heights that snow generates in different biomes. For example, extreme hills generate snow at y=95, due to highland climate, as the base value is 0.2, and savannas do not experience rain or snow due to their heat. The temperature drops 0.00166667 per meter above sea level (Y==64).

Biomes are split into 5 categories based on their temperature: snow-covered, cold, medium, dry/warm, and neutral. They were separated to prevent biomes with huge temperature differences being placed side-by-side (such as cold taiga next to a Desert).

Biome types
There are 61 distinct biomes. Biomes can be distinguished by the grass and leaf colors in the biome, along with the types of blocks present (e.g. types of trees or other plants like cacti, sand coverage in deserts). Biomes are pseudo-randomly generated using the map seed.

Biomes are separated into 5 categories. The snow-covered biomes are marked in blue, cold in green , medium/lush in orange and dry/warm in red. The biomes which are not labeled are either neutral or unknown. Temperatures are given at sea level.

Snowy biomes
In these biomes, it snows at any height. The foliage and grass is an aqua-green.

Cold biomes
In these biomes, it begins to snow over a certain height, but before the 256 block height limit. Otherwise, it rains. The foliage and grass is an aqua-green.

Medium/Lush biomes
In these biomes, it begins snowing over the 256 blocks height limit. Otherwise, it rains. The foliage and grass is a vibrant light green, except swamps and roofed forests, which have a dark green grass. Rivers are also exempt from this, as they have a dull blue hue.

Dry/Warm biomes
In these biomes, it neither rains nor snows at all. The foliage and grass is an olive color, except mesa biomes, which have brown grass.

Neutral biomes
These biomes are usually covered with water and have very little land exposed. Either that, or they have many variants of themselves which are also variants of other non-neutral biomes. The foliage and grass in these biomes usually have a dull green grass hue.

Unused biomes
These biomes no longer generate naturally, but still exist in Minecraft's code.

Biome IDs
Each type of biome has its own biome number, shown in the following table. These biome numbers are used when creating a customized superflat world. Biome variations seem to have a number of 128 +.

Technical details
The temperature and rainfall values of the biome are used to change the colors of grass, foliage, and (for swamplands) water.

A biome's rainfall value is typically a value from 0.0 to 1.0. A biome's temperature starts at a given value at sea level, Y==64, and goes down by 0.00166667 per meter increase. Starting values range from 2.0 (e.g., Desert) to -0.5 (e.g., Cold Taiga). The temperature does not increase below sea level.

The temperature and rainfall values are used to access two texture images in Minecraft, grass.png and foliage.png, in \assets\minecraft\textures\colormap. These textures are triangular, only the lower left is used, despite the upper right of the foliage file having colors. The adjusted temperature and adjusted rainfall values are used to access these two triangles. Treating the lower left corner as temperature = 1.0 and rainfall = 0.0, with adjusted temperature decreasing to 0.0 at the right edge and adjusted rainfall increasing to 1.0 at the top edge, the values used to retrieve the colors are computed as follows:

AdjTemp = clamp( Temperature, 0.0, 1.0 )

AdjRainfall = clamp( Rainfall, 0.0, 1.0 ) * AdjTemp

"clamp" limits the range of the temperature and rainfall to 0.0-1.0. The clamped rainfall value is then multiplied by the 0.0-1.0 adjusted temperature value, which brings its value to be inside the lower left triangle. Some biomes' ranges are shown on the right; the multiplication makes all the line segments point towards the lower right corner.

The color for grass block top and sides, along with various forms of grass – specifically tall grass, ferns, double tall grass, and large ferns – is modified by the color retrieved from the grass.png image. The color for various tree foliage - all tree types except spruce and birch, which have fixed colors in the code – is modified by the color retrieved from foliage.png.

At borders between or among biomes, the colors of the block and its eight neighbors are computed and the average is used for the final block color.

Exact temperature and rainfall values for biomes can be found in various projects, e.g. this biome code.

Swampland
Swamplands are special. Temperature, which starts at 0.8, is not affected by altitude. Rather, a Perlin noise function is used to gradually vary the temperature of the swampland. When this temperature goes below -0.1, a lush green color is used, 0x4C763C, otherwise it is set to a sickly brown, 0x6A7039. In addition, the color of the water in swamplands is always multiplied by a greenish tinge, 0xE0FFAE. These colors are locked in the code and not retrievable from any texture.

Roofed forest
The roofed forest biomes' grass color is retrieved normally, then averaged with a dark green color, 0x28340A, to produce the final color.

Mesa
All mesa biomes' grass and foliage have hardwired colors, two tan colors, 0x90814D and 0x9E814D respectively. These are not modifiable by grass.png and foliage.png and unaffected by temperature.

Biome history


Notch, when he was the lead developer of Minecraft, wanted to add biomes, but he couldn't for a long time. He says the intersection points looked terrible and so, biomes weren't added in the Seecret Updates.

Prior to the Halloween Update, every world had only a single theme, either grassy or snowy.

Anvil file format
The Anvil file format allows for biomes to be stored in the world data. In contrast, the Region file format relies on the seed to dynamically calculate biome placement. This would cause biome placement in older worlds to change when the biome generation code was changed. With the current Anvil format, the biome data is stored along with the rest of the world data, meaning it will not change after the world is generated and can be edited by third-party map-editing tools. Furthermore, "edge" biomes allow for biomes to continue extend beyond the edge chunks of an old world. This allows for smooth transitions in world generation after the generation code changes in an update.

Trivia

 * Hilly biomes end their names with hills, but except for mega spruce taiga hilly version is called "Redwood Taiga Hills M" instead of "Mega Spruce Taiga Hills".
 * The world generation was changed in 1.7 to greatly reduce the incidence of biomes with the highest temperature differences, such as an ice plains and a mesa, from generating next to each other. However, such juxtaposition can still be seen in rare cases, though much less commonly than prior to 1.7 being released.