Index: source/Generating/DistortedHeightmap.cpp =================================================================== --- source/Generating/DistortedHeightmap.cpp (revision 1471) +++ source/Generating/DistortedHeightmap.cpp (working copy) @@ -273,7 +273,43 @@ } else { - a_ChunkDesc.SetBlockType(x, y, z, (LastAir == y + 1) ? E_BLOCK_GRASS : E_BLOCK_DIRT); + switch (a_ChunkDesc.GetBiome(x, z)) + { + case biOcean: + case biPlains: + case biExtremeHills: + case biForest: + case biTaiga: + case biSwampland: + case biRiver: + case biFrozenOcean: + case biFrozenRiver: + case biIcePlains: + case biIceMountains: + case biForestHills: + case biTaigaHills: + case biExtremeHillsEdge: + case biJungle: + case biJungleHills: + { + a_ChunkDesc.SetBlockType(x, y, z, (LastAir == y + 1) ? E_BLOCK_GRASS : E_BLOCK_DIRT); + break; + } + case biDesertHills: + case biDesert: + case biBeach: + { + a_ChunkDesc.SetBlockType(x, y - 10, z, (LastAir == y - 1) ? E_BLOCK_SANDSTONE : E_BLOCK_SANDSTONE); + a_ChunkDesc.SetBlockType(x, y, z, (LastAir == y + 1) ? E_BLOCK_SAND : E_BLOCK_SAND); + break; + } + case biMushroomIsland: + case biMushroomShore: + { + a_ChunkDesc.SetBlockType(x, y, z, (LastAir == y + 1) ? E_BLOCK_MYCELIUM : E_BLOCK_DIRT); + break; + } + } } } // for y a_ChunkDesc.SetBlockType(x, 0, z, E_BLOCK_BEDROCK);