Fix alpha for liquid nodes (#5494)
[oweals/minetest.git] / src / mapgen_v6.cpp
index d4e3fa8d765871420601c2b214d8045256de67f9..f3e893f58757ea3f7b72a9359f5dc0d514d12ad2 100644 (file)
@@ -99,6 +99,8 @@ MapgenV6::MapgenV6(int mapgenid, MapgenV6Params *params, EmergeManager *emerge)
        c_snowblock       = ndef->getId("mapgen_snowblock");
        c_ice             = ndef->getId("mapgen_ice");
 
+       if (c_gravel == CONTENT_IGNORE)
+               c_gravel = c_stone;
        if (c_desert_stone == CONTENT_IGNORE)
                c_desert_stone = c_stone;
        if (c_desert_sand == CONTENT_IGNORE)
@@ -562,34 +564,47 @@ void MapgenV6::makeChunk(BlockMakeData *data)
        if ((flags & MG_DUNGEONS) && (stone_surface_max_y >= node_min.Y)) {
                DungeonParams dp;
 
-               dp.seed = seed;
-               dp.c_water       = c_water_source;
-               dp.c_river_water = c_water_source;
-               dp.rooms_min     = 2;
-               dp.rooms_max     = 16;
-               dp.y_min         = -MAX_MAP_GENERATION_LIMIT;
-               dp.y_max         = MAX_MAP_GENERATION_LIMIT;
-               dp.np_density    = NoiseParams(0.9, 0.5, v3f(500.0, 500.0, 500.0), 0, 2, 0.8, 2.0);
-               dp.np_alt_wall   = NoiseParams(-0.4, 1.0, v3f(40.0, 40.0, 40.0), 32474, 6, 1.1, 2.0);
+               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;
+               dp.corridor_len_max = 13;
+               dp.rooms_min        = 2;
+               dp.rooms_max        = 16;
+               dp.y_min            = -MAX_MAP_GENERATION_LIMIT;
+               dp.y_max            = MAX_MAP_GENERATION_LIMIT;
+
+               dp.np_density
+                       = NoiseParams(0.9, 0.5, v3f(500.0, 500.0, 500.0), 0, 2, 0.8, 2.0);
+               dp.np_alt_wall
+                       = NoiseParams(-0.4, 1.0, v3f(40.0, 40.0, 40.0), 32474, 6, 1.1, 2.0);
 
                if (getBiome(0, v2s16(node_min.X, node_min.Z)) == BT_DESERT) {
-                       dp.c_wall     = c_desert_stone;
-                       dp.c_alt_wall = CONTENT_IGNORE;
-                       dp.c_stair    = c_stair_desert_stone;
-
-                       dp.diagonal_dirs = true;
-                       dp.holesize      = v3s16(2, 3, 2);
-                       dp.roomsize      = v3s16(2, 5, 2);
-                       dp.notifytype    = GENNOTIFY_TEMPLE;
+                       dp.c_wall              = c_desert_stone;
+                       dp.c_alt_wall          = CONTENT_IGNORE;
+                       dp.c_stair             = c_stair_desert_stone;
+
+                       dp.diagonal_dirs       = true;
+                       dp.holesize            = v3s16(2, 3, 2);
+                       dp.room_size_min       = v3s16(6, 9, 6);
+                       dp.room_size_max       = v3s16(10, 11, 10);
+                       dp.room_size_large_min = v3s16(10, 13, 10);
+                       dp.room_size_large_max = v3s16(18, 21, 18);
+                       dp.notifytype          = GENNOTIFY_TEMPLE;
                } else {
-                       dp.c_wall     = c_cobble;
-                       dp.c_alt_wall = c_mossycobble;
-                       dp.c_stair    = c_stair_cobble;
-
-                       dp.diagonal_dirs = false;
-                       dp.holesize      = v3s16(1, 2, 1);
-                       dp.roomsize      = v3s16(0, 0, 0);
-                       dp.notifytype    = GENNOTIFY_DUNGEON;
+                       dp.c_wall              = c_cobble;
+                       dp.c_alt_wall          = c_mossycobble;
+                       dp.c_stair             = c_stair_cobble;
+
+                       dp.diagonal_dirs       = false;
+                       dp.holesize            = v3s16(1, 2, 1);
+                       dp.room_size_min       = v3s16(4, 4, 4);
+                       dp.room_size_max       = v3s16(8, 6, 8);
+                       dp.room_size_large_min = v3s16(8, 8, 8);
+                       dp.room_size_large_max = v3s16(16, 16, 16);
+                       dp.notifytype          = GENNOTIFY_DUNGEON;
                }
 
                DungeonGen dgen(ndef, &gennotify, &dp);