From d00e8bd31a185a4000807de6d21eccce9f86671e Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sun, 19 May 2013 21:26:08 -0400 Subject: Fix nearly all warnings --- src/map.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/map.cpp') diff --git a/src/map.cpp b/src/map.cpp index 821805d4e..d5ab8eb1e 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -288,10 +288,10 @@ void Map::unspreadLight(enum LightBank bank, continue; // Calculate relative position in block - v3s16 relpos = pos - blockpos_last * MAP_BLOCKSIZE; + //v3s16 relpos = pos - blockpos_last * MAP_BLOCKSIZE; // Get node straight from the block - MapNode n = block->getNode(relpos); + //MapNode n = block->getNode(relpos); u8 oldlight = j->second; @@ -937,7 +937,7 @@ void Map::addNodeAndUpdate(v3s16 p, MapNode n, */ v3s16 toppos = p + v3s16(0,1,0); - v3s16 bottompos = p + v3s16(0,-1,0); + //v3s16 bottompos = p + v3s16(0,-1,0); bool node_under_sunlight = true; std::set light_sources; @@ -1246,7 +1246,7 @@ void Map::removeNodeAndUpdate(v3s16 p, // Get the brightest neighbour node and propagate light from it v3s16 n2p = getBrightestNeighbour(bank, p); try{ - MapNode n2 = getNode(n2p); + //MapNode n2 = getNode(n2p); lightNeighbors(bank, n2p, modified_blocks); } catch(InvalidPositionException &e) @@ -2831,7 +2831,7 @@ ServerMapSector * ServerMap::createSector(v2s16 p2d) sector = new ServerMapSector(this, p2d, m_gamedef); // Sector position on map in nodes - v2s16 nodepos2d = p2d * MAP_BLOCKSIZE; + //v2s16 nodepos2d = p2d * MAP_BLOCKSIZE; /* Insert to container -- cgit v1.2.3 From 6b2c46c4316cb5d2d153c13565c894a1ebec085c Mon Sep 17 00:00:00 2001 From: proller Date: Fri, 31 May 2013 22:57:59 +0400 Subject: Liquid adjusting: continue to drop --- src/content_abm.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++++--- src/map.cpp | 2 +- 2 files changed, 45 insertions(+), 4 deletions(-) (limited to 'src/map.cpp') diff --git a/src/content_abm.cpp b/src/content_abm.cpp index f19caf74e..3704fe83d 100644 --- a/src/content_abm.cpp +++ b/src/content_abm.cpp @@ -191,17 +191,58 @@ public: virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n) { ServerMap *map = &env->getServerMap(); - if (map->transforming_liquid_size() < 500) - map->transforming_liquid_add(p); + if (map->transforming_liquid_size() > 500) + return; + map->transforming_liquid_add(p); //if ((*map).m_transforming_liquid.size() < 500) (*map).m_transforming_liquid.push_back(p); } }; +class LiquidDropABM : public ActiveBlockModifier +{ +private: + std::set contents; + +public: + LiquidDropABM(ServerEnvironment *env, INodeDefManager *nodemgr) + { + std::set liquids; + nodemgr->getIds("group:liquid", liquids); + for(std::set::const_iterator k = liquids.begin(); k != liquids.end(); k++) + contents.insert(nodemgr->get(*k).liquid_alternative_source); + } + virtual std::set getTriggerContents() + { return contents; } + virtual std::set getRequiredNeighbors() + { + std::set neighbors; + neighbors.insert("mapgen_air"); + return neighbors; + } + virtual float getTriggerInterval() + { return 20.0; } + virtual u32 getTriggerChance() + { return 10; } + virtual void trigger(ServerEnvironment *env, v3s16 p, MapNode n) + { + ServerMap *map = &env->getServerMap(); + if (map->transforming_liquid_size() > 500) + return; + //todo: look around except top + MapNode n_below = map->getNodeNoEx(p - v3s16(0, 1, 0)); + if (n_below.getContent() != CONTENT_AIR) + return; + map->transforming_liquid_add(p); + } +}; + void add_legacy_abms(ServerEnvironment *env, INodeDefManager *nodedef) { env->addActiveBlockModifier(new GrowGrassABM()); env->addActiveBlockModifier(new RemoveGrassABM()); env->addActiveBlockModifier(new MakeTreesFromSaplingsABM(env, nodedef)); - if (g_settings->getBool("liquid_finite")) + if (g_settings->getBool("liquid_finite")) { env->addActiveBlockModifier(new LiquidFlowABM(env, nodedef)); + env->addActiveBlockModifier(new LiquidDropABM(env, nodedef)); + } } diff --git a/src/map.cpp b/src/map.cpp index d5ab8eb1e..43502253b 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1755,7 +1755,7 @@ void Map::transformLiquidsFinite(std::map & modified_blocks) } //relax up - if (relax && p0.Y <= water_level && liquid_levels[D_TOP] == 0 && + if (relax && ((p0.Y == water_level) || (fast_flood && p0.Y <= water_level)) && liquid_levels[D_TOP] == 0 && liquid_levels[D_BOTTOM] == LIQUID_LEVEL_SOURCE && total_level >= LIQUID_LEVEL_SOURCE * can_liquid_same_level- (can_liquid_same_level - relax) && -- cgit v1.2.3