152 Commits

Author SHA1 Message Date
paramat
1bb70a78a9 Map generation limit: Make per-world
The setting limits map generation but affects nothing else.
Add 'mapgen_limit' to global mapgen parameters.
Move 'blockpos_over_mapgen_limit()' to the only place it is called
from: map.cpp.
Allow teleportation to any part of the world even if over the set
mapgen limit.
Simplify the reading of this limit in mgvalleys.
Remove the 'map_generation_limit' setting.
2017-03-27 03:18:09 +01:00
Lars Hofhansl
38224d47bf Allow server side occlusion culling. 2017-03-11 18:11:19 -08:00
Dániel Juhász
fe21088bca Light calculation: New bulk node lighting code
This commit introduces a new bulk node lighting algorithm to minimize
lighting bugs during l-system tree generation, schematic placement and
non-mapgen-object lua voxelmanip light calculation.

If the block above the changed area is not loaded, it gets loaded to avoid
lighting bugs.
Light is updated as soon as write_to_map is called on a voxel manipulator,
therefore update_map does nothing.
2017-03-11 02:06:18 +00:00
Dániel Juhász
46aff27445 Improve getPointedThing() (#4346)
* Improved getPointedThing()

The new algorithm checks every node exactly once.
Now the point and normal vector of the collision is also returned in the
PointedThing (currently they are not used outside of the function).
Now the CNodeDefManager keeps the union of all possible nodeboxes, so
the raycast won't miss any nodes. Also if there are only small
nodeboxes, getPointedThing() is exceptionally fast.
Also adds unit test for VoxelLineIterator.

* Cleanup, code move

This commit moves getPointedThing() and
Client::getSelectedActiveObject() to ClientEnvironment.
The map nodes now can decide which neighbors they are connecting to
(MapNode::getNeighbors()).
2017-01-04 19:18:40 +01:00
Dániel Juhász
7f8545d2d7 Improved lighting
This commit rewrites the procedure that is responsible for light
updating.

this commit
-provides iterative solutions for unlighting and light spreading
-introduces a new priority queue-like container for the iteration
-creates per-node MapBlock caching to reduce retrieving MapBlocks from
the map
-calculates with map block positions and in-block relative node
coordinates
-skips light updating if it is not necessary since the node's new light
will be the same as its old light was
2016-10-27 08:04:42 +02:00
Loic Blot
d33797e079 use unordered containers where possible (patch 4 on X)
Also remove some unused parameters/functions
2016-10-06 22:37:26 +02:00
kwolekr
7af0dede5f Add MapSettingsManager and new mapgen setting script API functions
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-03 15:38:36 -04:00
Ekdohibs
f270619d3f Make node timers more efficient 2016-06-11 23:35:17 +01:00
kwolekr
e0e2bb3117 Add DISABLE_CLASS_COPY macro (and use it)
Use this macro to disallow copying of an object using the assignment
operator or copy constructor.  This catches otherwise silent-but-deadly
mistakes such as "ServerMap map = env->getMap();" at compile time.

If so desired, it is still possible to copy a class, but it now requires
an explicit call to memcpy or std::copy.
2015-10-27 22:05:08 -04:00
kwolekr
8c2bf6e89b Add emerge completion callback mechanism
Major refactor of emerge.cpp and Map::init/finishBlockMake
2015-10-04 16:27:50 -04:00
est31
143d1f6835 Add count based unload limit for mapblocks 2015-08-13 07:56:07 +02:00
kwolekr
cba840d188 Add core.find_nodes_with_meta() script API 2015-05-05 16:21:59 -04:00
Craig Robbins
27791ee1aa For usages of assert() that are meant to persist in Release builds (when NDEBUG is defined), replace those usages with persistent alternatives 2015-03-07 22:41:47 +10:00
ShadowNinja
053e376671 Don't start a server for map migration 2015-03-06 00:20:45 -05:00
ShadowNinja
2cb27a5fb6 Clean up database API and save the local map on an interval 2015-03-06 00:20:45 -05:00
Loic Blot
bf4504a459 ABMHandler and player_collisions use sequential read/write. Switch from std::list to std::vector
* Also remove dead code Map::unloadUnusedData which is dead since a long time
2015-03-04 17:02:36 +01:00
Loic Blot
f764ef3076 Replace std::list by std::vector into timerUpdate calls 2015-02-17 15:08:37 +01:00
Loic Blot
5abc50f077 Replace std::list by std::vector into ServerMap::listAllLoadableBlocks ServerMap::listAllLoadedBlocks and their database backends.
This adds a speedup on database migration and /clearobjects command
2015-02-17 14:35:44 +01:00
Craig Robbins
1c460c3bc3 Create empty default constructor for MapNode 2015-01-18 13:39:50 +10:00
kwolekr
66b0d25786 Add ability to delete MapBlocks from map
Also add a Lua API and chatcommand for this
2015-01-15 16:48:56 -05:00
kwolekr
02e06b423e Shorten ManualMapVoxelManipulator to MMVManip 2015-01-05 02:42:27 -05:00
kwolekr
2e5d9bb332 LuaVoxelManip: Remove blank allocator 2014-12-29 01:31:37 -05:00
kwolekr
20b9e50aa9 LuaVoxelManip: Add option to allocate blank data 2014-12-27 23:09:36 -05:00
Craig Robbins
9dbf375a14 Do not allow the m_transforming_liquid queue to increase until all RAM is consumed 2014-12-18 03:32:19 +10:00
ShadowNinja
416c5c8339 Clean up rollback 2014-11-19 16:21:59 -05:00
Craig Robbins
aacc3cba46 Remove most exceptions from getNode() (and variants) 2014-11-14 18:05:34 +10:00
kwolekr
9adbca89cd Update Mapgen VoxelManipulator on buffer invalidation 2014-09-01 15:12:22 -04:00
sfan5
ba889166fd Move MapBlock (de)serializing code out of Database class 2014-07-12 17:38:17 +02:00
kwolekr
85ddd43a73 Don't copy back already generated blocks on map generation 2014-07-07 01:51:04 -04:00
kwolekr
77656b0723 Don't unload blocks if save failed
Improve error handling in saveBlock()
2014-07-07 01:20:25 -04:00
sapier
b567c942f7 Remove MapVoxelManipulator not really used by anyone 2014-06-23 00:13:41 +02:00
sapier
1972e24098 Minor stability improvements in block emerge handling 2014-06-15 18:18:57 +02:00
proller
495ed5ec8b Remove liquid_finite and weather 2014-04-18 21:56:48 +04:00
kwolekr
4bc975d80f ServerEnvironment: Remove direct dependency on EmergeManager 2014-02-09 16:36:30 -05:00
kwolekr
1c1155e0d5 Huge overhaul of the entire MapgenParams system
MapgenParams is no longer a polymorphic class, eliminating the need for messy and bug-prone reallocations.
Separation between the common and mapgen-specific parameters is now strongly defined.
Mapgen parameters objects are now properly encapsulated within the proper subsystems.
2014-02-03 22:50:14 -05:00
ShadowNinja
d39323353e Revert "Improve (re)spawn, add cache_block_before_spawn and max_spawn_height settings"
The commit didn't work because the blocks weren't loaded yet.

This reverts commit 22dbbf0a6fc9547f0dbdb7f6076337b8c6acd48b.

Conflicts:
	minetest.conf.example
2014-01-06 21:25:10 -05:00
kwolekr
55e96c5375 Update mapgen params in ServerMap after Mapgen init 2013-12-14 10:49:20 -05:00
sweetbomber
a85c68049a Improve (re)spawn, add cache_block_before_spawn and max_spawn_height settings 2013-12-05 16:09:02 -05:00
Novatux
92d806ab21 Add minetest.swap_node 2013-11-30 18:37:56 +01:00
MetaDucky
7086a6c35b Fixed potential NULL pointer and leak when setting node metadata 2013-11-29 23:35:16 -05:00
kwolekr
76f37cadb0 Actually fix weather
The real problem was that MapBlocks were not activated before getting sent to the client
2013-11-17 01:59:04 -05:00
kwolekr
d8e65be2d3 Weather: Clean up getHeat/getHumidity somewhat 2013-09-16 23:33:53 -04:00
Kahrl
7f7f54b581 Add license headers and remove useless includes 2013-09-10 16:09:30 +02:00
Ilya Zhuravlev
30af8e75d7 Add dummy and LevelDB database backends 2013-09-09 22:50:50 +02:00
Kahrl
ee90d438b8 Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenu 2013-08-14 21:03:33 +02:00
kwolekr
6aa6aaf3f3 Decoration: Fix schematic probability mess with new MTS file version 2013-08-11 15:34:49 -04:00
proller
cdb2b82262 Weather support 2013-07-27 23:21:48 +04:00
kwolekr
c2530fa4ed Fix issue of VManip occasionally not blitting back blocks, and pitch black lighting bug 2013-06-27 22:35:35 -04:00
kwolekr
669194d224 Add LuaVoxelManip 2013-06-27 22:35:35 -04:00
Kahrl
7d2f899d23 Add and implement setting max_clearobjects_extra_loaded_blocks.
Now Environment::clearAllObjects() unloads unused blocks in an interval
defined by max_clearobjects_extra_loaded_blocks (default 4096).
2013-06-03 20:09:32 +02:00