diff options
author | Paramat <paramat@users.noreply.github.com> | 2018-04-29 07:20:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-29 07:20:46 +0100 |
commit | 54606e103d5b2d2bace6d57c45e48804c5dec487 (patch) | |
tree | 013c8ad66dfcc60c2ccb947c7e2c6cf030fcedde /src/mapgen/mapgen.cpp | |
parent | bb3baef30f8afcfec046050b1ef3b606a2c1248a (diff) | |
download | hax-minetest-server-54606e103d5b2d2bace6d57c45e48804c5dec487.tar.gz hax-minetest-server-54606e103d5b2d2bace6d57c45e48804c5dec487.zip |
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.
Diffstat (limited to 'src/mapgen/mapgen.cpp')
-rw-r--r-- | src/mapgen/mapgen.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp index 9aaead79d..eb562e769 100644 --- a/src/mapgen/mapgen.cpp +++ b/src/mapgen/mapgen.cpp @@ -824,21 +824,26 @@ void MapgenBasic::dustTopNodes() } -void MapgenBasic::generateCaves(s16 max_stone_y, s16 large_cave_depth) +void MapgenBasic::generateCavesNoiseIntersection(s16 max_stone_y) { - if (max_stone_y < node_min.Y) + if (node_min.Y > max_stone_y) return; CavesNoiseIntersection caves_noise(ndef, m_bmgr, csize, &np_cave1, &np_cave2, seed, cave_width); caves_noise.generateCaves(vm, node_min, node_max, biomemap); +} + - if (node_max.Y > large_cave_depth) +void MapgenBasic::generateCavesRandomWalk(s16 max_stone_y, s16 large_cave_depth) +{ + if (node_min.Y > max_stone_y || node_max.Y > large_cave_depth) return; PseudoRandom ps(blockseed + 21343); u32 bruises_count = ps.range(0, 2); + for (u32 i = 0; i < bruises_count; i++) { CavesRandomWalk cave(ndef, &gennotify, seed, water_level, c_water_source, c_lava_source, lava_depth, biomegen); @@ -849,7 +854,7 @@ void MapgenBasic::generateCaves(s16 max_stone_y, s16 large_cave_depth) } -bool MapgenBasic::generateCaverns(s16 max_stone_y) +bool MapgenBasic::generateCavernsNoise(s16 max_stone_y) { if (node_min.Y > max_stone_y || node_min.Y > cavern_limit) return false; |