@@ -56,6 +56,7 @@ MapgenV7::MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge)
56
56
: MapgenBasic(mapgenid, params, emerge)
57
57
{
58
58
spflags = params->spflags ;
59
+ mount_zero_level = params->mount_zero_level ;
59
60
cave_width = params->cave_width ;
60
61
large_cave_depth = params->large_cave_depth ;
61
62
lava_depth = params->lava_depth ;
@@ -149,6 +150,7 @@ MapgenV7Params::MapgenV7Params()
149
150
void MapgenV7Params::readParams (const Settings *settings)
150
151
{
151
152
settings->getFlagStrNoEx (" mgv7_spflags" , spflags, flagdesc_mapgen_v7);
153
+ settings->getS16NoEx (" mgv7_mount_zero_level" , mount_zero_level);
152
154
settings->getFloatNoEx (" mgv7_cave_width" , cave_width);
153
155
settings->getS16NoEx (" mgv7_large_cave_depth" , large_cave_depth);
154
156
settings->getS16NoEx (" mgv7_lava_depth" , lava_depth);
@@ -180,6 +182,7 @@ void MapgenV7Params::readParams(const Settings *settings)
180
182
void MapgenV7Params::writeParams (Settings *settings) const
181
183
{
182
184
settings->setFlagStr (" mgv7_spflags" , spflags, flagdesc_mapgen_v7, U32_MAX);
185
+ settings->setS16 (" mgv7_mount_zero_level" , mount_zero_level);
183
186
settings->setFloat (" mgv7_cave_width" , cave_width);
184
187
settings->setS16 (" mgv7_large_cave_depth" , large_cave_depth);
185
188
settings->setS16 (" mgv7_lava_depth" , lava_depth);
@@ -397,7 +400,7 @@ bool MapgenV7::getMountainTerrainAtPoint(s16 x, s16 y, s16 z)
397
400
{
398
401
float mnt_h_n =
399
402
MYMAX (NoisePerlin2D (&noise_mount_height->np , x, z, seed), 1 .0f );
400
- float density_gradient = -((float )y / mnt_h_n);
403
+ float density_gradient = -((float )(y - mount_zero_level) / mnt_h_n);
401
404
float mnt_n = NoisePerlin3D (&noise_mountain->np , x, y, z, seed);
402
405
403
406
return mnt_n + density_gradient >= 0.0 ;
@@ -407,7 +410,7 @@ bool MapgenV7::getMountainTerrainAtPoint(s16 x, s16 y, s16 z)
407
410
bool MapgenV7::getMountainTerrainFromMap (int idx_xyz, int idx_xz, s16 y)
408
411
{
409
412
float mounthn = MYMAX (noise_mount_height->result [idx_xz], 1 .0f );
410
- float density_gradient = -((float )y / mounthn);
413
+ float density_gradient = -((float )(y - mount_zero_level) / mounthn);
411
414
float mountn = noise_mountain->result [idx_xyz];
412
415
413
416
return mountn + density_gradient >= 0.0 ;
0 commit comments