Skip to content

Commit 120f02e

Browse files
prollerkwolekr
authored andcommittedApr 6, 2013
Don't flow finite liquid into an unloaded chunk
1 parent becd8c0 commit 120f02e

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed
 

‎src/map.cpp

+8-4
Original file line numberDiff line numberDiff line change
@@ -1763,6 +1763,11 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
17631763
total_level = LIQUID_LEVEL_SOURCE * can_liquid_same_level;
17641764
}
17651765

1766+
// prevent lakes in air under unloaded blocks
1767+
if (p0.Y > water_level && neighbors[D_BOTTOM].n.getContent() == CONTENT_IGNORE) {
1768+
total_level = 0;
1769+
}
1770+
17661771
// calculate self level 5 blocks
17671772
u8 want_level =
17681773
total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level
@@ -1807,8 +1812,8 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
18071812
}
18081813

18091814
for (u16 ii = 0; ii < 7; ii++) // infinity and cave flood optimization
1810-
if (liquid_levels_want[ii] >= 0 &&
1811-
(neighbors[ii].i ||
1815+
if ( neighbors[ii].i ||
1816+
(liquid_levels_want[ii] >= 0 &&
18121817
(fast_flood && p0.Y < water_level &&
18131818
(initial_size >= 1000
18141819
&& ii != D_TOP
@@ -1916,8 +1921,7 @@ void Map::transformLiquidsFinite(std::map<v3s16, MapBlock*> & modified_blocks)
19161921

19171922
if(!suspect.empty()){
19181923
// Blame suspect
1919-
RollbackScopeActor rollback_scope(m_gamedef->rollback(),
1920-
suspect, true);
1924+
RollbackScopeActor rollback_scope(m_gamedef->rollback(), suspect, true);
19211925
// Get old node for rollback
19221926
RollbackNode rollback_oldnode(this, p0, m_gamedef);
19231927
// Set node

‎src/mapgen_indev.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -265,9 +265,9 @@ void MapgenIndev::defineCave(Cave & cave, PseudoRandom ps, v3s16 node_min, bool
265265
cave.part_max_length_rs = ps.range(2,4);
266266
if (node_min.Y < -100 && !ps.range(0, farscale(0.2, node_min.X,node_min.Y,node_min.Z)*30)) { //huge
267267
cave.flooded = !ps.range(0, 3);
268-
cave.tunnel_routepoints = ps.range(5, 20);
268+
cave.tunnel_routepoints = ps.range(5, 30);
269269
cave.min_tunnel_diameter = 30;
270-
cave.max_tunnel_diameter = ps.range(40, ps.range(80,120));
270+
cave.max_tunnel_diameter = ps.range(40, ps.range(80,200));
271271
} else {
272272
cave.tunnel_routepoints = ps.range(5, ps.range(15,30));
273273
cave.min_tunnel_diameter = 5;

0 commit comments

Comments
 (0)
Please sign in to comment.