Modify CONTENT_AIR and CONTENT_IGNORE handling in nodedef.cpp

This commit is contained in:
Perttu Ahola 2011-11-25 22:45:55 +02:00
parent 425db289d5
commit 1f53ca5f4c

@ -330,7 +330,10 @@ public:
f.diggable = false; f.diggable = false;
f.buildable_to = true; f.buildable_to = true;
f.air_equivalent = true; f.air_equivalent = true;
set(CONTENT_AIR, f); // Insert directly into containers
content_t c = CONTENT_AIR;
m_content_features[c] = f;
m_name_id_mapping.set(c, f.name);
} }
// Set CONTENT_IGNORE // Set CONTENT_IGNORE
{ {
@ -346,7 +349,10 @@ public:
// A way to remove accidental CONTENT_IGNOREs // A way to remove accidental CONTENT_IGNOREs
f.buildable_to = true; f.buildable_to = true;
f.air_equivalent = true; f.air_equivalent = true;
set(CONTENT_IGNORE, f); // Insert directly into containers
content_t c = CONTENT_IGNORE;
m_content_features[c] = f;
m_name_id_mapping.set(c, f.name);
} }
} }
// CONTENT_IGNORE = not found // CONTENT_IGNORE = not found
@ -415,6 +421,12 @@ public:
infostream<<"registerNode: registering content id \""<<c infostream<<"registerNode: registering content id \""<<c
<<"\": name=\""<<def.name<<"\""<<std::endl; <<"\": name=\""<<def.name<<"\""<<std::endl;
assert(c <= MAX_CONTENT); assert(c <= MAX_CONTENT);
// Don't allow redefining CONTENT_IGNORE (but allow air)
if(def.name == "ignore" || c == CONTENT_IGNORE){
infostream<<"registerNode: WARNING: Ignoring "
<<"CONTENT_IGNORE redefinition"<<std::endl;
return;
}
// Check that the special contents are not redefined as different id // Check that the special contents are not redefined as different id
// because it would mess up everything // because it would mess up everything
if((def.name == "ignore" && c != CONTENT_IGNORE) || if((def.name == "ignore" && c != CONTENT_IGNORE) ||