Biome/Before 1.18

In Java Edition 1.18 and Bedrock Edition 1.18.0, Overworld terrain generation was rewritten to become more varied and independent of biome generation. This made many biome variants that were in the game redundant, as the only difference between their regular counterparts was the way terrain generated in them. As a result, most variant biomes were removed from the generator. $$, these biomes were merged with their normal variants, while $$, these biomes still exist, but remain unused.

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

Earlier stages
Biome generation was initialized as a 1 to 4096 scale of ocean, with a few spots of landmasses scattered throughout. This map was 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 were repeatedly applied until the ratio of land to ocean was about 50-50. Snowy biome categories were then assigned to a few spots of land, which was 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 were applied as follows. Areas of dry landmasses were assigned to be a normal biome if it bordered a cold or frozen landmass. Areas of snowy landmasses were assigned to the cold temperature category if it bordered a normal or dry temperature zone. 1 out of every 13 landmasses was then marked as "Special", which would be used to place some of the rarer biomes in later stages of biome generation. This map was then scaled twice, until a scale of 1 to 256. An additional layer was applied to create a more jagged coastline, creating areas of large islands and lakes around the coastline. 1 out of 100 areas of oceans were assigned as mushroom biomes and areas of ocean far from the coast converted into deep ocean.

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

The biome generation was then split into 3 separate stacks.

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


 * Dry biome clusters: desert (3 times), savanna (2 times), plains
 * Rare dry biome clusters: 2/3 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: giant tree taiga (1.6% of the final map)
 * Frozen biome clusters: snowy plains (3 times), snowy taiga

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

Bamboo jungles overwrote certain areas of jungle biomes.

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

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


 * Beaches generated on all coastlines except the regular swamp and regular badlands biomes.
 * Stone shores generated on the coastline of the standard mountains and wooded mountain biomes.
 * Snowy beaches generated on the coastline of all frozen biomes.

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

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

Rivers generated across all land biomes excluding areas of oceans. Frozen rivers replaced rivers in regular snowy plains.

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

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

$$, ocean climate areas were done so warm oceans could not 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 bordered a land biome, a regular cold ocean generated. If a warm ocean generated next to a land biome, a regular lukewarm ocean generated. Warm oceans overwrote deep oceans as warm deep oceans did not generate.

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

Other information
$$, the possible shapes of biomes could use only the first 24 bits of the 64-bit world seed, and biome shapes within a world seed could repeat beginning around blocks from 0,0. Biome generation overflowed at blocks from 0,0. However, as biomes were generated in a zoomed out stage, before it was 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 were only unique noise maps for continental/ocean biome generation, because a quadratic equation was 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 was colloquially known as a shadow seed. In this case, land biome and general ocean biomes were exactly the same in a pair of seeds, but ocean biome temperatures, structures and hills differed in the shadow seed. A user could find a shadow seed by adding the constant -7379792620528906219 to the negative of their current world seed, to obtain the shadow seed. Shadow seeds were exclusive to Java Edition.

With using 32-bit seeds and a different world generation algorithm, there were 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, bore some geographical relationship with the equivalent positive value seed of the 64-bit generation. The biome shapes deviated significantly. The specific generation of lush biomes and ocean variants was completely different on Bedrock.

ID