mirror of
https://github.com/minetest/minetest.git
synced 2024-11-27 10:03:45 +01:00
Vary ore sheet y position by noise
This commit is contained in:
parent
8d13967aa3
commit
26cad481d0
@ -383,9 +383,12 @@ All default ores are of the uniformly-distributed scatter type.
|
|||||||
that point is greater than the noise_threshhold, giving the ability to create a non-equal
|
that point is greater than the noise_threshhold, giving the ability to create a non-equal
|
||||||
distribution of ore.
|
distribution of ore.
|
||||||
- sheet
|
- sheet
|
||||||
Creates a sheet of ore in a blob shape according to the 2d perlin noise described by
|
Creates a sheet of ore in a blob shape according to the 2d perlin noise described by noise_params.
|
||||||
the noise_params structure. The height of the blob is randomly scattered, with a maximum
|
The relative height of the sheet can be controlled by the same perlin noise as well, by specifying
|
||||||
height of clust_size. Here, clust_scarcity and clust_num_ores are ignored.
|
a non-zero 'scale' parameter in noise_params. IMPORTANT: The noise is not transformed by offset or
|
||||||
|
scale when comparing against the noise threshhold, but scale is used to determine relative height.
|
||||||
|
The height of the blob is randomly scattered, with a maximum height of clust_size.
|
||||||
|
clust_scarcity and clust_num_ores are ignored.
|
||||||
This is essentially an improved version of the so-called "stratus" ore seen in some unofficial mods.
|
This is essentially an improved version of the so-called "stratus" ore seen in some unofficial mods.
|
||||||
- claylike - NOT YET IMPLEMENTED
|
- claylike - NOT YET IMPLEMENTED
|
||||||
Places ore if there are no more than clust_scarcity number of specified nodes within a Von Neumann
|
Places ore if there are no more than clust_scarcity number of specified nodes within a Von Neumann
|
||||||
|
@ -165,12 +165,12 @@ void OreSheet::generate(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) {
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
for (int z = z0; z != z1; z++)
|
for (int z = z0; z != z1; z++)
|
||||||
for (int x = x0; x != x1; x++) {
|
for (int x = x0; x != x1; x++) {
|
||||||
|
float noiseval = noise->result[index++];
|
||||||
if (noise->result[index++] < nthresh)
|
if (noiseval < nthresh)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int height = max_height * (1. / pr.range(1, 3));
|
int height = max_height * (1. / pr.range(1, 3));
|
||||||
int y0 = y_start + pr.range(1, 3) - 1;
|
int y0 = y_start + np->scale * noiseval; //pr.range(1, 3) - 1;
|
||||||
int y1 = y0 + height;
|
int y1 = y0 + height;
|
||||||
for (int y = y0; y != y1; y++) {
|
for (int y = y0; y != y1; y++) {
|
||||||
u32 i = vm->m_area.index(x, y, z);
|
u32 i = vm->m_area.index(x, y, z);
|
||||||
|
Loading…
Reference in New Issue
Block a user