]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/mapgen/mapgen.cpp
Biomemap: Avoid empty biomemap entry to fix failing biome dust (#7393)
[dragonfireclient.git] / src / mapgen / mapgen.cpp
index 6ffe0ec1e1a7ebc40f6a5fffa31cfa67e9bec7dd..eb7803144bb7653a92dc87df0b88136e4f218a1f 100644 (file)
@@ -692,6 +692,7 @@ void MapgenBasic::generateBiomes()
                                // (Re)calculate biome
                                biome = biomegen->getBiomeAtIndex(index, v3s16(x, y, z));
 
+                               // Add biome to biomemap at first stone surface detected
                                if (biomemap[index] == BIOME_NONE && is_stone_surface)
                                        biomemap[index] = biome->index;
 
@@ -761,6 +762,19 @@ void MapgenBasic::generateBiomes()
 
                        VoxelArea::add_y(em, vi, -1);
                }
+               // If no stone surface was detected in this mapchunk column the biomemap
+               // will be empty for this (x, z) position. Add the currently active
+               // biome to the biomemap, or if biome is NULL calculate it for this
+               // position.
+               if (biomemap[index] == BIOME_NONE) {
+                       if (biome) {
+                               biomemap[index] = biome->index;
+                       } else {
+                               biome =
+                                       biomegen->getBiomeAtIndex(index, v3s16(x, node_min.Y, z));
+                               biomemap[index] = biome->index;
+                       }
+               }
        }
 }