aboutsummaryrefslogtreecommitdiff
path: root/src/mapgen_v7.cpp
Commit message (Collapse)AuthorAge
* Biome API: Revert biomes, decos, ores being relative to water levelparamat2017-09-17
| | | | | | | Feature is unnecessary and would greatly complicate future development, it would also make 'get biome at pos' extremely complex. Mgv7: Revert option to repeat surface biomes in floatlands, which depended on the above.
* Use member initialization list instead of the constructor's body (#6371)Dharkael2017-09-03
| | | | * Use member initialization list instead of the constructor's body
* Modernize various files (src/m*) (#6267)Loïc Blot2017-08-18
| | | | | | | | | | | | * Modernize various files (src/m*) * range-based for loops * code style * C++ headers instead of C headers * Default operators * empty function Thanks to clang-tidy
* Mgv7: Raise spawn point by 1 node for no mountain caseparamat2017-08-09
|
* Dungeons: Use biome 'node_stone' if normal stone types not detectedparamat2017-07-30
| | | | | | | Construct dungeons from the node defined as biome 'node_stone' if 'mapgen_stone', 'mapgen_desert_stone' and 'mapgen_sandstone' are not detected. Feature long-intended by kwolekr/hmmmm and present in code as a TODO.
* VoxelManip cleanups (const ref, const move) + function removal (#6169)Loïc Blot2017-07-26
| | | | | | | | | | * VoxelManip cleanups (const ref, const move) permitting to improve a little bit performance * VoxelArea: precalculate extent (performance enhancement) This permits to reduce extend high cost to zero and drop many v3s16 object creation/removal to calculate extent It rebalance the client thread update to updateFastFaceRow instead of MapBlockMesh generation This will also benefits to mapgen
* Mgv7: Add 'mount_zero_level' parameterparamat2017-07-26
| | | | | | | | Allows setting of the mountain 'zero level' (y where density gradient is zero). It is easy to vertically shift smooth terrain by editing noise parameter 'offset', but vertically shifting mountain terrain was complex and imprecise, involving making a calculation based on an average of the mountain height parameter.
* Mgv7: Add option to repeat surface biomes in floatlandsparamat2017-07-22
|
* Biomes/decorations/ores: Make relative to 'water_level' settingparamat2017-07-11
| | | | | | | | Add 'biome_zero_level' argument to 'generateBiomes()', 'deco_zero_level' argument to 'placeAllDecos()' and 'ore_zero_level' to 'placeAllOres()' to allow mapgens to vertically shift the registered biomes, decorations and ores per-mapchunk. Will also allow many realm possibilities in future mapgens.
* Mapgen: Remove unnecessary 'this->' from constructors (#6069)Paramat2017-06-30
|
* Mgv7: Fix undefined 'float_mount_height'paramat2017-06-28
| | | | | | | | Commit cad10ce3b747b721fd63784915e05f12bc488128 altered the parameter 'float_mount_height' but was missing the necessary line in the constructor to get the altered value from 'params'. Fixes 3D floatland terrain generating everywhere.
* Mgv7: Clean up divide-by-zero fixparamat2017-06-25
|
* Mgv7: Avoid divide-by-zero errorsparamat2017-06-24
| | | | | Some settings of paramters can cause mgv7 variables to be -inf, nan or -nan. This can cause massive vertical columns of water to appear above sea level.
* CavesRandomWalk: Make 'lava_depth' a mapgen parameterparamat2017-06-22
| | | | | | | As with 'large_cave_depth', lava depth was previously a fixed y value and therefore incompatible with the ability to shift terrain vertically. Add 'lava_depth' mapgen parameter to mgflat, mgfractal, mgv5, mgv7.
* Mgv5/v7/fractal: Add 'large_cave_depth' parameter to replace fixed valueparamat2017-06-21
| | | | | | The value cannot be fixed because we can shift terrain vertically. This also makes these mapgens consistent with mgflat and mgvalleys which have 'large_cave_depth' parameters.
* Mgv7: Do not limit river generation if no floatlandsparamat2017-06-19
| | | | | | Previously, the carving of rivers was disabled above 'shadow_limit' even if floatlands were disabled. This caused rivers to be unnecessarily disabled if mapgen was customised to have surface level above y = 1024.
* Mgv7 spawn search: Cope with extreme custom terrain and biome 'dust'paramat2017-06-19
| | | | | | | | | Previously, maximum spawn level was set to 'water_level + 16'. This would result in spawn search failing if terrain had been customised to be much higher than 'water_level' at all points. Also raise spawn level by 1 node to avoid spawning half-buried in a biome 'dust' node such as 'default:snowblock'.
* Cpp11 initializers 2 (#5999)Loïc Blot2017-06-17
| | | | | | | | | | * C++11 patchset 10: continue cleanup on constructors * Drop obsolete bool MainMenuData::enable_public (setting is called with cURL in server loop) * More classes cleanup * More classes cleanup + change NULL tests to boolean tests
* Mapgen files: Update and correct copyright creditsparamat2017-05-26
|
* Caverns: Remove unnecessary liquid excavationparamat2017-05-16
| | | | | | | | | | | | | | | Also disable CavesRandomWalk at a safer distance from caverns. Excavating liquids in cavern code is unnecessary as in practice we are already successfully disabling the generation of liquid caves that could intersect with caverns and cause excessive amounts of spreading liquids in caverns. However to be safer this commit now disables liquid caves at a larger distance from caverns, to compensate for liquid caves being able to generate up to a mapblock beyond a mapchunk border. Not excavating liquids in cavern code also allows a feature i am working on in experimental new core mapgens, but also allows for more flexibility in future.
* Mgflat, Mgv7: Fix noise crash on world exit.paramat2017-04-22
| | | | | | Fix crash caused by destructor 'delete' on noise objects that are not created due to mapgen options. Crash was caused by commit 57eaf62c697cec91890d9cb28d10385d293d2d3f
* Mgflat, Mgv7: Only create noise objects if neededparamat2017-04-22
|
* Mapgen: Remove '#include treegen.h' from non-mgv6 mapgensparamat2017-04-05
| | | | Only mgv6 uses the tree functions from treegen.cpp.
* Cavegen/Mgv5/Mgv7: Add optional giant cavernsparamat2017-04-03
| | | | | | | | | | | | | | Add to MapgenBasic for use by multiple mapgens. Add to mgv5 and mgv7, enabled by default. Similar to mgvalleys caverns but half the scale. Parameters for upper y limit, distance caverns taper to full size, and noise threshold (full cavern size). As with mgvalleys caverns are generated first and classic caves are disabled in any mapchunk containing a cavern, to avoid excessive spreading volumes of liquids. This also avoids floating blobs of liquid where a large classic cave has overgenerated out into a neighbouring previously-generated mapchunk.
* Mgv7: Change default cave width to 0.09sfan52016-12-13
|
* Mgv7 floatlands: Various improvementsparamat2016-12-01
| | | | | | | | | | | | Floatland base terrain underside was too thin, causing excessive water leakage through tunnels under lakes, now make it thicker. Floatland mountain terrain had a rim 1 node thick which made it bare stone, now make it 2 nodes thick to merge with the floatland base terrain rim and to have a layer of biome material. Make mountain terrain more exponentially shaped by altering the exponent. Remove unnecessary and potentially ugly MYMAX() applied to n_base_height.
* Mgv7: Add optional floatlands, disabled by defaultparamat2016-11-15
|
* Mgv7: Avoid mid-air spawn on disabled mountain terrain, optimise functionparamat2016-09-30
| | | | | | | | 'getSpawnLevelAtPoint()' did not account for disabled mountains, it was possible to be spawned in mid-air where a mountain surface would have been. Avoid check for river area if rivers are disabled.
* Add MapSettingsManager and new mapgen setting script API functionskwolekr2016-07-03
| | | | | | | | | | | | | | | This commit refactors the majority of the Mapgen settings system. - MapgenParams is now owned by MapSettingsManager, itself a part of ServerMap, instead of the EmergeManager. - New Script API functions added: core.get_mapgen_setting core.get_mapgen_setting_noiseparams, core.set_mapgen_setting, and core.set_mapgen_setting_noiseparams. - minetest.get/set_mapgen_params are deprecated by the above new functions. - It is now possible to view and modify any arbitrary mapgen setting from a mod, rather than the base MapgenParams structure. - MapgenSpecificParams has been removed.
* Mgflat/fractal/v7/valleys: Denser 3D noise tunnelsparamat2016-06-24
| | | | | | | Reduce spread from 96 to primes 61 and 67 (either side of 64) Prime spreads help to keep 3D noise periodic features unaligned 'cave width' 0.2 to preserve tunnel width Reduce octaves to 3 to improve network structure
* Mapgen: Optimize biomemap creation by combining with generateBiomeskwolekr2016-06-05
|
* Mgv7: Always carve river channels in mountain terrainparamat2016-06-02
| | | | | | | | Previously, rivers were sometimes blocked by vertical walls of mountain terrain due to river carving being disabled when base terrain height was below water_level - 16 Remove now unused base terrain heightmap created in generateTerrain()
* Mapgen: Combine dungeon generation codekwolekr2016-05-27
|
* Mapgen: Deduplicate common constructor codekwolekr2016-05-27
|
* Mapgen: Remove calculateNoise from most mapgenskwolekr2016-05-27
| | | | | | This commit moves noise calculation to the functions where the noise is actually required, increasing the separation of concerns and level of interdependency for each mapgen method. Valleys Mapgen is left unmodified.
* Mapgen V7: Remove now-unused ridge heightmapkwolekr2016-05-27
|
* Cavegen: Move V5-style caves to CavesNoiseIntersectionkwolekr2016-05-27
|
* Fix MgStoneType and BiomeType enum nameskwolekr2016-05-27
|
* Mapgen: Combine generateBiomes, dustTopNodes, and generateCaveskwolekr2016-05-27
| | | | | This commit condenses the above methods into a single implementation used by V7, V5, Flat, Fractal, and Valleys mapgens and introduces MapgenBasic.
* Move biome calculation to BiomeGenkwolekr2016-05-27
| | | | | | | BiomeGen defines an interface that, given a set of BiomeParams, computes biomes for a given area using the algorithm implemented by that specific BiomeGen. This abstracts away the old system where each mapgen supplied the noises required for biome generation.
* Mapgen: Make 3D noise tunnels' width settableparamat2016-04-28
| | | | | | Correct parameter names mg_valleys to mgvalleys Remove biome NoiseParams from MapgenValleysParams Improve format of parameter code
* Mgv7: Combine mountain terrain generation with base terrain generationparamat2016-04-20
| | | | | | | | | | | | Previous mountain terrain generation was by necessity placing stone in air, this was removing air from any overgenerated structures such as tunnels, dungeons and large caves Moving it into the base terrain generation loop ensures that only 'ignore' is replaced generateRidgeTerrain: only return if node_max.Y < water_level - 16 Previously, if water level was set a few nodes above a mapchunk border the river channel was only partially excavated
* Mgv7, mgflat, mgfractal: Tunnel generation code optimisationparamat2016-04-12
|
* Mapgen: Optimise cave noises and tunnel excavationparamat2016-04-08
| | | | | | Instead of doing nothing at node_max.Y + 1 use 1-down overgeneration for tunnel generation and noisemaps Move some old unused code in mgv7 to end of file
* Mgv7: Decrease cliff steepnessparamat2016-03-30
|
* Mgv7/flat/fractal: Stop tunnel-floor biome nodes being placed everywhereparamat2016-03-21
| | | | | | A bool for 'in or under tunnel' was missing 1-node-deep stone ledges were being replaced with biome surface material
* Mgv7: Limit pseudorandom caves to surface mapchunk or belowparamat2016-03-19
| | | | To avoid bright caves at mapchunk borders when generating mapchunks upwards
* Mapgen: Fix light in tunnels at mapchunk bordersparamat2016-03-14
| | | | | | Don't excavate the overgenerated stone at node_max.Y + 1, this creates a 'roof' over the tunnel, preventing light in tunnels at mapchunk borders when generating mapchunks upwards.
* FindSpawnPos: Let mapgens decide what spawn altitude is suitableparamat2016-02-09
| | | | | | | | | | | | To avoid spawn search failing in new specialised mapgens Increase spawn search range to 4000 nodes Add getSpawnLevelAtPoint() functions to EmergeManager, class Mapgen and all mapgens Remove getGroundLevelAtPoint() functions from all mapgens except mgv6 (possibly to be re-added later in the correct form to return actual ground level) Make mgvalleys flag names consistent with other mapgens Remove now unused 'vertical spawn range' setting
* Mgv5/v7/flat/fractal: Move tunnel noise calculation into generateCavesparamat2016-02-02
| | | | | | | | | | Tunnel 3D noises are only calculated when solid terrain is present in mapchunk, avoiding large amounts of unnecessary calculations Change 'int' to 's16' in calculateNoise Change 'i' to 'vi' for voxelmanip indexes for consistency Keep 'u32 index3d' local to a smaller part of tunnel code Mgv7: Don't call CaveV7 if no solid terrain in mapchunk Give 'open' bool a more descriptive name