Biome

A biome is a region in a world with distinct geographical features, flora, 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.00166666... units ($1/600$) per meter above the default sea level (Y=64), but does not change below sea level. 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. Blocks such as mossy cobblestone, mossy stone bricks 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=120, 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: 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).

Sky and fog
The sky colors are not directly determined by the temperature and rainfall 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.

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: 2/3 wooded badlands (0.9% of the final map)
 * Medium biome clusters: forest, dark forest, birch forest, windswept hills, swamp, plains
 * Rare medium biome clusters: jungle (1.5% of the final map)
 * Cold biome clusters: forest, windswept hills, taiga, plains
 * Rare cold biome clusters: old growth pine taiga (1.6% of the final map)
 * Frozen biome clusters: snowy plains (3 times), snowy taiga

Forest and windswept hills 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.

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 badlands biomes.
 * Stony shores generate on all coastlines.
 * Snowy beaches generate on the coastline of all frozen biomes.

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
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.

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 the negative of 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 50 Overworld biomes, 5 Nether biomes and 5 End biomes as well as one biome that is used only for a superflat preset, with a total of 61 different biomes. $$, however, there are 48 Overworld biomes, 5 Nether biomes, 1 End biome, and 30 unused, with a total of 84. 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 aqua green color.

Cold biomes
In these biomes, it begins to snow above y=120 in windswept hills and stony shore, above y=160 in taiga and old growth spruce taiga, and above y=200 in old growth pine 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.

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.

Cave biomes
These biomes generates inside caves. Their placement are 3D, compared to other Overworld biomes, which use 2D. They're mostly found underground but can sometimes leak out of cave entrances at any height.

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

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.

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: