Vary ore sheet y position by noise

This commit is contained in:
kwolekr 2013-03-24 22:35:23 -04:00
parent 8d13967aa3
commit 26cad481d0
2 changed files with 9 additions and 6 deletions

View File

@ -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
distribution of ore.
- sheet
Creates a sheet of ore in a blob shape according to the 2d perlin noise described by
the noise_params structure. The height of the blob is randomly scattered, with a maximum
height of clust_size. Here, clust_scarcity and clust_num_ores are ignored.
Creates a sheet of ore in a blob shape according to the 2d perlin noise described by noise_params.
The relative height of the sheet can be controlled by the same perlin noise as well, by specifying
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.
- claylike - NOT YET IMPLEMENTED
Places ore if there are no more than clust_scarcity number of specified nodes within a Von Neumann

View File

@ -165,12 +165,12 @@ void OreSheet::generate(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax) {
int index = 0;
for (int z = z0; z != z1; z++)
for (int x = x0; x != x1; x++) {
if (noise->result[index++] < nthresh)
float noiseval = noise->result[index++];
if (noiseval < nthresh)
continue;
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;
for (int y = y0; y != y1; y++) {
u32 i = vm->m_area.index(x, y, z);