Biome

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

Temperature
Biomes have a temperature value that determines if the water freezes or if it snows or rains. 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.0016 units ($1/625$) per meter above the default sea level (Y=64), but does not change below sea level. The temperature also affects the color of the water in the oceans. The temperature and rainfall values of a biome are used when determining the colors of a small selection of blocks: grass, grass blocks, some leaves, vines, sugar cane, and other features such as water and the sky. Blocks such as mossy cobblestone, mossy stone bricks and the stems of flowers are not affected by biome coloration.



These values can be used to determine the heights that snow generates at in different biomes. For example, extreme hills mountains generate snow at Y=95, 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 a temperature above 0.95 (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 0.95 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: snow-covered, 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 swamps).

Sky and fog
Depending on the temperature of the biome, sky colors vary slightly, with colder biomes having more purple skies.

Generation
Minecraft biomes are generated in layer stacks. These layers generate specific aspects of Minecraft biomes, such as scale, rivers, varieties and biome categories.

Earlier stages
Biome generation is initialized as a 1 to 4096 scale of ocean, with a few spots of landmasses scattered throughout. This map is then scaled and additional landmasses shuffled around to decrease the amount of ocean, twice, to reach a scale of 1 to 1024. Additional layers that decrease the amount of ocean are repeatedly applied until the ratio of land to ocean is about 50-50. Snowy biome categories are then assigned to a few spots of land, which is then shuffled around a final time to obtain a ratio of 33% ocean and 67% landmass.

At this stage of biome generation, the final climate zones are applied as follows. Areas of dry landmasses are assigned to be a normal biome if it borders a cold or frozen landmass. Areas of snowy landmasses are assigned to the cold temperature category if it borders a normal or dry temperature zone. 1 out of every 13 landmasses is then marked as "Special", which would be used to place some of the rarer biomes in later stages of biome generation. This map is then scaled twice, until a scale of 1 to 256. An additional layer is applied to create a more jagged coastline, creating areas of large islands and lakes around the coastline. 1 out of 100 areas of oceans are assigned as mushroom biomes and areas of ocean far from the coast converted into deep ocean.

The final areas of climate areas are as follows: 31% oceanic, which consists of 22% deep ocean and 9% ocean, 0.07% mushroom, 13% dry, 22% medium, 23% cold and 6% frozen. Areas of rare biomes make up 4% of the total area.

The biome generation is then split into 3 separate stacks.

Generation of biomes and biome variants
One stack of biome generation generates the actual biomes in-game. The biome categories generate the following biomes as follows. Some biomes are weighed more and as such generate more commonly, than other biomes. Snowy biomes have an unused rare biome variant and as such generate as normal snowy biomes.


 * Dry biome clusters: desert (3 times), savanna (2 times), plains
 * Rare dry biome clusters: 1/3 badlands plateau, 2/3 wooded badlands plateau (0.9% of the final map)
 * Medium biome clusters: forest, dark forest, birch forest, mountains, swamp, plains
 * Rare medium biome clusters: jungle (1.5% of the final map)
 * Cold biome clusters: forest, mountains, taiga, plains
 * Rare cold biome clusters: giant tree taiga (1.6% of the final map)
 * Frozen biome clusters: snowy tundra (3 times), snowy taiga

Forest and mountain biomes can generate in both cold biome clusters in addition to normal temperature clusters. Plains biomes can generate in all temperature clusters except in frozen biomes.

Bamboo jungles overwrite certain areas of jungle biomes since Village and Pillage.

This map is scaled twice until a scale of 1 to 64 in both Java and Bedrock Editions. In Legacy Console Edition, the map is not scaled at all at this stage of biome generation. To ensure a smooth transition between biomes, some biomes generate an "edge biome" as follows. These edge biomes can also generate hills and modified biome variants:


 * Badlands plateau and wooded badlands plateau generate regular badlands on all edges.
 * Giant tree taiga generates the regular taiga on all edges, unless there is a pre-existing snowy Taiga or taiga bordering it.
 * If a desert borders a snowy tundra, a wooded mountain generates.
 * If a swamp borders a jungle, a jungle edge generates. If a swamp borders a desert, snowy taiga, or snowy tundra, a plains biome generates.

Modified and hill biomes are then merged into the biome generation. Most biomes have a "hills" variant but some biomes use other biomes as their "hills" variant, which are listed below. This stage also allows islands to generate in areas of Deep Ocean:


 * Dark forest -> plains
 * Plains -> 1/3 wooded hills, 2/3 forest
 * Snowy tundra -> snowy mountains
 * Ocean -> deep ocean
 * Savanna -> savanna plateau
 * Deep ocean -> 1/2 plains, 1/2 forest
 * Wooded badlands plateau and badlands plateau -> regular badlands

Swamps and regular badlands do not generate a hills biome variant. Oceans do not have a "modified" biome variant. While most biomes have a "modified" variant, few biomes generate a unique "modified hills" variant, such as birch forests and mountain biomes. Some other biomes use another existing biome as a "modified hills" variant. If a biome does not have a "modified hills" variant, such as swamps or snowy taigas, the regular biome variant generates instead.

Additional areas of sunflower plains are generated separately to the modified biome stage of biome generation, covering 1/57 of normal plains biome.

The map is then scaled and the coastline made more jagged, then scaled again and beaches are generated. The generation of shorelines and beaches are as follows, this also adds a few additional biome edge biomes for jungles and badlands, without biome variants:


 * Beaches generate on all coastlines except the regular swamp and regular badlands biomes.
 * Stone shores generates on the coastline of the standard mountains and wooded mountains biomes.
 * Snowy beaches generate on the coastline of all frozen biomes.
 * Mushroom shores generates on the coastline of all mushroom fields biomes.
 * A regular desert generates on the edge of all badlands biomes, excluding eroded badlands. The desert border does not generate next to oceans.

This also creates unique quirks in generation, where gravelly mountains and swamp hills generate a beach biome, and swamp hills bordering a regular jungle edge, with a modified jungle edge bordering jungles.

This biome map is scaled two more times (scaled 4x) until a scale of 1 to 4. River generation is merged with the regular biomes, then ocean climate zones merged.

Generation of rivers and hills
A layer stack for river noise generation is used as a random number generator to generate areas of hills and mutated biomes, which is scaled twice before applied to the biome stage of biome generation at scale 1 to 64. Since Update Aquatic, modified biomes conform to an entire biome or can border a river. A separate layer stack to generate rivers throughout is scaled 4 times, before it is merged with the rest of the generation at scale 1 to 4.

Rivers generate across all land biomes excluding areas of oceans. Frozen rivers replace rivers in regular snowy tundras. The mushroom field shore generates in place of rivers in mushroom fields biomes.

Once the ocean temperature stack and river generation stack is merged with the biome generation stack, a final layer is applied to make the biome scale 1:1, which is the final biome generation used in Minecraft.

Java Edition oceanic temperature generation
Ocean biomes generate their climate zones separately from land biome generation, to avoid changing existing Minecraft seeds/biome generation in its entirely. Ocean climate zones are initialized at a scale of 1 to 256, then scaled 6 times, before it is merged with the rest of the biome generation.

In Java Edition, ocean climate areas are done so Warm Oceans cannot border Frozen Oceans. One must go incrementally from Warm Oceans, to Lukewarm Oceans, regular Oceans, and Cold Oceans, before reaching Frozen Oceans.

If a Frozen Ocean or Frozen Deep Ocean borders a land biome, a regular Cold Ocean generates. If a Warm Ocean generates next to a land biome, a regular Lukewarm Ocean generates. Warm Oceans overwrite Deep Oceans as Warm Deep Oceans do not generate.

Ocean climate zones are based off the 48 bit seed, unlike the rest of the land biome generation, as such, shadow seeds in Java edition contain entirely different ocean climate areas, even though common land biomes generate identically in Java Edition shadow seeds.

Other information
$$, the possible shapes of biomes can use only the first 24 bits of the 64-bit world seed, and biome shapes within a world seed can repeat beginning around blocks from 0,0. Biome generation overflows at blocks from 0,0. However, as biomes are generated in a zoomed out stage, before it is scaled upward, it technically means that biome generation could extend further out during earlier stages of biome generation as the integer overflow point is further out.

Even though there are 64-bit seeds on Java, there are only unique noise maps for continental/ocean biome generation, because a quadratic equation is used, and quadratic equations always can be mirrored so that for every input except one to the quadratic equation, there is another that results in the same output (halving the number of truly distinct possibilities). For any seed, the other seed resulting in the same output to this equation is colloquially known as a shadow seed. In this case, land biome and general ocean biomes are exactly the same in a pair of seeds, but ocean biome temperatures, structures and hills differ in the shadow seed. A user can find a shadow seed by adding the constant -7379792620528906219 to their current world seed, to obtain the shadow seed. Shadow seeds are exclusive to Java Edition.

With using 32-bit seeds and a different world generation algorithm, there are few similarities between it and the 64-bit world generation. The positions of Mutated biomes, oceans (and islands), rare biomes (jungles, badlands, mushroom fields, giant tree taiga), as well as specific biomes in cold, temperate, or dry biome clusters, bear some geographical relationship with the equivalent positive value seed of the 64-bit generation. The biome shapes deviate significantly. The specific generation of lush biomes and ocean variants is completely different on Bedrock.

Biome types
$$, currently, there are 67 Overworld biomes(44, including deep dark in 1.18), 5 Nether biomes, 5 End biomes, and 4 unused biomes(3 in 1.18), with a total of 81 different biomes(57,including deep dark in 1.18). $$, however, there are 66 Overworld biomes(43, including deep dark in 1.18.0), 5 Nether biomes, 1 End biome, and 5 unused biomes(4 in 1.18.0), with a total of 77(53, including deep dark in 1.18.0). Biomes can be distinguished by the grass, and leaf colors (water color also differ between biomes 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 7 temperature classes. The snowy biomes have their temperature listed in purple, cold in blue , temperate in green , arid in orange , the nether in red and the end in tan. The biomes of either neutral or unknown temperature have no temperature class. Temperatures are given at sea level.

Snowy biomes
In these biomes, it always snows instead of rains and no matter the height; all sources of water exposed to the sky quickly freeze. The foliage and grass have a dull bluish green color.

Cold biomes
In these biomes, it begins to snow above y=90 in mountains and stone shore, above y=120 in taiga and giant spruce taiga, and above y=150 in giant tree taiga. Otherwise, it rains. Foliage and grass are turquoise green in thsese biomes.

Temperate biomes
In these verdant biomes, it begins snowing over the 256 block height limit, meaning snow does not generate naturally. Otherwise, it rains. The foliage and grass colors vary a lot in these biomes, with rivers and birch forests having a more dull shade of green, forests have a more vibrant shade of green, plains have a lighter shade of green, jungles and mushroom fields have a very lush shade of green and swamps and dark forests have unique dark shades of green.

Warm biomes
In these biomes, it neither rains nor snows at all, but the sky still turns overcast during inclement weather. The foliage and grass is an olive tone, except badlands biomes, which have brown grass and the sky color is much brighter specially in deserts and badlands. Additionally, a snow golem spawned or brought into one of these biomes melts (takes heat damage) unless it has the Fire Resistance effect.

It is also called as "Tropical biome" for savannas, due to the temperature of the biomes.

Aquatic biomes
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. Oceans typically extend under 3,000 blocks in any direction; around 60% of the Overworld's surface is covered in ocean. Small islands with infrequent vegetation can be found in oceans. Passive mobs sometimes can spawn on these islands, as hostiles can. Squid spawn frequently in the water. Underwater cave entrances can be found frequently at the bottom of the ocean.

Unused biomes
These biomes don't generate in default worlds.

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

The Nether
The Nether is considered a different dimension. It is a hellish place and 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.

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 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 rainfall values (recognized as AdjTemp and AdjRainfall 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 rainfall 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 rainfall to 0.0-1.0. The clamped rainfall 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 rainfall 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.

Additional context

 * Biome JSON format
 * Overworld
 * Structures
 * Terrain Features
 * Weather
 * Large Biomes
 * Amplified
 * Biome/Before Beta 1.8
 * Biome/Before TU5

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.

Videos
A visualization of how biomes are generated by Minecraft: