parent
c08cc0533f
commit
1237206d4b
|
@ -1076,7 +1076,12 @@ Ore attributes
|
||||||
See section "Flag Specifier Format".
|
See section "Flag Specifier Format".
|
||||||
|
|
||||||
Currently supported flags:
|
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`
|
### `puff_cliffs`
|
||||||
If set, puff ore generation will not taper down large differences in displacement
|
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[] = {
|
FlagDesc flagdesc_ore[] = {
|
||||||
{"absheight", OREFLAG_ABSHEIGHT}, // Non-functional
|
{"absheight", OREFLAG_ABSHEIGHT},
|
||||||
{"puff_cliffs", OREFLAG_PUFF_CLIFFS},
|
{"puff_cliffs", OREFLAG_PUFF_CLIFFS},
|
||||||
{"puff_additive_composition", OREFLAG_PUFF_ADDITIVE},
|
{"puff_additive_composition", OREFLAG_PUFF_ADDITIVE},
|
||||||
{NULL, 0}
|
{NULL, 0}
|
||||||
|
@ -87,11 +87,22 @@ void Ore::resolveNodeNames()
|
||||||
|
|
||||||
size_t Ore::placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
|
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;
|
return 0;
|
||||||
|
|
||||||
int actual_ymin = MYMAX(nmin.Y, y_min);
|
int actual_ymin, actual_ymax;
|
||||||
int actual_ymax = MYMIN(nmax.Y, y_max);
|
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)
|
if (clust_size >= actual_ymax - actual_ymin + 1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -32,11 +32,14 @@ class MMVManip;
|
||||||
|
|
||||||
/////////////////// Ore generation flags
|
/////////////////// 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_CLIFFS 0x02
|
||||||
#define OREFLAG_PUFF_ADDITIVE 0x04
|
#define OREFLAG_PUFF_ADDITIVE 0x04
|
||||||
#define OREFLAG_USE_NOISE 0x08
|
#define OREFLAG_USE_NOISE 0x08
|
||||||
|
|
||||||
|
#define ORE_RANGE_ACTUAL 1
|
||||||
|
#define ORE_RANGE_MIRROR 2
|
||||||
|
|
||||||
enum OreType {
|
enum OreType {
|
||||||
ORE_SCATTER,
|
ORE_SCATTER,
|
||||||
ORE_SHEET,
|
ORE_SHEET,
|
||||||
|
|
Loading…
Reference in New Issue