summaryrefslogtreecommitdiff
path: root/src/mapgen.cpp
diff options
context:
space:
mode:
authorPilzAdam <pilzadam@minetest.net>2013-08-02 00:29:27 +0200
committerPilzAdam <pilzadam@minetest.net>2013-08-02 00:55:16 +0200
commit0b77588e87b0eeedd624eb0d6c2559aad10104ad (patch)
tree35614cde27a84348ea258af264c96135b864b0c3 /src/mapgen.cpp
parent06cdce1e1231fb5946ac9750f9b53b53c6f7e5f8 (diff)
downloadminetest-0b77588e87b0eeedd624eb0d6c2559aad10104ad.tar.gz
minetest-0b77588e87b0eeedd624eb0d6c2559aad10104ad.tar.bz2
minetest-0b77588e87b0eeedd624eb0d6c2559aad10104ad.zip
Allow multiple 'wherein' nodes in oredef
Diffstat (limited to 'src/mapgen.cpp')
-rw-r--r--src/mapgen.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/mapgen.cpp b/src/mapgen.cpp
index d285129fb..f446d05b7 100644
--- a/src/mapgen.cpp
+++ b/src/mapgen.cpp
@@ -91,18 +91,17 @@ void Ore::resolveNodeNames(INodeDefManager *ndef) {
if (ore == CONTENT_IGNORE) {
errorstream << "Ore::resolveNodeNames: ore node '"
<< ore_name << "' not defined";
- ore = CONTENT_AIR;
- wherein = CONTENT_AIR;
+ ore = CONTENT_AIR;
+ wherein.push_back(CONTENT_AIR);
+ return;
}
}
- if (wherein == CONTENT_IGNORE) {
- wherein = ndef->getId(wherein_name);
- if (wherein == CONTENT_IGNORE) {
- errorstream << "Ore::resolveNodeNames: wherein node '"
- << wherein_name << "' not defined";
- ore = CONTENT_AIR;
- wherein = CONTENT_AIR;
+ for (size_t i=0; i != wherein_names.size(); i++) {
+ std::string name = wherein_names[i];
+ content_t c = ndef->getId(name);
+ if (c != CONTENT_IGNORE) {
+ wherein.push_back(c);
}
}
}
@@ -161,8 +160,9 @@ void OreScatter::generate(ManualMapVoxelManipulator *vm, int seed,
continue;
u32 i = vm->m_area.index(x0 + x1, y0 + y1, z0 + z1);
- if (vm->m_data[i].getContent() == wherein)
- vm->m_data[i] = n_ore;
+ for (size_t ii = 0; ii < wherein.size(); ii++)
+ if (vm->m_data[i].getContent() == wherein[ii])
+ vm->m_data[i] = n_ore;
}
}
}
@@ -199,8 +199,9 @@ void OreSheet::generate(ManualMapVoxelManipulator *vm, int seed,
if (!vm->m_area.contains(i))
continue;
- if (vm->m_data[i].getContent() == wherein)
- vm->m_data[i] = n_ore;
+ for (size_t ii = 0; ii < wherein.size(); ii++)
+ if (vm->m_data[i].getContent() == wherein[ii])
+ vm->m_data[i] = n_ore;
}
}
}