Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Mapgen: Fix light in tunnels at mapchunk borders
Don't excavate the overgenerated stone at node_max.Y + 1,
this creates a 'roof' over the tunnel, preventing light in
tunnels at mapchunk borders when generating mapchunks upwards.
Loading branch information
@@ -573,6 +573,12 @@ void MapgenFlat::generateCaves(s16 max_stone_y)
for (s16 y = node_max.Y + 1 ; y >= node_min.Y - 1 ;
y--, index3d -= ystride, vm->m_area .add_y (em, vi, -1 )) {
// Don't excavate the overgenerated stone at node_max.Y + 1,
// this creates a 'roof' over the tunnel, preventing light in
// tunnels at mapchunk borders when generating mapchunks upwards.
if (y > node_max.Y )
continue ;
content_t c = vm->m_data [vi].getContent ();
if (c == CONTENT_AIR || c == biome->c_water_top ||
c == biome->c_water ) {
@@ -701,6 +701,12 @@ void MapgenFractal::generateCaves(s16 max_stone_y)
for (s16 y = node_max.Y + 1 ; y >= node_min.Y - 1 ;
y--, index3d -= ystride, vm->m_area .add_y (em, vi, -1 )) {
// Don't excavate the overgenerated stone at node_max.Y + 1,
// this creates a 'roof' over the tunnel, preventing light in
// tunnels at mapchunk borders when generating mapchunks upwards.
if (y > node_max.Y )
continue ;
content_t c = vm->m_data [vi].getContent ();
if (c == CONTENT_AIR || c == biome->c_water_top ||
c == biome->c_water ) {
@@ -519,6 +519,12 @@ void MapgenV5::generateCaves(int max_stone_y)
for (s16 y = node_min.Y - 1 ; y <= node_max.Y + 1 ; y++) {
u32 vi = vm->m_area .index (node_min.X , y, z);
for (s16 x = node_min.X ; x <= node_max.X ; x++, vi++, index ++) {
// Don't excavate the overgenerated stone at node_max.Y + 1,
// this creates a 'roof' over the tunnel, preventing light in
// tunnels at mapchunk borders when generating mapchunks upwards.
if (y > node_max.Y )
continue ;
float d1 = contour (noise_cave1->result [index ]);
float d2 = contour (noise_cave2->result [index ]);
if (d1 * d2 > 0 .125f ) {
@@ -883,6 +883,12 @@ void MapgenV7::generateCaves(s16 max_stone_y)
for (s16 y = node_max.Y + 1 ; y >= node_min.Y - 1 ;
y--, index3d -= ystride, vm->m_area .add_y (em, vi, -1 )) {
// Don't excavate the overgenerated stone at node_max.Y + 1,
// this creates a 'roof' over the tunnel, preventing light in
// tunnels at mapchunk borders when generating mapchunks upwards.
if (y > node_max.Y )
continue ;
content_t c = vm->m_data [vi].getContent ();
if (c == CONTENT_AIR || c == biome->c_water_top ||
c == biome->c_water ) {
@@ -931,6 +931,12 @@ void MapgenValleys::generateCaves(s16 max_stone_y)
for (s16 y = node_max.Y + 1 ;
y >= node_min.Y - 1 ;
y--, index_3d -= ystride, vm->m_area .add_y (em, index_data, -1 )) {
// Don't excavate the overgenerated stone at node_max.Y + 1,
// this creates a 'roof' over the tunnel, preventing light in
// tunnels at mapchunk borders when generating mapchunks upwards.
if (y > node_max.Y )
continue ;
float terrain = noise_terrain_height->result [index_2d];
// Saves some time.
Toggle all file notes