summaryrefslogtreecommitdiff
path: root/src/mapgen.cpp
AgeCommit message (Collapse)Author
2016-08-04Mapgen: Remove unused 'flat' and 'trees' flags from mg_flagsparamat
When the 'flat' and 'trees' flags were moved into mgv6_spflags they were left in mg_flags in an attempt to support old mgv6 worlds. However their appearence in mg_flags causes confusion, also, later, old-world support was found to be broken for mgv6 worlds with 'notrees'. This commit cleans up the mess and comes a month after a thread warning of the change, and explaining the required action, was posted in the news subforum. Only old mgv6 worlds with 'flat' or 'notrees' are affected, a small minority of worlds, the required action being correctly setting these flags in mgv6_spflags. Disable a section of the 'map settings manager' unit test which is to be changed as it is causing problems for pull requests.
2016-07-03Add MapSettingsManager and new mapgen setting script API functionskwolekr
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.
2016-07-03Mapgen: Refactor mapgen creation and managementkwolekr
- Move mapgen creation logic out of EmergeManager and into Mapgen - Internally represent mapgen type as an enum value, instead of a string - Remove the need for a MapgenFactory per mapgen
2016-06-17Dungeons: Generalise use, add capabilities, various modificationsparamat
- Generalise node names to c_wall and c_alt_wall - Remove 'mossratio' and instead disable alt_wall loop if c_alt_wall == CONTENT_IGNORE - Use one generalised 3D noise for alternative wall nodes and in mgv6 create moss distribution similar to the previous - Rename rarity noise to density noise and enable the option of multiple dungeons per chunk determined by the value. Recreate previous distribution - Add parameters for min and max rooms per dungeon - Add dungeon y limits - Integrate river water properly Generalisation is needed now that we have sandstone and desert stone dungeons by default and can choose any node for alternative structure. The current code is based around cobble dungeons with mossycobble alternative nodes, the 2 noises controlling the alternative nodes are based on wetness. Enabling multiple dungeons per chunk with definable number of rooms allows the option of very dense and complex underground structures that could interconnect to create megastructures. Y limits are added to be consistent with other mapgen elements, and enable locaton of dungeon or megastructure realms as part of our 'stacked realms' philosophy.
2016-06-05Mapgen: Optimize biomemap creation by combining with generateBiomeskwolekr
2016-06-05Biome API: Add per-biome riverbed material and depthparamat
Mgvalleys: Remove riverbed sand placement from base terrain generation Riverbed material placement moved to MapgenBasic::generateBiomes() Document fields and add note that the biome API is still unstable
2016-06-04Mapgen: Performance improvement and fixes for updateLiquid (#4065)MillersMan
- Adds only ~100 nodes per chunk to trans_liquid with similar processing time - Adds liquid nodes themselves instead of potential solid nodes below them - CONTENT_IGNORE nodes are interpreted as if they continue their neighborhood - This allows liquid columns to span multiple chunks without being interrupted - NOTE: Expects an one-node border in generation chunk without liquid changes
2016-06-04Change internal type for seeds to s32kwolekr
This fixes value truncation (and therefore incompatibility) on platforms with an LP32 data model, such as VAX or MS-DOS.
2016-05-27Dungeongen: Remove dependency on Mapgenkwolekr
2016-05-27Mapgen: Combine dungeon generation codekwolekr
2016-05-27Mapgen: Deduplicate common constructor codekwolekr
2016-05-27Mapgen: Remove calculateNoise from most mapgenskwolekr
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.
2016-05-27Cavegen: Move V5-style caves to CavesNoiseIntersectionkwolekr
2016-05-27Cavegen: Re-add small caves to CavesRandomWalkkwolekr
2016-05-27Cavegen: Remove CavesRandomWalk dependency on Mapgenkwolekr
2016-05-27Cavegen: Merge CaveV5 and CaveV7 into CavesRandomWalkkwolekr
2016-05-27Fix MgStoneType and BiomeType enum nameskwolekr
2016-05-27Mapgen: Combine generateBiomes, dustTopNodes, and generateCaveskwolekr
This commit condenses the above methods into a single implementation used by V7, V5, Flat, Fractal, and Valleys mapgens and introduces MapgenBasic.
2016-05-27Move biome calculation to BiomeGenkwolekr
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.
2016-03-30Mapgen: Don't spread light of nodes outside the desired areakwolekr
This fixes #3935, a regression from 0338c2e. An 'optimization' was performed where an index for the VoxelManip being operated on was mistakenly used for bounds checking within the incorrect VoxelArea, namely, the area wherein light should be spread.
2016-03-29Mapgen: Spread both night and day light banks in spreadLightkwolekr
2015-12-07Mapgen: Add propagate_shadow bool to calcLightingparamat
To terminate unwanted shadows from floatlands or realms above Also add to LuaVoxelManip calc_lighting for use in mapgen mods Remove the 2 argument calcLighting, mapgens now use the 5 argument form to specify the volumes for propagateSunlight and spreadLight In mgsinglenode replace calcLighting with setLighting and clean-up use of tabs and spaces
2015-11-21Mapgen: Add global 'decorations' flagparamat
Flag is set by default in MapgenParams The global 'trees' flag remains but is now undocumented and unset by default in MapgenParams Add mgv6_spflag 'trees' set by default in defaultsettings.cpp to affect new worlds only This is automatically backwards compatible for existing worlds
2015-10-23Decoration API: Add flag for placement on liquid surfaceparamat
Add findLiquidSurface() function to mapgen.cpp Update lua_api.txt
2015-10-04Add emerge completion callback mechanismkwolekr
Major refactor of emerge.cpp and Map::init/finishBlockMake
2015-10-04Define and use limit constants for Irrlicht fixed-width typeskwolekr
2015-09-19Various style cleanups + unused code removalest31
-> Don't pass pointer to whole IGameDef to NodeMetadata constructors and deserializers, but only to IItemDefManager, which is needed -> Remove the unused content_mapnode_get_new_name() method -> Fix style for MapBlock::deSerialize and MapBlock::deSerialize_pre22, improving accuracy of error messages a bit -> Fix style at other serialisation methods too -> Improve accuracy of some comments
2015-08-16Remove unused functions.onkrot
2015-08-02Add map limit config optionrubenwardy
2015-06-20Mapgen objects: Enable heatmap and humidmap for all biome api mapgensparamat
2015-06-18Biome API: Add noise defined biome blendparamat
2015-05-18Split ObjDef/ObjDefManager out to objdef.cppkwolekr
2015-05-03ObjDefManager: Set replacement object's handle info after calling set()kwolekr
Make gamedef optional when constructing an ObjDefManager Add note about object ownership
2015-04-02Fix MSVC error caused by ed10005SmallJoker
2015-04-01Move globals from main.cpp to more sane locationsCraig Robbins
Move debug streams to log.cpp|h Move GUI-related globals to clientlauncher Move g_settings and g_settings_path to settings.cpp|h Move g_menuclouds to clouds.cpp|h Move g_profiler to profiler.cpp|h
2015-03-31GenElementManager: Pass opaque handles to Lua and rename to ObjDefManagerkwolekr
Add core.clear_registered_schematics() and refactor schematics somewhat
2015-03-22Add support for the PCG32 PRNG algo (and associated script APIs)kwolekr
2015-03-20Revert "Fix issue #2441: crash on respawn, since a conversion std::list to ↵kwolekr
std::vector on Environment.cpp" This reverts parts of commit 9749d9fee6db99da1ab861dc04ec63ef973db3e0, which breaks node resolver list clearing
2015-03-08Heightmaps: Fix uninitialised values in mgv5/mgv6. findGroundLevel: Return ↵paramat
-MAP_GENERATION_LIMIT if surface not found
2015-03-07Respect game mapgen flags and save world noise paramsngosang
2015-03-06Fix mapgen using unitialised height map valuesCraig Robbins
2015-03-05Fix issue #2441: crash on respawn, since a conversion std::list to ↵Loic Blot
std::vector on Environment.cpp * Also change some std::list to std::vector for ClientMap::renderMap * Remove disabled code in ClientMap::renderMap, disabled since a long time
2015-01-18Fix all warnings and remove -Wno-unused-but-set cflagkwolekr
2015-01-12Prevent transform of noise3d result in getBlockSeed2kwolekr
2015-01-05Optionally specify propagateSunlight area in calcLightingkwolekr
This fixes the Mapgen V5 calcLighting segfault
2015-01-04Add minetest.generate_ores() and minetest.generate_decorations()kwolekr
2015-01-04Lighting: Fix nearly all issueskwolekr
The cause of a single light source seemingly being lit without spread was due to its creation in the +Y mapblock boundary layer during map generation, which was ignored as the overtop. This overtop explicitly needs to be omitted during sunlight propagation, however. To accomplish this, Mapgen::calcLighting() was split into separate functions taking separate parameters. Additionally, do not diminish light too early during spread. This fixes the output inconsistency between Map::updateLighting and Mapgen::calcLighting.
2014-12-29Mapgen: Use getBlockSeed2() for blockseeds (much better uniformity)kwolekr
2014-12-27Redefine NodeResolver interface and replace with callback mechanismkwolekr
2014-12-12Add minetest.clear_registered_decorations() and clear_registered_ores()kwolekr