mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
MgV5/6/7: Generate dungeons above water level
Use/add stone_surface_max_y to speed-optimise/guide dungeon generation MgV7: Don't let mountain terrain chop dungeons at mapchunk borders Make mountain terrain update stone_surface_max_y for caves in mountains
This commit is contained in:
parent
938a3f2976
commit
7452d5399b
6 changed files with 25 additions and 15 deletions
|
@ -241,7 +241,7 @@ void MapgenV7::makeChunk(BlockMakeData *data)
|
|||
if (flags & MG_CAVES)
|
||||
generateCaves(stone_surface_max_y);
|
||||
|
||||
if (flags & MG_DUNGEONS) {
|
||||
if ((flags & MG_DUNGEONS) && (stone_surface_max_y >= node_min.Y)) {
|
||||
DungeonGen dgen(this, NULL);
|
||||
dgen.generate(blockseed, full_node_min, full_node_max);
|
||||
}
|
||||
|
@ -405,7 +405,7 @@ int MapgenV7::generateTerrain()
|
|||
int ymax = generateBaseTerrain();
|
||||
|
||||
if (spflags & MGV7_MOUNTAINS)
|
||||
generateMountainTerrain();
|
||||
ymax = generateMountainTerrain(ymax);
|
||||
|
||||
if (spflags & MGV7_RIDGES)
|
||||
generateRidgeTerrain();
|
||||
|
@ -453,10 +453,10 @@ int MapgenV7::generateBaseTerrain()
|
|||
}
|
||||
|
||||
|
||||
void MapgenV7::generateMountainTerrain()
|
||||
int MapgenV7::generateMountainTerrain(int ymax)
|
||||
{
|
||||
if (node_max.Y <= water_level)
|
||||
return;
|
||||
return ymax;
|
||||
|
||||
MapNode n_stone(c_stone);
|
||||
u32 j = 0;
|
||||
|
@ -466,14 +466,21 @@ void MapgenV7::generateMountainTerrain()
|
|||
u32 vi = vm->m_area.index(node_min.X, y, z);
|
||||
for (s16 x = node_min.X; x <= node_max.X; x++) {
|
||||
int index = (z - node_min.Z) * csize.X + (x - node_min.X);
|
||||
content_t c = vm->m_data[vi].getContent();
|
||||
|
||||
if (getMountainTerrainFromMap(j, index, y))
|
||||
if (getMountainTerrainFromMap(j, index, y)
|
||||
&& (c == CONTENT_AIR || c == c_water_source)) {
|
||||
vm->m_data[vi] = n_stone;
|
||||
if (y > ymax)
|
||||
ymax = y;
|
||||
}
|
||||
|
||||
vi++;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
return ymax;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue