Dániel Juhász
f17c9c45dc
Lighting: Update lighting at block loading
...
This commit updates mapblocks' light if necessary when they are loaded.
This removes ghost lighting.
2017-02-13 00:05:49 +00:00
red-001
0dada51a55
Remove mathconstants.h
and use the correct way to get M_PI
in MSVC. ( #5072 )
2017-01-20 23:19:41 +01:00
paramat
8c1b4f298e
Map generation limit: Cache as 'const' not 'const static'
2017-01-08 21:18:11 +00:00
paramat
ddcf8422a2
Map generation limit: Fix checks for block/sector over-limit
...
Fix the maths that check if any part of a mapblock or sector is over the
set map_generation_limit.
Therefore avoid the loading of any over-limit blocks that were previously
generated when map_generation_limit was larger. The set limit can vary
for a world because it is not yet a per-world mapgen parameter, even when
it is sometimes it will be changed deliberately.
Therefore avoid a player being returned to world centre if they re-enter
a world while being over-limit.
Fix the createSector() crash caused by a mob spawning over-limit in an
over-limit mapblock
2017-01-08 21:18:11 +00:00
Dániel Juhász
3f8261830e
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
Rogier
4d4b8bb8a4
Move PP() and PP2() macros to basic_macros.h
...
Instead of redefining them everywhere.
2016-12-24 00:32:50 +00:00
MillersMan
9714cdcf4b
Liquids: Update flow on block load
...
When loading a block add liquid-nodes that might flow away or spread to
neighbours to the transforming_liquid queue.
2016-12-07 04:06:00 +00:00
MillersMan
cc36f5e99a
Liquids: Preserve flow state if 'ignore' is a neighbour
...
Prevent waterfalls from falling down or streams from flowing away when the
source node is in an unloaded block - Nodes near a CONTENT_IGNORE node will
be interpreted as if the ignored node is a liquid node that just supports
the current state of the nodes in question.
2016-12-07 03:54:32 +00:00
MillersMan
2829742ae8
Map::isValidPosition: Return false instead of throwing exception
2016-12-07 03:51:44 +00:00
Dániel Juhász
bcb06aeb85
Cleanup
2016-10-27 08:04:42 +02:00
Dániel Juhász
be39f61359
Use node lighting for liquid spreading
...
This commit modifies the liquid transforming procedure to light and
unlight nodes instead of whole map blocks.
2016-10-27 08:04:42 +02:00
Dániel Juhász
c071efaa43
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
kwolekr
3c63c3044d
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
559dd99469
Make node timers more efficient
2016-06-11 23:35:17 +01:00
Loic Blot
ce42ff9cf7
Implement a PostgreSQL backend
2016-05-22 11:34:47 +02:00
Loic Blot
143401451c
DB::loadBlock copy removal & DB backend cleanup
...
* Remove the copy from db::loadBlock by using a pointer to the destination
* cleanup db backend, the child backend doesn't have to set their functions as virtual
2016-05-17 06:52:16 +02:00
gregorycu
f9a90383e1
Remove expensive copy of ContentFeatures
2016-03-30 11:38:42 -04:00
paramat
0459eca8eb
Liquid flow: Prevent water spreading on ignore
2016-01-20 00:37:00 +00:00
paramat
0bbbc6e13d
Liquids: Flow into and destroy 'floodable' nodes
...
Add new node property 'floodable', default false
Define "air" as floodable = true in C++ and lua
2016-01-07 05:57:19 +00:00
ShadowNinja
6f2d785d0f
Rename macros with two leading underscores
...
These names are reserved for the compiler/library implementations.
2015-10-14 02:39:37 -04:00
ShadowNinja
96cc5b34fe
Use warningstream for log messages with WARNING
...
Remove DTIME macro and its uses, too
2015-10-14 01:36:48 -04:00
kwolekr
0850d3bb93
Add emerge completion callback mechanism
...
Major refactor of emerge.cpp and Map::init/finishBlockMake
2015-10-04 16:27:50 -04:00
kwolekr
f0cd5da687
Define and use limit constants for Irrlicht fixed-width types
2015-10-04 04:00:16 -04:00
kwolekr
f062bbd7a1
Add /emergeblocks command and core.emerge_area() Lua API
2015-09-23 15:56:24 -04:00
Perttu Ahola
def274a583
Fix segfault caused by a8e238ed06ee8285ed4459e9deda3117419837f6
2015-08-13 19:02:48 +03:00
est31
a8e238ed06
Add count based unload limit for mapblocks
2015-08-13 07:56:07 +02:00
rubenwardy
ec796b8e81
Add map limit config option
2015-08-02 14:27:04 +02:00
kwolekr
46684beec1
Record MapBlock modification reasons as flags instead of strings
...
This improves performance of MapBlock::raiseModified by a factor of 6.
Also, clean up mapblock.h a bit and inline small functions.
2015-05-17 22:14:26 -04:00
kwolekr
ff740a4179
Ensure that Map::findNodesWithMetadata() reports nodes strictly within the node-granular area
2015-05-08 13:31:03 -04:00
kwolekr
b785577f03
Add core.find_nodes_with_meta() script API
2015-05-05 16:21:59 -04:00
Craig Robbins
9527984dbc
Move globals from main.cpp to more sane locations
...
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-04-01 23:04:25 +10:00
ngosang
f6e4c5d9cf
Respect game mapgen flags and save world noise params
2015-03-07 15:53:39 -05:00
Craig Robbins
ced6d20295
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
e9eda2b0d0
Don't start a server for map migration
2015-03-06 00:20:45 -05:00
ShadowNinja
708337dfc2
Clean up database API and save the local map on an interval
2015-03-06 00:20:45 -05:00
Loic Blot
06f328207f
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
27d4e89d32
Fix unused (and so, broken) enable_rollback_recording. This option must be reloaded at server loop but loaded when server starts, for data consistency (not a hot load variable)
...
ok @ShadowNinja
2015-02-18 09:28:39 +01:00
Loic Blot
fd70f4f2f0
Replace std::list by std::vector into ClientMap::updateDrawList, Map::timerUpdate and ServerMap::save().
...
This will speedup the loop reading into those functions
2015-02-17 15:28:49 +01:00
Loic Blot
3c91ad8fc2
Replace std::list by std::vector into timerUpdate calls
2015-02-17 15:08:37 +01:00
Loic Blot
718bcafd51
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
kwolekr
eeea454bff
Fix missing map_meta.txt error when creating new worlds
...
A missing map_meta.txt should be treated simply as if there were a blank file.
2015-01-27 02:10:04 -05:00
kwolekr
38bd9e93a2
Fix all warnings and remove -Wno-unused-but-set cflag
2015-01-18 23:29:19 -05:00
gregorycu
db3466dbe8
Water fixes
...
Change must_reflow to a deque
Add overload for MapBlock::raiseModified that takes a const char*. This is a speed improvement.
Comment out unused variable
Optimisations to block offset calculations
2015-01-18 20:30:33 +10:00
Craig Robbins
805c8e51e5
Create empty default constructor for MapNode
2015-01-18 13:39:50 +10:00
kwolekr
9736548720
Add ability to delete MapBlocks from map
...
Also add a Lua API and chatcommand for this
2015-01-15 16:48:56 -05:00
unknown
bd0d786590
Change UniqueQueue to use a queue and a set.
2015-01-15 21:08:35 +10:00
Craig Robbins
57f2fa57cd
Fix use of uninitialized data
2015-01-14 15:43:33 +10:00
kwolekr
714a4f8507
Attempt to fix occasional issue of uninitialized MapBlock data
2015-01-12 22:31:08 -05:00
kwolekr
2d849b0a19
Shorten ManualMapVoxelManipulator to MMVManip
2015-01-05 02:42:27 -05:00
Craig Robbins
3993102e88
Fix -Wtype-limits warnings and remove disabling of -Wtype-limits
2014-12-29 23:56:40 +10:00
kwolekr
cc3ab5efa5
LuaVoxelManip: Remove blank allocator
2014-12-29 01:31:37 -05:00
kwolekr
8334100fe1
LuaVoxelManip: Add option to allocate blank data
2014-12-27 23:09:36 -05:00
Craig Robbins
7b93408884
Make limiting of the reflow liquids queue size optional
...
If liquid_queue_purge_time == 0 then disable the queue size limiting and make this the default setting
Additionally, liquid_loop_max now defaults to 100000
2014-12-23 15:47:06 +10:00
Craig Robbins
082256a9f8
Do not allow the m_transforming_liquid queue to increase until all RAM is consumed
2014-12-18 03:32:19 +10:00
Anton
10e0cf8b2c
Use std::string::empty() instead of size() where applicable
2014-12-12 15:16:24 -05:00
Craig Robbins
5b8855e83c
Remove most exceptions from getNode() (and variants)
2014-11-14 18:05:34 +10:00
kwolekr
9e811a92e7
Split up mapgen.cpp
2014-11-01 13:16:23 -04:00
ShadowNinja
6bc4cad0ed
Split settings into seperate source and header files
...
This also cleans up settings a bit
2014-09-21 14:39:35 -04:00
kwolekr
9e4e7072da
Update Mapgen VoxelManipulator on buffer invalidation
2014-09-01 15:12:22 -04:00
kwolekr
3fa4f782d9
Save previously generated blocks on Mapgen blitback
2014-09-01 14:58:05 -04:00
sfan5
eec456be63
Move MapBlock (de)serializing code out of Database class
2014-07-12 17:38:17 +02:00
kwolekr
a2e1b0fc7f
Don't copy back already generated blocks on map generation
2014-07-07 01:51:04 -04:00
kwolekr
8b3ed78e53
Don't unload blocks if save failed
...
Improve error handling in saveBlock()
2014-07-07 01:20:25 -04:00
sapier
b3a2ef1a91
Remove MapVoxelManipulator not really used by anyone
2014-06-23 00:13:41 +02:00
sapier
8ad83767cf
Remove emerge and speedup addArea by using memcopy instead of one by one assignment
2014-06-23 00:13:41 +02:00
sapier
9d57413af0
Minor stability improvements in block emerge handling
2014-06-15 18:18:57 +02:00
proller
4977b736e3
Fix warnings
2014-04-19 02:24:45 +04:00
proller
0279f32db7
Remove liquid_finite and weather
2014-04-18 21:56:48 +04:00
Sfan5
674be38fc2
Add redis database backend
2014-04-16 22:05:06 +02:00
Sfan5
118e2ae865
Fix all warnings reported by clang
2014-04-15 21:34:53 +02:00
kwolekr
89f7dc1efd
ServerEnvironment: Remove direct dependency on EmergeManager
2014-02-09 16:36:30 -05:00
kwolekr
5a34f40d80
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
0fd5c61c00
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
sweetbomber
22dbbf0a6f
Improve (re)spawn, add cache_block_before_spawn and max_spawn_height settings
2013-12-05 16:09:02 -05:00
sapier
04e9a9d541
Cleanup jthread and fix win32 build
2013-12-01 16:25:46 +01:00
Novatux
d879a539cd
Add minetest.swap_node
2013-11-30 18:37:56 +01:00
MetaDucky
5be786c804
Fixed potential NULL pointer and leak when setting node metadata
2013-11-29 23:35:16 -05:00
kwolekr
e396fb2984
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
b401e58c0d
Weather: Fix uninitialized weather_update_time (sorry proller)
2013-11-09 15:29:22 -05:00
kwolekr
e46c527733
Accept hexadecimal and string values for seeds
2013-11-04 23:59:26 -05:00
PilzAdam
0d35350b69
Fix liquid_range
...
* Prevent graphical glitches on old servers
* Fix flowing of liquids with viscosity != 1 and range != 8
* Fix range = 0, no flowing nodes will appear
2013-11-02 15:47:44 +01:00
proller
f7ee5da4c1
Fix null dereference in weather update functions
2013-09-18 01:37:47 +04:00
kwolekr
c0398224ef
Fix some warnings and other minor details
2013-09-16 23:52:42 -04:00
kwolekr
9bccd75e34
Weather: Clean up getHeat/getHumidity somewhat
2013-09-16 23:33:53 -04:00
Kahrl
168fa2ffe0
Fix loading leveldb worlds
2013-09-10 18:16:36 +02:00
Sfan5
f1e4a671dc
Use STL containers instead of irr::core::list
2013-09-09 22:50:51 +02:00
Sfan5
7e44c2ace1
Make it compile
2013-09-09 22:50:50 +02:00
Ilya Zhuravlev
58841ef12f
Add dummy and LevelDB database backends
2013-09-09 22:50:50 +02:00
proller
902d5927f0
Normalized heat and adjusted humidity
2013-08-30 00:42:53 +04:00
Kahrl
4e1f50035e
Omnicleanup: header cleanup, add ModApiUtil shared between game and mainmenu
2013-08-14 21:03:33 +02:00
PilzAdam
d718b0b34e
Dont write directly to files but rather write and copy a tmp file
2013-08-13 22:05:45 +02:00
kwolekr
c06caa14c3
Decoration: Fix schematic probability mess with new MTS file version
2013-08-11 15:34:49 -04:00
proller
06cdce1e12
Weather backward compatibility
2013-08-02 00:51:36 +04:00
proller
174285f298
Warnings fix
2013-07-29 00:11:33 +04:00
proller
037e84d377
Better snow fall, finite liquid transform, leveled nodes api
2013-07-28 17:14:31 +04:00
proller
3aedfac968
Weather support
2013-07-27 23:21:48 +04:00
PilzAdam
413f0d0353
Add liquid_range to nodedef
2013-07-20 20:41:17 +02:00
PilzAdam
ecb024af64
Fix lighting bug caused by disappearing lava
2013-07-16 01:51:04 +02:00
proller
92833a07d1
Improve finite liquid distribution, fix small bug
2013-07-05 00:11:11 +04:00
sapier
967121a34b
Replace C++ mainmenu by formspec powered one
2013-07-02 19:58:20 -04:00