diff options
author | paramat <paramat@users.noreply.github.com> | 2017-07-13 21:03:16 +0100 |
---|---|---|
committer | paramat <mat.gregory@virginmedia.com> | 2017-07-22 00:56:55 +0100 |
commit | dc9e4517a89c3e67585908c88c01442c4d6e3efa (patch) | |
tree | d58aac4b2be752765193e7c286abc970befc6949 /src/mapgen_v7.cpp | |
parent | 49920cfe8dc7869bb8235c6fe2b8ef26e2a523ca (diff) | |
download | minetest-dc9e4517a89c3e67585908c88c01442c4d6e3efa.tar.gz minetest-dc9e4517a89c3e67585908c88c01442c4d6e3efa.tar.bz2 minetest-dc9e4517a89c3e67585908c88c01442c4d6e3efa.zip |
Mgv7: Add option to repeat surface biomes in floatlands
Diffstat (limited to 'src/mapgen_v7.cpp')
-rw-r--r-- | src/mapgen_v7.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/mapgen_v7.cpp b/src/mapgen_v7.cpp index 4b263bdb3..cdf76993d 100644 --- a/src/mapgen_v7.cpp +++ b/src/mapgen_v7.cpp @@ -40,11 +40,12 @@ with this program; if not, write to the Free Software Foundation, Inc., FlagDesc flagdesc_mapgen_v7[] = { - {"mountains", MGV7_MOUNTAINS}, - {"ridges", MGV7_RIDGES}, - {"floatlands", MGV7_FLOATLANDS}, - {"caverns", MGV7_CAVERNS}, - {NULL, 0} + {"mountains", MGV7_MOUNTAINS}, + {"ridges", MGV7_RIDGES}, + {"floatlands", MGV7_FLOATLANDS}, + {"caverns", MGV7_CAVERNS}, + {"biomerepeat", MGV7_BIOMEREPEAT}, + {NULL, 0} }; @@ -285,6 +286,12 @@ void MapgenV7::makeChunk(BlockMakeData *data) blockseed = getBlockSeed2(full_node_min, seed); + // Get zero level for biomes and decorations + // Optionally repeat surface biomes in floatlands + s16 biome_zero_level = ((spflags & MGV7_FLOATLANDS) && + (spflags & MGV7_BIOMEREPEAT) && node_max.Y >= shadow_limit) ? + floatland_level - 1 : water_level - 1; + // Generate base and mountain terrain // An initial heightmap is no longer created here for use in generateRidgeTerrain() s16 stone_surface_max_y = generateTerrain(); @@ -298,7 +305,7 @@ void MapgenV7::makeChunk(BlockMakeData *data) // Init biome generator, place biome-specific nodes, and build biomemap biomegen->calcBiomeNoise(node_min); - MgStoneType stone_type = generateBiomes(water_level - 1); + MgStoneType stone_type = generateBiomes(biome_zero_level); // Generate caverns, tunnels and classic caves if (flags & MG_CAVES) { @@ -323,7 +330,7 @@ void MapgenV7::makeChunk(BlockMakeData *data) // Generate the registered decorations if (flags & MG_DECORATIONS) m_emerge->decomgr->placeAllDecos(this, blockseed, - node_min, node_max, water_level - 1); + node_min, node_max, biome_zero_level); // Generate the registered ores m_emerge->oremgr->placeAllOres(this, blockseed, |