| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
| |
This is not really different from the light update of a voxel
manipulator. This update does not assume that the lighting was correct
before, therefore it is useful for correction.
Also expose this function to the Lua API for light correction, and
allow voxel manipulators not to update the light.
|
|
|
|
| |
* Also remove 2 non declared but defined functions
* Make some functions around const ref changes const
|
|
|
| |
Pointed by cppcheck
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous implementation applied the setting to blockpos_over_limit(),
objectpos_over_limit() and in createSector(), causing many bugs near the
world edge.
First revert the previous implementation.
Rename blockpos_over_limit() to blockpos_over_max_limit() for clarity.
Add a new function to mapblock.h called blockpos_over_mapgen_limit() that
checks against the map_generation_limit setting, and call this only from
the code that decides where mapgen stops.
Use MAX_MAP_GENERATION_LIMIT in objectpos_over_limit() to reduce the
chance of bugs, there is no need to use map_generation_limit here.
|
|
|
|
|
|
|
|
|
|
| |
* Update server min protocol version to v24
It's based on @sfan5 stats. See https://kitsunemimi.pw/tmp/serverlist_stats_2017-03-17.txt
v24 was bumped 25/08/14 and 0.4.11 was released 25/12/14
* Drop protocol v23 and lesser 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Placing a structure that extends into mapblocks that extend past
map_gen_limit causes a crash. For example a sapling growing at the
world edge which adds leaves beyond the edge, or placing a structure
using the lua voxelmanip, or placing a schematic or l-system tree.
Do not run the 'load_if_inexistent' block of code if the mapblock
is over limit, this also marks the mapblock with the flag
VMANIP_BLOCK_DATA_INEXIST which later prevents blitting back those
mapblocks.
This fix therefore uses existing functionality by having the same
effect as the 'load_if_inexistent' bool being false.
|
|
|
|
|
| |
This commit updates mapblocks' light if necessary when they are loaded.
This removes ghost lighting.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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()).
|
|
|
|
| |
Instead of redefining them everywhere.
|
|
|
|
|
| |
When loading a block add liquid-nodes that might flow away or spread to
neighbours to the transforming_liquid queue.
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
| |
This commit modifies the liquid transforming procedure to light and
unlight nodes instead of whole map blocks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
| |
* 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
|
| |
|
| |
|
|
|
|
|
| |
Add new node property 'floodable', default false
Define "air" as floodable = true in C++ and lua
|
|
|
|
| |
These names are reserved for the compiler/library implementations.
|
|
|
|
| |
Remove DTIME macro and its uses, too
|
|
|
|
| |
Major refactor of emerge.cpp and Map::init/finishBlockMake
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This improves performance of MapBlock::raiseModified by a factor of 6.
Also, clean up mapblock.h a bit and inline small functions.
|
|
|
|
| |
node-granular area
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
NDEBUG is defined), replace those usages with persistent alternatives
|
| |
|
| |
|
|
|
|
|
|
| |
std::list to std::vector
* Also remove dead code Map::unloadUnusedData which is dead since a long time
|
|
|
|
|
|
| |
reloaded at server loop but loaded when server starts, for data consistency (not a hot load variable)
ok @ShadowNinja
|
|
|
|
|
|
| |
Map::timerUpdate and ServerMap::save().
This will speedup the loop reading into those functions
|
| |
|
|
|
|
|
|
| |
ServerMap::listAllLoadedBlocks and their database backends.
This adds a speedup on database migration and /clearobjects command
|
|
|
|
| |
A missing map_meta.txt should be treated simply as if there were a blank file.
|