forked from Mirrorlandia_minetest/minetest
Make sure all neighbors of changed fluids are activated
This should fix the remaining cases of fluid not advancing or not retreating.
This commit is contained in:
parent
774faf4e85
commit
56e9f97294
14
src/map.cpp
14
src/map.cpp
@ -1743,6 +1743,7 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
|
||||
*/
|
||||
switch (content_features(n0.getContent()).liquid_type) {
|
||||
case LIQUID_SOURCE:
|
||||
case LIQUID_FLOWING:
|
||||
// make sure source flows into all neighboring nodes
|
||||
for (u16 i = 0; i < num_flows; i++)
|
||||
if (flows[i].t != NEIGHBOR_UPPER)
|
||||
@ -1756,19 +1757,6 @@ void Map::transformLiquids(core::map<v3s16, MapBlock*> & modified_blocks)
|
||||
for (u16 i = 0; i < num_flows; i++)
|
||||
m_transforming_liquid.push_back(flows[i].p);
|
||||
break;
|
||||
case LIQUID_FLOWING:
|
||||
for (u16 i = 0; i < num_flows; i++) {
|
||||
u8 flow_level = (flows[i].n.param2 & LIQUID_LEVEL_MASK);
|
||||
// liquid_level is still the ORIGINAL level of this node.
|
||||
if (flows[i].t != NEIGHBOR_UPPER && ((flow_level < liquid_level || flow_level < new_node_level) ||
|
||||
flow_down_enabled))
|
||||
m_transforming_liquid.push_back(flows[i].p);
|
||||
}
|
||||
for (u16 i = 0; i < num_airs; i++) {
|
||||
if (airs[i].t != NEIGHBOR_UPPER && (airs[i].t == NEIGHBOR_LOWER || new_node_level > 0))
|
||||
m_transforming_liquid.push_back(airs[i].p);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
//dstream<<"Map::transformLiquids(): loopcount="<<loopcount<<std::endl;
|
||||
|
Loading…
Reference in New Issue
Block a user