1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

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.
This commit is contained in:
Paramat 2018-04-29 07:20:46 +01:00 committed by GitHub
parent bb3baef30f
commit 54606e103d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 73 additions and 39 deletions

View file

@ -313,20 +313,25 @@ void MapgenV7::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 near_cavern = false;
// Generate tunnels first as caverns confuse them
generateCavesNoiseIntersection(stone_surface_max_y);
// Generate caverns
bool near_cavern = false;
if (spflags & MGV7_CAVERNS)
near_cavern = generateCaverns(stone_surface_max_y);
// Generate tunnels and classic caves
near_cavern = generateCavernsNoise(stone_surface_max_y);
// Generate large randomwalk caves
if (near_cavern)
// Disable classic caves in this mapchunk by setting
// 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