parent
c08cc0533f
commit
1237206d4b
|
@ -1076,7 +1076,12 @@ Ore attributes
|
|||
See section "Flag Specifier Format".
|
||||
|
||||
Currently supported flags:
|
||||
`puff_cliffs`, `puff_additive_composition`.
|
||||
`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`
|
||||
If set, puff ore generation will not taper down large differences in displacement
|
||||
|
|
|
@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
|
||||
FlagDesc flagdesc_ore[] = {
|
||||
{"absheight", OREFLAG_ABSHEIGHT}, // Non-functional
|
||||
{"absheight", OREFLAG_ABSHEIGHT},
|
||||
{"puff_cliffs", OREFLAG_PUFF_CLIFFS},
|
||||
{"puff_additive_composition", OREFLAG_PUFF_ADDITIVE},
|
||||
{NULL, 0}
|
||||
|
@ -87,11 +87,22 @@ void Ore::resolveNodeNames()
|
|||
|
||||
size_t Ore::placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
|
||||
{
|
||||
if (!(nmin.Y <= y_max && nmax.Y >= y_min))
|
||||
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)
|
||||
return 0;
|
||||
|
||||
int actual_ymin = MYMAX(nmin.Y, y_min);
|
||||
int actual_ymax = MYMIN(nmax.Y, y_max);
|
||||
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);
|
||||
}
|
||||
if (clust_size >= actual_ymax - actual_ymin + 1)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -32,11 +32,14 @@ class MMVManip;
|
|||
|
||||
/////////////////// Ore generation flags
|
||||
|
||||
#define OREFLAG_ABSHEIGHT 0x01 // Non-functional but kept to not break flags
|
||||
#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,
|
||||
|
|
Loading…
Reference in New Issue