aboutsummaryrefslogtreecommitdiff
path: root/src/mapgen
diff options
context:
space:
mode:
Diffstat (limited to 'src/mapgen')
-rw-r--r--src/mapgen/dungeongen.cpp23
-rw-r--r--src/mapgen/dungeongen.h2
-rw-r--r--src/mapgen/mapgen.cpp2
-rw-r--r--src/mapgen/mapgen_v6.cpp2
4 files changed, 9 insertions, 20 deletions
diff --git a/src/mapgen/dungeongen.cpp b/src/mapgen/dungeongen.cpp
index 634139a27..b5d7ec7ad 100644
--- a/src/mapgen/dungeongen.cpp
+++ b/src/mapgen/dungeongen.cpp
@@ -55,14 +55,9 @@ DungeonGen::DungeonGen(const NodeDefManager *ndef,
// Default dungeon parameters
dp.seed = 0;
- dp.c_water = ndef->getId("mapgen_water_source");
- dp.c_river_water = ndef->getId("mapgen_river_water_source");
- dp.c_wall = ndef->getId("mapgen_cobble");
- dp.c_alt_wall = ndef->getId("mapgen_mossycobble");
- dp.c_stair = ndef->getId("mapgen_stair_cobble");
-
- if (dp.c_river_water == CONTENT_IGNORE)
- dp.c_river_water = ndef->getId("mapgen_water_source");
+ dp.c_wall = ndef->getId("mapgen_cobble");
+ dp.c_alt_wall = ndef->getId("mapgen_mossycobble");
+ dp.c_stair = ndef->getId("mapgen_stair_cobble");
dp.diagonal_dirs = false;
dp.only_in_ground = true;
@@ -107,17 +102,17 @@ void DungeonGen::generate(MMVManip *vm, u32 bseed, v3s16 nmin, v3s16 nmax)
vm->clearFlag(VMANIP_FLAG_DUNGEON_INSIDE | VMANIP_FLAG_DUNGEON_PRESERVE);
if (dp.only_in_ground) {
- // Set all air and water to be untouchable to make dungeons open to
- // caves and open air. Optionally set ignore to be untouchable to
- // prevent protruding dungeons.
+ // Set all air and liquid drawtypes to be untouchable to make dungeons
+ // open to air and liquids. Optionally set ignore to be untouchable to
+ // prevent projecting dungeons.
for (s16 z = nmin.Z; z <= nmax.Z; z++) {
for (s16 y = nmin.Y; y <= nmax.Y; y++) {
u32 i = vm->m_area.index(nmin.X, y, z);
for (s16 x = nmin.X; x <= nmax.X; x++) {
content_t c = vm->m_data[i].getContent();
- if (c == CONTENT_AIR || c == dp.c_water ||
- (preserve_ignore && c == CONTENT_IGNORE) ||
- c == dp.c_river_water)
+ NodeDrawType dtype = ndef->get(c).drawtype;
+ if (dtype == NDT_AIRLIKE || dtype == NDT_LIQUID ||
+ (preserve_ignore && c == CONTENT_IGNORE))
vm->m_flags[i] |= VMANIP_FLAG_DUNGEON_PRESERVE;
i++;
}
diff --git a/src/mapgen/dungeongen.h b/src/mapgen/dungeongen.h
index 182581447..1e3d8375d 100644
--- a/src/mapgen/dungeongen.h
+++ b/src/mapgen/dungeongen.h
@@ -41,8 +41,6 @@ int dir_to_facedir(v3s16 d);
struct DungeonParams {
s32 seed;
- content_t c_water;
- content_t c_river_water;
content_t c_wall;
content_t c_alt_wall;
content_t c_stair;
diff --git a/src/mapgen/mapgen.cpp b/src/mapgen/mapgen.cpp
index d967d428a..69aa174da 100644
--- a/src/mapgen/mapgen.cpp
+++ b/src/mapgen/mapgen.cpp
@@ -886,8 +886,6 @@ void MapgenBasic::generateDungeons(s16 max_stone_y,
DungeonParams dp;
dp.seed = seed;
- dp.c_water = c_water_source;
- dp.c_river_water = c_river_water_source;
dp.only_in_ground = true;
dp.corridor_len_min = 1;
diff --git a/src/mapgen/mapgen_v6.cpp b/src/mapgen/mapgen_v6.cpp
index 9a638bb53..92f131dcd 100644
--- a/src/mapgen/mapgen_v6.cpp
+++ b/src/mapgen/mapgen_v6.cpp
@@ -557,8 +557,6 @@ void MapgenV6::makeChunk(BlockMakeData *data)
DungeonParams dp;
dp.seed = seed;
- dp.c_water = c_water_source;
- dp.c_river_water = c_water_source;
dp.only_in_ground = true;
dp.corridor_len_min = 1;