diff options
author | proller <proller@github.com> | 2013-04-06 19:32:59 +0400 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2013-04-06 12:09:59 -0400 |
commit | 120f02e20b941969be241363b93e2d918bb9e7a6 (patch) | |
tree | 96185074de6af33b3cea49e0876239f5c01825ab /src | |
parent | becd8c03fd4c79422f2f829c6ec844888c80356c (diff) | |
download | minetest-120f02e20b941969be241363b93e2d918bb9e7a6.tar.gz minetest-120f02e20b941969be241363b93e2d918bb9e7a6.tar.bz2 minetest-120f02e20b941969be241363b93e2d918bb9e7a6.zip |
Don't flow finite liquid into an unloaded chunk
Diffstat (limited to 'src')
-rw-r--r-- | src/map.cpp | 12 | ||||
-rw-r--r-- | src/mapgen_indev.cpp | 4 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/map.cpp b/src/map.cpp index 5d6b79fb0..39f5e30fb 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1763,6 +1763,11 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks) total_level = LIQUID_LEVEL_SOURCE * can_liquid_same_level; } + // prevent lakes in air under unloaded blocks + if (p0.Y > water_level && neighbors[D_BOTTOM].n.getContent() == CONTENT_IGNORE) { + total_level = 0; + } + // calculate self level 5 blocks u8 want_level = total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level @@ -1807,8 +1812,8 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks) } for (u16 ii = 0; ii < 7; ii++) // infinity and cave flood optimization - if (liquid_levels_want[ii] >= 0 && - (neighbors[ii].i || + if ( neighbors[ii].i || + (liquid_levels_want[ii] >= 0 && (fast_flood && p0.Y < water_level && (initial_size >= 1000 && ii != D_TOP @@ -1916,8 +1921,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks) if(!suspect.empty()){ // Blame suspect - RollbackScopeActor rollback_scope(m_gamedef->rollback(), - suspect, true); + RollbackScopeActor rollback_scope(m_gamedef->rollback(), suspect, true); // Get old node for rollback RollbackNode rollback_oldnode(this, p0, m_gamedef); // Set node diff --git a/src/mapgen_indev.cpp b/src/mapgen_indev.cpp index 5d455827a..5c842b6a5 100644 --- a/src/mapgen_indev.cpp +++ b/src/mapgen_indev.cpp @@ -265,9 +265,9 @@ void MapgenIndev::defineCave(Cave & cave, PseudoRandom ps, v3s16 node_min, bool cave.part_max_length_rs = ps.range(2,4); if (node_min.Y < -100 && !ps.range(0, farscale(0.2, node_min.X,node_min.Y,node_min.Z)*30)) { //huge cave.flooded = !ps.range(0, 3); - cave.tunnel_routepoints = ps.range(5, 20); + cave.tunnel_routepoints = ps.range(5, 30); cave.min_tunnel_diameter = 30; - cave.max_tunnel_diameter = ps.range(40, ps.range(80,120)); + cave.max_tunnel_diameter = ps.range(40, ps.range(80,200)); } else { cave.tunnel_routepoints = ps.range(5, ps.range(15,30)); cave.min_tunnel_diameter = 5; |