summaryrefslogtreecommitdiff
path: root/src/mg_ore.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mg_ore.h')
-rw-r--r--src/mg_ore.h33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/mg_ore.h b/src/mg_ore.h
index ffe8cfe50..2e065cee3 100644
--- a/src/mg_ore.h
+++ b/src/mg_ore.h
@@ -30,17 +30,18 @@ class MMVManip;
/////////////////// Ore generation flags
-// Use absolute value of height to determine ore placement
-#define OREFLAG_ABSHEIGHT 0x01
-#define OREFLAG_USE_NOISE 0x08
+#define OREFLAG_ABSHEIGHT 0x01
+#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,
+ ORE_PUFF,
ORE_BLOB,
ORE_VEIN,
};
@@ -60,7 +61,7 @@ public:
s16 y_max;
u8 ore_param2; // to set node-specific attributes
u32 flags; // attributes for this ore
- float nthresh; // threshhold for noise at which an ore is placed
+ float nthresh; // threshold for noise at which an ore is placed
NoiseParams np; // noise for distribution of clusters (NULL for uniform scattering)
Noise *noise;
std::set<u8> biomes;
@@ -87,6 +88,26 @@ class OreSheet : public Ore {
public:
static const bool NEEDS_NOISE = true;
+ u16 column_height_min;
+ u16 column_height_max;
+ float column_midpoint_factor;
+
+ virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
+ v3s16 nmin, v3s16 nmax, u8 *biomemap);
+};
+
+class OrePuff : public Ore {
+public:
+ static const bool NEEDS_NOISE = true;
+
+ NoiseParams np_puff_top;
+ NoiseParams np_puff_bottom;
+ Noise *noise_puff_top;
+ Noise *noise_puff_bottom;
+
+ OrePuff();
+ virtual ~OrePuff();
+
virtual void generate(MMVManip *vm, int mapseed, u32 blockseed,
v3s16 nmin, v3s16 nmax, u8 *biomemap);
};
@@ -130,6 +151,8 @@ public:
return new OreScatter;
case ORE_SHEET:
return new OreSheet;
+ case ORE_PUFF:
+ return new OrePuff;
case ORE_BLOB:
return new OreBlob;
case ORE_VEIN: