From 54606e103d5b2d2bace6d57c45e48804c5dec487 Mon Sep 17 00:00:00 2001 From: Paramat Date: Sun, 29 Apr 2018 07:20:46 +0100 Subject: Mapgen caves: Re-order generation to fix cavern bug Previously, caverns confused tunnel generation causing biome top and filler nodes to appear in caverns. Split 'generateCaves()' into 2 functions to separate tunnel and large randomwalk cave generation. In each mapgen re-order cave generation to generate tunnels before caverns. --- src/mapgen/mapgen_carpathian.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'src/mapgen/mapgen_carpathian.cpp') diff --git a/src/mapgen/mapgen_carpathian.cpp b/src/mapgen/mapgen_carpathian.cpp index 37c769693..4347f8479 100644 --- a/src/mapgen/mapgen_carpathian.cpp +++ b/src/mapgen/mapgen_carpathian.cpp @@ -250,20 +250,25 @@ void MapgenCarpathian::makeChunk(BlockMakeData *data) biomegen->calcBiomeNoise(node_min); generateBiomes(); - // Generate caverns, tunnels and classic caves + // Generate tunnels, caverns and large randomwalk caves if (flags & MG_CAVES) { - bool has_cavern = false; + // Generate tunnels first as caverns confuse them + generateCavesNoiseIntersection(stone_surface_max_y); + // Generate caverns + bool near_cavern = false; if (spflags & MGCARPATHIAN_CAVERNS) - has_cavern = generateCaverns(stone_surface_max_y); - // Generate tunnels and classic caves - if (has_cavern) - // Disable classic caves in this mapchunk by setting + near_cavern = generateCavernsNoise(stone_surface_max_y); + + // Generate large randomwalk caves + if (near_cavern) + // Disable large randomwalk caves in this mapchunk by setting // 'large cave depth' to world base. Avoids excessive liquid in // large caverns and floating blobs of overgenerated liquid. - generateCaves(stone_surface_max_y, -MAX_MAP_GENERATION_LIMIT); + generateCavesRandomWalk(stone_surface_max_y, + -MAX_MAP_GENERATION_LIMIT); else - generateCaves(stone_surface_max_y, large_cave_depth); + generateCavesRandomWalk(stone_surface_max_y, large_cave_depth); } // Generate dungeons -- cgit v1.2.3