Ores: Make 'absheight' flag non-functional
authorparamat <paramat@users.noreply.github.com>
Thu, 22 Jun 2017 05:50:22 +0000 (06:50 +0100)
committerparamat <mat.gregory@virginmedia.com>
Sun, 25 Jun 2017 04:01:42 +0000 (05:01 +0100)
The 'absheight' flag was added years ago for the floatlands of 'indev'
mapgen (now deleted). The feature mirrored all ore placement around y = 0
to place ores in floatlands.

In MTG we now use dedicated ore registrations for floatlands.

The feature is crude, inflexible, problematic and very rarely used, it
also makes ore vertical range code more complex.
Minetest 0.5 is a good chance to remove the feature.

The flag itself remains to not break flag values.

doc/lua_api.txt
src/mg_ore.cpp
src/mg_ore.h

index 540bbe1180b7bc90266f2a400852773c2fa50545..63d090ebe30b0cbcae02ad0c0a36814a26843707 100644 (file)
@@ -1076,12 +1076,7 @@ Ore attributes
 See section "Flag Specifier Format".
 
 Currently supported flags:
-`absheight`, `puff_cliffs`, `puff_additive_composition`.
-
-### `absheight`
-Also produce this same ore between the height range of `-y_max` and `-y_min`.
-
-Useful for having ore in sky realms without having to duplicate ore entries.
+`puff_cliffs`, `puff_additive_composition`.
 
 ### `puff_cliffs`
 If set, puff ore generation will not taper down large differences in displacement
index f959ca9e65b9fa760282baf392e620da9a26d5ab..73af2e2e6cdb9ededf1f4da84925237b3fe3b903 100644 (file)
@@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 
 FlagDesc flagdesc_ore[] = {
-       {"absheight",                 OREFLAG_ABSHEIGHT},
+       {"absheight",                 OREFLAG_ABSHEIGHT}, // Non-functional
        {"puff_cliffs",               OREFLAG_PUFF_CLIFFS},
        {"puff_additive_composition", OREFLAG_PUFF_ADDITIVE},
        {NULL,                        0}
@@ -87,22 +87,11 @@ void Ore::resolveNodeNames()
 
 size_t Ore::placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
 {
-       int in_range = 0;
-
-       in_range |= (nmin.Y <= y_max && nmax.Y >= y_min);
-       if (flags & OREFLAG_ABSHEIGHT)
-               in_range |= (nmin.Y >= -y_max && nmax.Y <= -y_min) << 1;
-       if (!in_range)
+       if (!(nmin.Y <= y_max && nmax.Y >= y_min))
                return 0;
 
-       int actual_ymin, actual_ymax;
-       if (in_range & ORE_RANGE_MIRROR) {
-               actual_ymin = MYMAX(nmin.Y, -y_max);
-               actual_ymax = MYMIN(nmax.Y, -y_min);
-       } else {
-               actual_ymin = MYMAX(nmin.Y, y_min);
-               actual_ymax = MYMIN(nmax.Y, y_max);
-       }
+       int actual_ymin = MYMAX(nmin.Y, y_min);
+       int actual_ymax = MYMIN(nmax.Y, y_max);
        if (clust_size >= actual_ymax - actual_ymin + 1)
                return 0;
 
index 4b052e07a29a3cbc69a548742c8c8e4241ecac61..5aeb3631c925c25299253f2da63f2aa7176be4f7 100644 (file)
@@ -32,14 +32,11 @@ class MMVManip;
 
 /////////////////// Ore generation flags
 
-#define OREFLAG_ABSHEIGHT     0x01
+#define OREFLAG_ABSHEIGHT     0x01 // Non-functional but kept to not break flags
 #define OREFLAG_PUFF_CLIFFS   0x02
 #define OREFLAG_PUFF_ADDITIVE 0x04
 #define OREFLAG_USE_NOISE     0x08
 
-#define ORE_RANGE_ACTUAL 1
-#define ORE_RANGE_MIRROR 2
-
 enum OreType {
        ORE_SCATTER,
        ORE_SHEET,