Node resolver: Make error on fallback optional, disable for mapgen aliases
authorParamat <paramat@users.noreply.github.com>
Fri, 20 Apr 2018 19:26:30 +0000 (20:26 +0100)
committerGitHub <noreply@github.com>
Fri, 20 Apr 2018 19:26:30 +0000 (20:26 +0100)
src/mapgen/mg_biome.cpp
src/nodedef.cpp
src/nodedef.h

index 16e276b53b846035e43d4f5f86cbc48f8b8e2b7c..a6ee411798fe644931f309f248d96b517d53870c 100644 (file)
@@ -317,16 +317,16 @@ Biome *BiomeGenOriginal::calcBiomeFromNoise(float heat, float humidity, v3s16 po
 
 void Biome::resolveNodeNames()
 {
-       getIdFromNrBacklog(&c_top,           "mapgen_stone",              CONTENT_AIR);
-       getIdFromNrBacklog(&c_filler,        "mapgen_stone",              CONTENT_AIR);
-       getIdFromNrBacklog(&c_stone,         "mapgen_stone",              CONTENT_AIR);
-       getIdFromNrBacklog(&c_water_top,     "mapgen_water_source",       CONTENT_AIR);
-       getIdFromNrBacklog(&c_water,         "mapgen_water_source",       CONTENT_AIR);
-       getIdFromNrBacklog(&c_river_water,   "mapgen_river_water_source", CONTENT_AIR);
-       getIdFromNrBacklog(&c_riverbed,      "mapgen_stone",              CONTENT_AIR);
-       getIdFromNrBacklog(&c_dust,          "ignore",                    CONTENT_IGNORE);
-       getIdFromNrBacklog(&c_cave_liquid,   "ignore",                    CONTENT_IGNORE);
-       getIdFromNrBacklog(&c_dungeon,       "ignore",                    CONTENT_IGNORE);
-       getIdFromNrBacklog(&c_dungeon_alt,   "ignore",                    CONTENT_IGNORE);
-       getIdFromNrBacklog(&c_dungeon_stair, "ignore",                    CONTENT_IGNORE);
+       getIdFromNrBacklog(&c_top,           "mapgen_stone",              CONTENT_AIR,    false);
+       getIdFromNrBacklog(&c_filler,        "mapgen_stone",              CONTENT_AIR,    false);
+       getIdFromNrBacklog(&c_stone,         "mapgen_stone",              CONTENT_AIR,    false);
+       getIdFromNrBacklog(&c_water_top,     "mapgen_water_source",       CONTENT_AIR,    false);
+       getIdFromNrBacklog(&c_water,         "mapgen_water_source",       CONTENT_AIR,    false);
+       getIdFromNrBacklog(&c_river_water,   "mapgen_river_water_source", CONTENT_AIR,    false);
+       getIdFromNrBacklog(&c_riverbed,      "mapgen_stone",              CONTENT_AIR,    false);
+       getIdFromNrBacklog(&c_dust,          "ignore",                    CONTENT_IGNORE, false);
+       getIdFromNrBacklog(&c_cave_liquid,   "ignore",                    CONTENT_IGNORE, false);
+       getIdFromNrBacklog(&c_dungeon,       "ignore",                    CONTENT_IGNORE, false);
+       getIdFromNrBacklog(&c_dungeon_alt,   "ignore",                    CONTENT_IGNORE, false);
+       getIdFromNrBacklog(&c_dungeon_stair, "ignore",                    CONTENT_IGNORE, false);
 }
index eb176316600887b210752d376eaa5ee613e4c98a..e40a45f972665bf8a8d197532d490551dbd41de2 100644 (file)
@@ -1621,7 +1621,7 @@ void NodeResolver::nodeResolveInternal()
 
 
 bool NodeResolver::getIdFromNrBacklog(content_t *result_out,
-       const std::string &node_alt, content_t c_fallback)
+       const std::string &node_alt, content_t c_fallback, bool error_on_fallback)
 {
        if (m_nodenames_idx == m_nodenames.size()) {
                *result_out = c_fallback;
@@ -1639,8 +1639,9 @@ bool NodeResolver::getIdFromNrBacklog(content_t *result_out,
        }
 
        if (!success) {
-               errorstream << "NodeResolver: failed to resolve node name '" << name
-                       << "'." << std::endl;
+               if (error_on_fallback)
+                       errorstream << "NodeResolver: failed to resolve node name '" << name
+                               << "'." << std::endl;
                c = c_fallback;
        }
 
index f99f7f3219be6097982cb029e7c3dd0fd9e32725..058eebb7e865cf984873a2cab937eb7dd62d1760 100644 (file)
@@ -733,9 +733,10 @@ public:
        virtual void resolveNodeNames() = 0;
 
        bool getIdFromNrBacklog(content_t *result_out,
-               const std::string &node_alt, content_t c_fallback);
+               const std::string &node_alt, content_t c_fallback,
+               bool error_on_fallback = true);
        bool getIdsFromNrBacklog(std::vector<content_t> *result_out,
-               bool all_required=false, content_t c_fallback=CONTENT_IGNORE);
+               bool all_required = false, content_t c_fallback = CONTENT_IGNORE);
 
        void nodeResolveInternal();