Biome

A biome is a region in a world with distinct geographical features, flora, temperatures, humidities, and sky, water, fog, grass and foliage colors. Biomes separate every generated world into different environments, such as forests, deserts and taigas.

The biome of a location is determined during world generation rather than current environment. Even if the player completely changes all the blocks in a large area to imitate the terrain of other biomes, the biomes in this area are not be affected. However, $$, command can changes the biome in an area.

Temperature and biome colors
Biomes have a temperature value that determines if the water freezes, and if it precipitates as snowfall or rain. The required temperature values for snow and rain are less than 0.15 for snow and above 0.15 for rain. The temperature drops 0.00125 units ($1/800$) per meter of altitude above y=74, but does not change below that level. The temperature and downfall values of a biome are used when determining the colors of a small selection of blocks: grass, grass blocks, some leaves, vines, sugar cane. Blocks such as mossy cobblestone, mossy stone bricks, moss, dripleaves, glow berries and the stems of flowers are not affected by biome coloration. The water color is affected by biome coloration but it's not based on temperature and instead is set by a color code, and the water color of each biomes varies between versions. $$ most biomes have a default water color with the exception of swamps and oceans while in Bedrock Edition most biomes have unique water colors.



These values can be used to determine the heights that snow generates at in different biomes. For example, windswept hills begin to generate snow at around y=113, due to their highland climate, as their temperature value is 0.2, the temperature affects only the transition from rain to snowfall. All the biomes in vanilla with temperature above 1.0 (and by extent, all the dry biomes) are hardcoded to never have precipitation at any height or temperature. For example, savannas do not experience rain or snow due to their dryness. If a biome with a temperature above 1.0 is edited to allow precipitation through a data pack or mod, it simply behaves like a normal rainy biome.



Biomes are split into 5 categories based on their temperature: snowy, cold, temperate/lush, dry/warm and neutral.



They are almost always separated during terrain generation to prevent biomes with huge temperature differences being placed side-by-side (such as a snowy taiga next to a desert), and to allow biomes with similar temperatures to be placed next to each other more often (such as forests and plains).

Tint
Biome grass and foliage colors are selected from two 256×256 colormap images: grass.png and foliage.png. Both colormaps, shown to the right, can be found in. The grass.png colormap sets the colors for the grass block top and sides (along with other types of grass, such as grass, ferns, double tall grass, etc.). Meanwhile, the foliage.png colormap sets the colors for tree leaves (with the exception of azalea, spruce and birch).

Biome colormaps use a triangular gradient by default. However, only the colors in the lower-left half of the image are used, even though the upper-right side of foliage.png is colored. Furthermore, as shown in the template image to the left, a select few pixels are considered when the colormap is read by the game, and are determined by the code below.

The adjusted temperature and adjusted downfall values (recognized as AdjTemp and AdjDownfall in the code, respectively) are used when determining the biome color to select from the colormap. Treating the bottom-right corner of the colormap as  and , the adjusted temperature increases to 1.0 along the X-axis, and the adjusted downfall increases to 1.0 along the Y-axis. The values used to retrieve the colors are computed as follows: "clamp" limits the range of the temperature and downfall to 0.0-1.0. The clamped downfall value is then multiplied by the 0.0-1.0 adjusted temperature value, bringing its value to be inside the lower left triangle. Some biomes' ranges are shown in the template above; the multiplication makes all the line segments point toward the lower right corner.

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.

The exact temperature and downfall values for biomes can be found in various projects, e.g. this biome code.

Several other biome colors are set into the game and currently require external tools in order to be changed. This includes blocks such as birch and spruce leaves and water (which have a hard-coded overlay set onto them), and other features such as the sky and fog.

Sky and fog
The sky colors are not directly determined by the temperature and downfall values but instead are determined by a color code. However, the sky color that is set for each biome is mostly based on the temperature values, which means that warmer biomes have brighter skies and colder biomes have slightly purplish skies.

Overworld


Overworld biome generation is based on 6 values: Temperature, Humidity (aka. Vegetation), Continentalness (aka. Continents), Erosion, Weirdness (aka. Ridges) and Depth, which are calculated with 6 density functions. They respectively correspond to T, V, C, E, W and D in the "NoiseRouter" line of debug screen. Except "depth", the other 5 values are based on only horizontal coordinates.

Temperature
The temperature value is divided into 5 levels. The corresponding ranges from level 0 to level 4 are: -1~-0.45, -0.45~-0.15, -0.15~0.2, 0.2~0.55, 0.55~1. The level at a horizontal location can be found in the T in the "Biome builder" line on the debug screen. Note that the temperature value used by world generation is not the temperature of a biome, but they roughly correspond each other, e.g. if a location's temperature value is level 0, the base temperature of the biome there is usually low enough or the terrain is high enough, that the surface is covered in snow and ice.

Humidity
The humidity value is also divided into 5 levels. The corresponding ranges from level 0 to level 4 are: -1~-0.35, -0.35~-0.1, -0.1~0.1, 0.1~0.3, 0.3~1. The level at a horizontal location can be found in H in the "Biome builder" line on the debug screen.

Continentalness
The continentalness value is used to decide between ocean/beach/land biomes. It affects the terrain height during terrain generation. The larger the continentalness value, the higher the average terrain height. And the continentality is extremely low, the terrain height also becomes higher, in order to generate mushroom fields in the center of the ocean.

If the continentalness of a location is between -1.2~-1.05, the mushroom fields biome is generated; when it is between -1.05~-0.455, deep ocean biomes are generated; when at -0.455~-0.19, ocean biomes are generated; when greater than -0.19, inland biomes are generated. The inland biomes are further subdivided into 4 types: coast (-0.19~-0.11), near-inland (-0.11~0.03), mid-inland (0.03~0.3) and far-inland (0.3~1).

Erosion
The erosion value is divided into 7 levels. The corresponding intervals from level 0 to level 6 are: -1~-0.78, -0.78~-0.375, -0.375~-0.2225, -0.2225~0.05, 0.05~0.45, 0.45~0.55, 0.55~1. The level at a horizontal location can be found at E in the "Biome builder" line of the debug screen. During terrain generation, the lower the erosion value, the higher the terrain height.

Weirdness
The weirdness value affects whether the generated biome is its variant or not. If the weirdness value is greater than 0, the generated biome becomes its variant. For examples, the variant of the Plains biome is Sunflower Plains. Note that some biomes have no variants and are not controlled by the weirdness value.

A PV (peaks and valleys) value is calculated through the formula $$1-\vert 3\vert weirdness \vert-2 \vert$$, which is also shown at PV in the NoiseRouter line of the debug screen. When the PV is less than -0.85, "Valleys" biomes are generated; when -0.85~-0.6, "Low Slice" biomes are generated; -0.6~0.2 is "Mid Slice" biomes; 0.2~0.7 is "High Slice" biomes; and 0.7~1 is "Peaks" biomes.

Both weirdness and PV affect the overall height of the terrain during terrain generation, especially the PV value has a more significant impact on the height of the terrain. Since the weirdness value controls both whether the biome is a variant and whether the valley is generated, a biome and its variants often not appear on the same bank of a river.

Depth
The depth value affects whether a surface biome or a cave biome is placed. The depth value is affected by the Y level value of a position. It decreases by $1/128$ (0.0078125) for every 1 block up. The table below lists the depth values for surface biomes and cave biomes.

Non-inland surface biomes
The generation of non-inland biomes has nothing to do with humidity, erosion and weirdness. The following table lists the relation between non-inland surface biomes and continentalness and temperature.

Inland surface biomes
The following table lists the relation between inland surface biomes and continentalness. erosion, and PV.

In which, the specific biome generation of beach biomes, badland biomes, middle biomes, plateau biomes, and shattered biomes is determined by the temperature, humidity and weirdness values.

Beach biomes generates in the low terrain along the coast, and the specific biome generation is only related to the temperature value.

Badland biomes usually generate inland with low erosion value, and can also generate along the coast with high terrain and low erosion. The specific biome generation is related to humidity and weirdness.

Middle biomes are the most extensive biomes inland, and the specific biome generation is related to temperature, humidity, and weirdness.

Plateau biomes generate at inland high terrain with moderate erosion. The specific biome generation is related to temperature, humidity, and weirdness.

Shattered biomes are generated at inland places with high erosion, and the specific biome generation is related to temperature, humidity, and weirdness.

If the six values at a location do not accurately fall into a certain biome interval in these above tables, it uses the closest biome interval to the 6D value vector, in order to form a transition between biomes.

The nether
The Nether uses three density functions to generate biomes: temperature, humidity, and offset. Unlike the Overworld, the Nether biome specifies biomes with points, while the Overworld uses 6D intervals.

The End
$$, the End uses only one density function value: erosion. If the horizontal distance from the chunk origin of a chunk to the world origin is less than 1024, the locations in the chunk is. Otherwise, the biome is determined by erosion.

$$, in the End there's only one biome:.

Biome types
$$ there are 63 different biome types: 52 for the Overworld, 5 for the Nether, and 5 for the End, plus one used only for a superflat preset. $$ there are 84 biome types: 48 for the Overworld, 5 for the Nether, 1 for the End, and 30 unused.

Ocean biomes
These biomes are used for the generation of oceans. Oceans are large, open biomes made entirely of water going up to y=63, with underwater relief on the sea floor, such as small mountains and plains, usually including gravel. Squid and fish spawn frequently in the water. Due to its characteristics and generation mechanisms, mushroom fields are also classified as an ocean biome.

Highland biomes
Highland biomes are biomes with high Y-level, rugged terrain, and snow-covered peaks appear above the snow line.

Wooded biomes
Wooded biomes are rich in plants, with trees, flowers and grasses constituting the flora on the surface. It is one of the ideal birthplaces where plenty of wood resources are available, but the dense vegetation makes it dangerous to move around the forest at night because the trees block the view.

Wetland biomes
Wetland biomes contains rivers, swamps and beaches. They have a large amount of water resources. Rivers separate other biomes; beaches generate as a transition between the ocean and land.

Flat biomes
These biomes have a flat terrain and a wide view. Trees spawn less here, while lakes are more common here.

Arid biomes
In these biomes, it neither rains nor snows at all, but the sky still turns overcast during inclement weather. The surface is covered with sparse vegetation.

Cave biomes
These biomes generates inside caves in overworld. They're mostly found underground but can sometimes leak out of cave entrances.

The Nether
The Nether is considered a different dimension. It is a hellish place; all biomes in this dimension are dry and it is not possible to place water in these biomes, though ice can still be placed. Additionally, packed ice and blue ice never melt in the nether, as with the other non-freezing biomes.

The End
The End is considered a different dimension.

Unused biomes
These biomes don't generate in default worlds. They have been completely removed from the game $$.

Removed biomes
These biomes no longer exist in current versions of the game.

Joke biomes
These biomes can only appear in the joke snapshot of the game.

Trivia

 * The term biome is analogous to its scientific usage: in real life, 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.
 * Most biomes in the Overworld are based on real world counterparts. Dark forests or swamps parallel real world biomes except for the addition of giant mushrooms, which don't exist in reality. Biomes in the nether and the end don't exist either.
 * It is possible for biomes to be a single block in size.