Biome API: Revert biomes, decos, ores being relative to water level
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.
Biome generation: Fix layers of 'filler' nodes at biome y limits
Error was exposed by commit a1389c38658fe69c3bd25c3099bae9a4e51ed401
'nplaced' was not set to U16_MAX when biome 'stone' was placed, so when
biome was recalculated in a column of stone, the 'nplaced' value
caused a few remaining filler nodes to be placed.
Occurs when the lower biome has a deeper depth of 'top' plus 'filler'
than the upper biome.
Cavegen: Avoid unsupported biome 'top' or 'filler' nodes
For 3D noise tunnels only, replace unsupported biome 'top' and 'filler'
nodes in tunnel roof with the defined biome 'stone'.
This makes terrain created by 3D noise tunnels consistent with the rest
of mapgen, which does exactly the same in this situation.
Rob Blanckaert [Sat, 2 Sep 2017 06:12:15 +0000 (23:12 -0700)]
Object properties: Add 'glow', disables light's effect if negative
The 'glow' value is added to the ambient light value.
Negative 'glow' disables light's effect on object colour, for faking
self-lighting, UI-style entities, or programmatic colouring in mods.
Dig prediction allows clients to remove dug nodes without
waiting for server acknowledgement.
This patch allows mods to override dig prediction,
it can either be turned off or a different "prediction node"
can be selected.
For precise control of schematic vertical position relative to the
'place_on' node.
Avoids workarounds that add empty nodes to a schematic and therefore
reduce performance.
Creates a single undulating ore stratum that is continuous across mapchunk
borders and horizontally spans the world.
Due to being continuous is ideal for creating bands of alternative stone
type running through cliffs and mountains, or underground layers.
Add missing documentation of 'ore_param2' parameter.
Fix animation frame_speed and blend loosing precision due to incorrec… (#6357)
* Fix animation frame_speed and blend loosing precision due to incorrect data type
Add lua function set_animation_frame_speed to update the frame speed without resetting the animation to start
Loïc Blot [Tue, 29 Aug 2017 17:25:16 +0000 (19:25 +0200)]
Formspec: Add options to set background color and opacity (fullscreen mode + default mode) (#5493)
* Formspec: Add options to set background color and opacity (fullscreen mode)
* Enhance previous comment: Set formspec background when regenerate UI.
* This permit to do the calcul only at regen and override it with bgcolor tag
* Add a setting for default background color into formspec, separated from fullscreen
* Add a little performance gain on formspecs using a const ref instead of copying formspec string
paramat [Sun, 27 Aug 2017 22:48:51 +0000 (23:48 +0100)]
Advanced settings: Make 'controls', 'graphics', 'sound' more accessible
Move client 'controls', 'graphics' and 'sound' into the first level to be
immediately visible to players who may not realise these come under 'client'.
These are the settings that new players or players on a server are likely to
want to access while not having understanding of what comes under 'client'.
Leave client 'network' and 'advanced' under 'client' as these are more
advanced.
Move 'show entity selection boxes' from the bizarre location in
'client'>'network' to 'graphics'>'in game'>'advanced'.
Loïc Blot [Mon, 28 Aug 2017 15:12:30 +0000 (17:12 +0200)]
Pass SharedBuffer as value to increment reference count
This should fix #6332
Refcount is not increased due to reference, it can make this refcount incorrect in a multithread context
Ben Deutsch [Sat, 26 Aug 2017 07:01:09 +0000 (09:01 +0200)]
Alternative code for slipping (#6256)
* Alternative code for slipping
- does not depend on frame rate
- controllable via environment variables for now
* Adjust slipping speed for item entities too.
* Final version of framerate-independent slippery code
* Remove dead code and fix formatting
* getStandingNodePos should only look 0.05 nodes downwards
This ensures that, even if the player is standing on a partially
filled node, this node is used as the standing node and not the
node below it.
Specific use: enables slippery slabs
* Exchange global getStandingPosNode change for local inline change
Reverts previous commit
* Revert the item movement changes
* Slippery nodes now slip over cliffs and edges
Players no longer suddenly stop before falling off.
Also refactored slippery code into getSlipFactor method.
* Slipping over an edge gated by player's is_slipping state
A new flag for just this case, to reduce costly node lookups in
the normal case of leaning over a non-slippery edge.
Public access for consistency and potential future uses.
* Minor code tweaks / cosmetics
* Add temp variable to improve readability and fix indentation issues
Ben Deutsch [Thu, 24 Aug 2017 06:30:46 +0000 (08:30 +0200)]
Safe digging and placing (#6127)
* Setting: Safe digging and placing
* New setting 'safe_dig_and_place' under Controls
* If set, digging and placing will not auto-repeat
* Releasing buttons unblocks the respective action again
* Useful for inexperienced users in creative mode where default
repeat times may be too short
* Safe placing (right click repetition) does not need a guarding flag
Loïc Blot [Thu, 24 Aug 2017 06:28:54 +0000 (08:28 +0200)]
Network cleanup (#6302)
* Cleanup network headers
* Move peerhandler to a specific header to reduce compilation times
* Move socket.cpp/h to network folder
* More work
* Network code cleanups
* Move socket.{cpp,h} to network folder
* Move Address object to network/address.{cpp,h}
* Move network exceptions to network/networkexceptions.h
* Client: use unique_ptr for Connection
* Server/ClientIface: use shared_ptr for Connection
* Format fixes
* Remove socket.cpp socket.h from clang-format whitelist
* Also fix NetworkPacket code style & make it under clang-format
SmallJoker [Wed, 23 Aug 2017 20:32:10 +0000 (22:32 +0200)]
Respect object property hp_max field for players (#6287)
* Respect object property hp_max field for players
This allows modders to configure the maximal HP per player
* Statbars: Downscale bar to full 20 HP when exceeding this value
Add default max HP for players and breath constants to builtin
Document the constants
Loïc Blot [Mon, 21 Aug 2017 14:07:39 +0000 (16:07 +0200)]
serialize: use a temporary for SerializeException
Exception must always use temporary instead of global copied exception instances, it's not recommended and should have undefined issues