oweals/minetest.git
5 years agoUse vector.dot and vector.cross in vector.angle
HybridDog [Sun, 14 Jul 2019 09:45:55 +0000 (11:45 +0200)]
Use vector.dot and vector.cross in vector.angle

5 years agoAdd vector.dot and vector.cross
HybridDog [Sat, 13 Jul 2019 11:46:44 +0000 (13:46 +0200)]
Add vector.dot and vector.cross

Mostly copied from MarkuBu's code

5 years agoDungeons: Make multiple large rooms possible (#8678)
Paramat [Tue, 16 Jul 2019 19:39:58 +0000 (20:39 +0100)]
Dungeons: Make multiple large rooms possible (#8678)

Re-add the random size range for large rooms.
Remove 'first_room_large' bool.
Add 'large_room_chance' parameter that can disable large rooms,
specify 1 large room, or specify a chance for large rooms.
If 1 or a chance is specified, the first generated room is large,
to take advantage of the intersection checks that are done for the
1st room only.

5 years agoDocs: Clarify where to check for 'protection_bypass' (#8675)
SmallJoker [Sun, 14 Jul 2019 11:23:38 +0000 (13:23 +0200)]
Docs: Clarify where to check for 'protection_bypass' (#8675)

5 years agoMove more dungeon parameter selection to mapgens (#8653)
Paramat [Tue, 9 Jul 2019 19:38:51 +0000 (20:38 +0100)]
Move more dungeon parameter selection to mapgens (#8653)

Move 'num_dungeons' to 'DungeonParams'.
Add new parameter 'num_rooms' to replace 'rooms_min' and 'rooms_max',
so that the mapgen has complete control over the number of rooms.
Add new bool 'first_room_large' so that the mapgen chooses this
instead of a hardcoded 1 in 4 chance.
Add new parameter 'room_size_large' to replace 'room_size_large_min'
and 'room_size_large_max', so that the mapgen has complete control
over this.

5 years agoDo predict when sneak-place to node with on_rightclick
DS-Minetest [Sat, 29 Jun 2019 14:17:00 +0000 (16:17 +0200)]
Do predict when sneak-place to node with on_rightclick

5 years agoImprove ABM time budget handling. #8645
Lars Hofhansl [Mon, 8 Jul 2019 06:23:00 +0000 (23:23 -0700)]
Improve ABM time budget handling. #8645

5 years agoDocument ObjectRef:remove under Lua entity (#8659)
ANAND [Mon, 8 Jul 2019 02:27:56 +0000 (07:57 +0530)]
Document ObjectRef:remove under Lua entity (#8659)

This was previously documented under the general ObjectRef section with a note that this won't work on players. So I think this would fit better with Lua entity-only methods.

This PR also changes the title of the Lua entity-only section from `LuaEntitySAO-only` to `Lua entity only`.

5 years agoImprove grammar and formatting in the README
Hugo Locurcio [Mon, 1 Jul 2019 18:46:28 +0000 (20:46 +0200)]
Improve grammar and formatting in the README

This also clarifies the fact that Minetest saves `minetest.conf`
when closing Minetest for the first time, rather than when starting it
for the first time.

This also fixes the default key for the pitch move mode which is now P.

5 years agoUpdate biome definition dungeon node documentation (#8650)
Paramat [Mon, 1 Jul 2019 21:21:17 +0000 (22:21 +0100)]
Update biome definition dungeon node documentation (#8650)

5 years agoDungeongen: Remove most hardcoded dungeon nodes (#8594)
Paramat [Sun, 30 Jun 2019 21:55:20 +0000 (22:55 +0100)]
Dungeongen: Remove most hardcoded dungeon nodes (#8594)

Biome-defined dungeon nodes was added as a feature to MT 5.0.0.
So now remove most of the hardcoded dungeon node code that assumes a
game has stone, sandstone, desert stone, and no other stone types.
If biome-defined dungeon nodes are not found, dungeon nodes fall back
to the 'cobble' mapgen alias if present, if not present they fall back
to biome-defined 'stone'.
Remove now-unnecessary mapgen aliases from MapgenBasic. Non-mgv6 games
now only need to define 3 to 5 mapgen aliases.

Document dungeon parameters.

Make c_lava_source fallback to c_water_source as both are used as cave
liquids.

5 years agoOptimize and unify mesh processing (#7851)
Vitaliy [Fri, 28 Jun 2019 02:22:16 +0000 (05:22 +0300)]
Optimize and unify mesh processing (#7851)

5 years agoAdd compatible, consistent coordinate system to FormSpecs. (#8524)
v-rob [Thu, 27 Jun 2019 12:40:49 +0000 (05:40 -0700)]
Add compatible, consistent coordinate system to FormSpecs. (#8524)

5 years agoIncrease upper limit of display_gamma to 10 (#8618)
ANAND [Thu, 27 Jun 2019 03:04:12 +0000 (08:34 +0530)]
Increase upper limit of display_gamma to 10 (#8618)

5 years agoAdd support for 9-sliced backgrounds (#8600)
rubenwardy [Sat, 22 Jun 2019 14:03:54 +0000 (15:03 +0100)]
Add support for 9-sliced backgrounds (#8600)

9-slice textures are commonly used in GUIs to allow scaling them to match any resolution without distortion.

https://en.wikipedia.org/wiki/9-slice_scaling

5 years agoFix segfault on quitting with open node formspec (#8608)
SmallJoker [Fri, 21 Jun 2019 19:00:30 +0000 (21:00 +0200)]
Fix segfault on quitting with open node formspec (#8608)

5 years agoImprove buildbot script
Pierre-Yves Rollo [Fri, 21 Jun 2019 00:43:59 +0000 (02:43 +0200)]
Improve buildbot script

PR created under the employment of EvidenceBKidscode

* Variables to set git repositories urls (allows to build from another repo)
* Variables to set git branch to build from (allows to build from non-master branch)
* Variables to change built name
* Make -j uses the proper number of processors (autodetect)
* Changed toolchain from win32 to adpat it to non-debian distros

5 years agoFix handling of --color and --worldlist command line arguments
Markus Mattes [Sat, 25 May 2019 20:41:47 +0000 (22:41 +0200)]
Fix handling of --color and --worldlist command line arguments

They verify the provided value and error if a wrong value got provided
command line description for color was differnt on win32 but  code did not handle any differenc
extended the command line description for world and worldname that it is clear that they only start a local game if used with --go

Fixes #7875

5 years agoExclude vscode editor files from source
Markus Mattes [Sat, 25 May 2019 20:35:03 +0000 (22:35 +0200)]
Exclude vscode editor files from source

5 years agoUpdate README copyright notice to 2019 (#8606)
Vilhelm Prytz [Wed, 19 Jun 2019 00:09:16 +0000 (02:09 +0200)]
Update README copyright notice to 2019 (#8606)

5 years agoMapgen Carpathian: Add optional rivers (#7977)
Paramat [Wed, 19 Jun 2019 00:06:08 +0000 (01:06 +0100)]
Mapgen Carpathian: Add optional rivers (#7977)

Rivers are disabled by default and will not be added to existing worlds.
Rewrite getSpawnLevelAtPoint() to be simpler and more consistent with
generateTerrain().

5 years agoAndroid: Use system provided path for default TMPFolder setting (#8505)
stujones11 [Sat, 15 Jun 2019 13:12:59 +0000 (14:12 +0100)]
Android: Use system provided path for default TMPFolder setting (#8505)

5 years agoUpdate Github templates (#8593)
rubenwardy [Thu, 13 Jun 2019 14:09:15 +0000 (15:09 +0100)]
Update Github templates (#8593)

5 years agoUse CDB author and name in installed package's config (#8550)
Paul Ouellette [Mon, 10 Jun 2019 17:49:00 +0000 (13:49 -0400)]
Use CDB author and name in installed package's config (#8550)

They are used for tracking the package, so should match ContentDB.

5 years agoSettings: Disallow space characters entirely
SmallJoker [Mon, 10 Jun 2019 16:17:57 +0000 (18:17 +0200)]
Settings: Disallow space characters entirely

Lua API:
> Setting names can't contain whitespace or any of ="{}#

5 years agoFormspecs: Close on metadata removal (#8348)
SmallJoker [Mon, 10 Jun 2019 11:01:07 +0000 (13:01 +0200)]
Formspecs: Close on metadata removal (#8348)

Formspecs will now close as soon the formspec string in the node metadata turns invalid.

5 years agoAdd disable_jump to liquids and ladders (#7688)
SmallJoker [Mon, 10 Jun 2019 11:00:35 +0000 (13:00 +0200)]
Add disable_jump to liquids and ladders (#7688)

Remove second nodedef check by improving the colliding node detection
Also remove the 2nd check in old_move, correct standing node a bit

5 years agoAdd compatibility to vcpkg buildsystem (#8317)
adrido [Mon, 10 Jun 2019 01:56:55 +0000 (03:56 +0200)]
Add compatibility to vcpkg buildsystem (#8317)

5 years agoSave forceloaded blocks file periodically (#8535)
Thomas Rudin [Mon, 10 Jun 2019 00:07:33 +0000 (02:07 +0200)]
Save forceloaded blocks file periodically (#8535)

saves the forceloaded blocks periodically.
checks every 10 seconds if the forceloaded blocks got changed in-game
and persists them on-disk if that's the case

5 years agoDamage: Play no damage sound when immortal (#8350)
SmallJoker [Sun, 9 Jun 2019 09:25:41 +0000 (11:25 +0200)]
Damage: Play no damage sound when immortal (#8350)

Add isImmortal server-side for proper enable_damage handling
Rework log messages

5 years agoRemove modstore leftovers. Fix core.show_path_select_dialog documentation (#8572)
DS [Fri, 7 Jun 2019 20:12:20 +0000 (22:12 +0200)]
Remove modstore leftovers. Fix core.show_path_select_dialog documentation (#8572)

This was forgotten in #5852.

5 years agoHTTP API: Allow binary downloads and headers (#8573)
SmallJoker [Thu, 6 Jun 2019 17:13:29 +0000 (19:13 +0200)]
HTTP API: Allow binary downloads and headers (#8573)

Add minetest.features.httpfetch_binary_data

5 years agoDungeons: Settable density noise, move number calculation to mapgens (#8473)
Paramat [Sat, 1 Jun 2019 19:50:43 +0000 (20:50 +0100)]
Dungeons: Settable density noise, move number calculation to mapgens (#8473)

Add user-settable noise parameters for dungeon density to each mapgen,
except V6 which hardcodes this noise parameter.

Move the calculation of number of dungeons generated in a mapchunk out
of dungeongen.cpp and into mapgen code, to allow mapgens to generate
any desired number of dungeons in a mapchunk, instead of being forced
to have number of dungeons determined by a density noise.

This is more flexible and allows mapgens to use dungeon generation to
create custom structures, such as occasional mega-dungeons.

5 years agoFix persistent ^[brighten after damage again (#5739)
SmallJoker [Sun, 26 May 2019 07:54:23 +0000 (09:54 +0200)]
Fix persistent ^[brighten after damage again (#5739)

The old texture modifier is restored by passing `m_previous_texture_modifier`.
Either copy it manually or let the function parameter do that.

Victims so far:
8e0b80a Apr 2018
eb2bda7 May 2019

5 years agooverride.txt: Fix crash due to CRLF endings (#8439)
David G [Sat, 25 May 2019 16:01:55 +0000 (18:01 +0200)]
override.txt: Fix crash due to CRLF endings (#8439)

5 years agoDo not drag-place stack into 'craftpreview' slot (#8514)
SmallJoker [Sat, 25 May 2019 15:37:54 +0000 (17:37 +0200)]
Do not drag-place stack into 'craftpreview' slot (#8514)

5 years agoAdd IGUIScrollbar implementation with variable bar sizes (#8507)
stujones11 [Fri, 24 May 2019 15:42:05 +0000 (16:42 +0100)]
Add IGUIScrollbar implementation with variable bar sizes (#8507)

5 years agoFix forgotten PlayerSAO cast in a90f2ef
SmallJoker [Tue, 21 May 2019 19:37:47 +0000 (21:37 +0200)]
Fix forgotten PlayerSAO cast in a90f2ef

5 years agoMake autoforward simulate the 'up' key (#8249)
DS [Tue, 21 May 2019 18:50:00 +0000 (20:50 +0200)]
Make autoforward simulate the 'up' key (#8249)

5 years agoCheck for out-of-bounds breath when setting breath_max (#8493)
ANAND ツ [Tue, 21 May 2019 17:37:58 +0000 (23:07 +0530)]
Check for out-of-bounds breath when setting breath_max (#8493)

5 years agoFix API site build (#8551)
Paul Ouellette [Tue, 21 May 2019 17:37:10 +0000 (13:37 -0400)]
Fix API site build (#8551)

5 years agol_mapgen.cpp: Fix LINT broken since b1b40fe
SmallJoker [Tue, 21 May 2019 17:16:01 +0000 (19:16 +0200)]
l_mapgen.cpp: Fix LINT broken since b1b40fe

5 years agoPrioritise craft recipes
HybridDog [Wed, 3 Apr 2019 11:46:11 +0000 (13:46 +0200)]
Prioritise craft recipes

When multiple recipes are applicable, the recipes are prioritised in this order:
toolrepair < shapeless with groups < shapeless < shaped with groups < shaped
For cooking and fuel, items are prioritised over item groups

5 years agoTest crafting hash type only once for a recipe
HybridDog [Wed, 3 Apr 2019 11:59:42 +0000 (13:59 +0200)]
Test crafting hash type only once for a recipe

5 years agoAllow multiple cave liquids in a biome definition (#8481)
Paramat [Sat, 18 May 2019 20:13:14 +0000 (21:13 +0100)]
Allow multiple cave liquids in a biome definition (#8481)

This allows games to specify biome cave liquids and avoid the old
hardcoded behaviour, but preserves the ability to have multiple
cave liquids in one biome, such as lava and water.

When multiple cave liquids are defined by the biome definition,
make each entire cave use a randomly chosen liquid, instead of
every small cave segment using a randomly chosen liquid.

Plus an optimisation:
Don't place nodes if cave liquid is defined as 'air'

5 years agoAdd content_rating tag to appdata (#8538)
Carles Pastor Badosa [Sat, 18 May 2019 15:19:56 +0000 (17:19 +0200)]
Add content_rating tag to appdata (#8538)

This tag allows software stores (KDE discover, etc) to filter and know whether applications are suitable for young users.

5 years agoOptimize string (mis)handling (#8128)
Jozef Behran [Sat, 18 May 2019 15:19:13 +0000 (10:19 -0500)]
Optimize string (mis)handling (#8128)

* Optimize statbar drawing

The texture name of the statbar is a string passed by value.
That slows down the client and creates litter in the heap
as the content of the string is allocated there. Convert the
offending parameter to a const reference to avoid the
performance hit.

* Optimize texture cache

There is an unnecessary temporary created when the texture
path is being generated. This slows down the cache each time
a new texture is encountered and it needs to be loaded into
the cache. Additionally, the heap litter created by this
unnecessary temporary is particularly troublesome here as
the following code then piles another string (the resulting
full path of the texture) on top of it, followed by the
texture itself, which both are quite long term objects as
they are subsequently inserted into the cache where they can
remain for quite a while (especially if the texture turns
out to be a common one like dirt, grass or stone).

Use std::string.append to get rid of the temporary which
solves both issues (speed and heap fragmentation).

* Optimize animations in client

Each time an animated node is updated, an unnecessary copy of
the texture name is created, littering the heap with lots of
fragments. This can be specifically troublesome when looking
at oceans or large lava lakes as both of these nodes are
usually animated (the lava animation is pretty visible).
Convert the parameter of GenericCAO::updateTextures to a
const reference to get rid of the unnecessary copy.

There is a comment stating "std::string copy is mandatory as
mod can be a class member and there is a swap on those class
members ... do NOT pass by reference", reinforcing the
belief that the unnecessary copy is in fact necessary.
However one of the first things the code of the method does
is to assign the parameter to its class member, creating
another copy. By rearranging the code a little bit this
"another copy" can then be used by the subsequent code,
getting rid of the need to pass the parameter by value and
thus saving that copying effort.

* Optimize chat console history handling

The GUIChatConsole::replaceAndAddToHistory was getting the
line to work on by value which turns out to be unnecessary.
Get rid of that unnecessary copy by converting the parameter
to a const reference.

* Optimize gui texture setting

The code used to set the texture for GUI components was
getting the name of the texture by value, creating
unnecessary performance bottleneck for mods/games with
heavily textured GUIs. Get rid of the bottleneck by passing
the texture name as a const reference.

* Optimize sound playing code in GUIEngine

The GUIEngine's code receives the specification of the sound
to be played by value, which turns out to be most likely a
mistake as the underlying sound manager interface receives
the same thing by reference. Convert the offending parameter
to a const reference to get rid of the rather bulky copying
effort and the associated performance hit.

* Silence CLANG TIDY warnings for unit tests

Change "std::string" to "const std::string &" to avoid an
unnecessary local value copy, silencing the CLANG TIDY
process.

* Optimize formspec handling

The "formspec prepend" parameter was passed to the formspec
handling code by value, creating unnecessary copy of
std::string and slowing down the game if mods add things like
textured backgrounds for the player inventory and/or other
forms. Get rid of that performance bottleneck by converting
the parameter to a const reference.

* Optimize hotbar image handling

The code that sets the background images for the hotbar is
getting the name of the image by value, creating an
unnecessary std::string copying effort. Fix that by
converting the relevant parameters to const references.

* Optimize inventory deserialization

The inventory manager deserialization code gets the
serialized version of the inventory by value, slowing the
server and the client down when there are inventory updates.
This can get particularly troublesome with pipeworks which
adds nodes that can mess around with inventories
automatically or with mods that have mobs with inventories
that actively use them.

* Optimize texture scaling cache

There is an io::path parameter passed by value in the
procedure used to add images converted from textures,
leading to slowdown when the image is not yet created and
the conversion is thus needed. The performance hit is
quite significant as io::path is similar to std::string
so convert the parameter to a const reference to get rid of
it.

* Optimize translation file loader

Use "std::string::append" when calculating the final index
for the translation table to avoid unnecessary temporary
strings. This speeds the translation file loader up
significantly as std::string uses heap allocation which
tends to be rather slow. Additionally, the heap is no
longer being littered by these unnecessary string
temporaries, increasing performance of code that gets
executed after the translation file loader finishes.

* Optimize server map saving

When the directory structure for the world data is created
during server map saving, an unnecessary value passing of
the directory name slows things down. Remove that overhead
by converting the offending parameter to a const reference.

5 years agoRevert "Inventory: Make addItem for empty ItemStacks respect max stack size" (#8519)
ANAND ︻气デ═一 [Sun, 12 May 2019 17:07:15 +0000 (22:37 +0530)]
Revert "Inventory: Make addItem for empty ItemStacks respect max stack size" (#8519)

Revert commit e6a9e60

5 years agoMove HTTP request logging to infostream (#8526)
ANAND ︻气デ═一 [Sun, 12 May 2019 16:55:15 +0000 (22:25 +0530)]
Move HTTP request logging to infostream (#8526)

5 years agoDefine operators == and != for ItemStack
ANAND ︻气デ═一 [Sat, 11 May 2019 16:48:27 +0000 (22:18 +0530)]
Define operators == and != for ItemStack

5 years agobuiltin/../register.lua: Abort make_wrap_deregistration if param is invalid
ANAND [Sun, 28 Apr 2019 09:42:20 +0000 (15:12 +0530)]
builtin/../register.lua: Abort make_wrap_deregistration if param is invalid

5 years agominimal: Fix crash due to assertion fail
ANAND [Fri, 3 May 2019 12:44:05 +0000 (18:14 +0530)]
minimal: Fix crash due to assertion fail

5 years agoBetter document behavior of on_punchplayer
ANAND [Sat, 27 Apr 2019 12:35:28 +0000 (18:05 +0530)]
Better document behavior of on_punchplayer

Esp. the fact that it's invoked even if the punched player is dead

5 years agoPlayerSAO::setHP - Don't call on_hpchange callbacks if HP hasn't changed
ANAND [Sat, 27 Apr 2019 11:53:36 +0000 (17:23 +0530)]
PlayerSAO::setHP - Don't call on_hpchange callbacks if HP hasn't changed

5 years agoRemove unnecessary CSM warning (#8485)
Paramat [Sat, 27 Apr 2019 23:44:26 +0000 (00:44 +0100)]
Remove unnecessary CSM warning (#8485)

5 years agoForce send a mapblock to a player (#8140)
sofar [Sat, 27 Apr 2019 23:42:13 +0000 (16:42 -0700)]
Force send a mapblock to a player (#8140)

* Force send a mapblock to a player.

Send a single mapblock to a specific remote player.

This is badly needed for mods and games where players are teleported
into terrain which may be not generated, loaded, or modified
significantly since the last player visit.

In all these cases, the player currently ends up in void, air, or
inside blocks which not only looks bad, but has the effect that the
player might end up falling and then the server needs to correct for
the player position again later, which is a hack.

The best solution is to send at least the single mapblock that the
player will be teleported to. I've tested this with ITB which does this
all the time, and I can see it functioning as expected (it even shows
a half loaded entry hallway, as the further blocks aren't loaded yet).

The parameter is a blockpos (table of x, y, z), not a regular pos.

The function may return false if the call failed. This is most likely
due to the target position not being generated or emerged yet, or
another internal failure, such as the player not being initialized.

* Always send mapblock on teleport or respawn.

This avoids the need for mods to send a mapblock on teleport or
respawn, since any call to `player:set_pos()` will pass this code.

5 years agoImprove readability of debug menu by using '|' (#8488)
ANAND [Sat, 27 Apr 2019 10:45:44 +0000 (16:15 +0530)]
Improve readability of debug menu by using '|' (#8488)

* Improve readability of debug menu by using '|'

* Restore whitespace to separate yaw and cardinal direction

Co-Authored-By: ClobberXD <ClobberXD@gmail.com>
5 years agoRange-limit value passed to PlayerSAO::set{HP|Breath} (#8264)
ANAND [Sat, 27 Apr 2019 10:45:20 +0000 (16:15 +0530)]
Range-limit value passed to PlayerSAO::set{HP|Breath} (#8264)

5 years agoUse player as starting point instead of camera when pointing node (#8261)
Muhammad Rifqi Priyo Susanto [Sat, 27 Apr 2019 10:44:56 +0000 (17:44 +0700)]
Use player as starting point instead of camera when pointing node (#8261)

Same pointing area on both camera modes.
This fix is inapplicable for non-crosshair input.

5 years agoCorrect the checkbox selection box position (#8246)
SmallJoker [Fri, 26 Apr 2019 23:56:31 +0000 (01:56 +0200)]
Correct the checkbox selection box position (#8246)

Remove m_btn_height dependency, replace with the text and checkbox size.

5 years agoCMakeLists.txt: Remove references to Minecraft and Infiniminer (#8487)
ANAND [Fri, 26 Apr 2019 17:07:32 +0000 (22:37 +0530)]
CMakeLists.txt: Remove references to Minecraft and Infiniminer (#8487)

5 years agoAndroid: Clear chat open flag on cancel or completion (#8478)
stujones11 [Fri, 19 Apr 2019 10:06:47 +0000 (11:06 +0100)]
Android: Clear chat open flag on cancel or completion (#8478)

5 years agoAttend to review, re-arrange blank lines, update lua_api.txt
paramat [Wed, 10 Apr 2019 19:33:54 +0000 (20:33 +0100)]
Attend to review, re-arrange blank lines, update lua_api.txt

5 years agoFix regression in automatic_face_movement_max_rotation_per_sec
Pedro Gimeno [Thu, 4 Apr 2019 16:53:55 +0000 (18:53 +0200)]
Fix regression in automatic_face_movement_max_rotation_per_sec

Values <= 0 should make the yaw change instant. This worked in 0.4.16 but was broken in 089f59458286.

Per bug report by oil_boi_minetest on IRC.

5 years agoVarious network performance improvements (#8125)
Jozef Behran [Sun, 14 Apr 2019 20:56:38 +0000 (15:56 -0500)]
Various network performance improvements (#8125)

* Optimize packet construction functions

Some of the functions that construct packets in
connection.cpp are using a const reference to get the raw
packet data to package and others use a value passed
parameter to do that. The ones that use the value passed
parameter suffer from performance hit as the rather bulky
packet data gets a temporary copy when the parameter is
passed before it lands at its final destination inside the
newly constructed packet. The unnecessary temporary copy
hurts quite badly as the underlying class (SharedBuffer)
actually allocates the space for the data in the heap.

Fix the performance hit by converting all of these value
passed parameters to const references. I believe that this
is what the author of the relevant code actually intended
to do as there is a couple of packet construction helper
functions that already use a const reference to get the
raw data.

* Optimize packet sender thread class

Most of the data sending methods of the packet sender thread
class use a value passed parameter for the packet data to be
sent. This causes the rather bulky data to be allocated on
the heap and copied, slowing the packet sending down. Convert
these parameters to const references to avoid the performance
hit.

* Optimize packet receiver thread class

The packet receiver and processor thread class has many
methods (mostly packet handlers) that receive the packed data
by value. This causes a performance hit that is actually
worse than the one caused by the packet sender methods
because the packet is first handed to the processPacket
method which looks at the packet type stored in the header
and then delegates the actual handling to one of the
handlers. Both, processPacket and all the handlers get the
packet data by value, leading to at least two unnecessary
copies of the data (with malloc and all the slow bells and
whistles of bulky classes).

As there already is a few methods that use a const reference
parameter for the packet data, convert all this value passed
packets to const references.

5 years agoWorld start time: Move to first full light (day night ratio = 1000) (#8410)
Paramat [Sat, 13 Apr 2019 00:46:38 +0000 (01:46 +0100)]
World start time: Move to first full light (day night ratio = 1000) (#8410)

6125 is the time of first full light according to 'get_node_light()',
and the time of first full light visually when basic shaders are on.
This is the optimum default new world start time, taking all possible
games into account.
The previous time assumed a game similar to Minetest Game. Games
should set this setting themselves according to their needs.

5 years agoAdd Irrlicht-specific smart pointer (#6814)
Vitaliy [Fri, 12 Apr 2019 16:27:39 +0000 (19:27 +0300)]
Add Irrlicht-specific smart pointer (#6814)

5 years agoAdd Mkdocs API site (#8133)
Paul Ouellette [Fri, 12 Apr 2019 12:29:29 +0000 (08:29 -0400)]
Add Mkdocs API site (#8133)

* Add MkDocs API site

5 years agoAdd node field to PlayerHPChangeReason table (#8368)
Paul Ouellette [Thu, 11 Apr 2019 19:45:39 +0000 (15:45 -0400)]
Add node field to PlayerHPChangeReason table (#8368)

5 years agoNodedef 'drop' documentation: Improve, add tool filtering (#8458)
Paramat [Tue, 9 Apr 2019 02:20:27 +0000 (03:20 +0100)]
Nodedef 'drop' documentation: Improve, add tool filtering (#8458)

5 years agoutil/hex.h: Remove whitespace-only line (#8460)
ANAND [Mon, 8 Apr 2019 18:40:02 +0000 (00:10 +0530)]
util/hex.h: Remove whitespace-only line (#8460)

5 years agodaynightratio.h: Improve codestyle, minor optimisations (#8453)
Paramat [Sun, 7 Apr 2019 23:37:52 +0000 (00:37 +0100)]
daynightratio.h: Improve codestyle, minor optimisations (#8453)

5 years agoAndroid settings: Use 'simple' leaves instead of 'fancy' (#8440)
Paramat [Sun, 7 Apr 2019 18:20:00 +0000 (19:20 +0100)]
Android settings: Use 'simple' leaves instead of 'fancy' (#8440)

'Fancy' leaves are intensive to render.
Also remove the unnecessary duplicated setting of 'chunksize'.

5 years agoOptimize random turns in dungeongen (#8129)
Jozef Behran [Sun, 7 Apr 2019 17:08:27 +0000 (12:08 -0500)]
Optimize random turns in dungeongen (#8129)

It turns out there is no need to return the new value and
preserve the old one in random_turn, the procedure can be
made to modify the value in-place. This saves quite a bunch
of parameter and return value copying.

5 years agoFind PostgreSQL correctly (#8435)
adrido [Sun, 7 Apr 2019 16:45:25 +0000 (18:45 +0200)]
Find PostgreSQL correctly (#8435)

5 years agoutil/hex.h: Reserve result space in hex_encode()
starling13 [Sun, 7 Apr 2019 10:01:42 +0000 (13:01 +0300)]
util/hex.h: Reserve result space in hex_encode()

Reserve enough space for the result of hex_encode() to eliminate reallocations

5 years agoAdd deprecation warnings for ObjectRef:get/set_attribute (#8443)
ANAND [Sun, 7 Apr 2019 10:00:57 +0000 (15:30 +0530)]
Add deprecation warnings for ObjectRef:get/set_attribute (#8443)

5 years agoStabilise 'day night ratio' to fix object brightness flicker (#8417)
Paramat [Thu, 4 Apr 2019 22:30:10 +0000 (23:30 +0100)]
Stabilise 'day night ratio' to fix object brightness flicker (#8417)

Previously, when basic shaders were enabled, the function
time_to_daynight_ratio() returned values jumping between 149 and 150
between times 4375 and 4625, and values jumping between 999 and 1000
between times 6125 and 6375, (and the corresponding times at sunset)
due to tiny float errors in the interpolation code.

This caused the light level returned by blend_light() to jump between
14 and 15, which became noticeable recently as those light levels were
given different visual brightnesses.

Add early returns to avoid the problematic interpolation, and to
avoid unnecessary running of the loop.

5 years agoChange sign of pitch angle in debug menu (#8438)
ANAND [Thu, 4 Apr 2019 21:42:18 +0000 (03:12 +0530)]
Change sign of pitch angle in debug menu (#8438)

Co-Authored-By: ClobberXD <ClobberXD@gmail.com>
5 years agoChange pitch fly binding to 'P', add to change keys menu (#8314)
rubenwardy [Wed, 3 Apr 2019 20:37:30 +0000 (21:37 +0100)]
Change pitch fly binding to 'P', add to change keys menu (#8314)

5 years agoFix comments
Loic Blot [Sun, 31 Mar 2019 17:30:20 +0000 (19:30 +0200)]
Fix comments

5 years agoCreate ServerThread earlier in the startup process
Loïc Blot [Mon, 25 Mar 2019 15:54:27 +0000 (16:54 +0100)]
Create ServerThread earlier in the startup process

5 years agomapgen: drop mapgen id from child mapgens.
Loïc Blot [Mon, 25 Mar 2019 15:42:53 +0000 (16:42 +0100)]
mapgen: drop mapgen id from child mapgens.

This id must be owned by the child mapgen and never be set to a misc value by a developer

Also use nullptr in some places

5 years agoEmergeManager::initMapgens use FATAL_ERROR if and drop boolean return
Loïc Blot [Mon, 25 Mar 2019 15:38:35 +0000 (16:38 +0100)]
EmergeManager::initMapgens use FATAL_ERROR if and drop boolean return

We never handle the boolean return, also init twice is a coding error, not a runtime error

5 years agoUse unordered_map instead of map for craft definitions (#8432)
HybridDog [Sun, 31 Mar 2019 17:26:17 +0000 (19:26 +0200)]
Use unordered_map instead of map for craft definitions (#8432)

5 years agoOptimize core.after in a simple way (#8351)
DS [Wed, 27 Mar 2019 20:05:50 +0000 (21:05 +0100)]
Optimize core.after in a simple way (#8351)

5 years agoRequire 'waving = 3' in a nodedef to apply the liquid waving shader (#8418)
Paramat [Wed, 27 Mar 2019 00:18:43 +0000 (00:18 +0000)]
Require 'waving = 3' in a nodedef to apply the liquid waving shader (#8418)

Makes the liquid waving shader per-nodedef like waving leaves/plants,
instead of being applied to all liquids.
Like the waving leaves/plants shaders, the liquid waving shader can
also be applied to meshes and nodeboxes.

Derived from a PR by t0ny2.

5 years agoDungeons: Do not remove nodes that have 'is_ground_content = false' (#8423)
Paramat [Tue, 26 Mar 2019 03:56:57 +0000 (03:56 +0000)]
Dungeons: Do not remove nodes that have 'is_ground_content = false' (#8423)

Like randomwalk caves, preserve nodes that have 'is_ground_content = false',
to avoid dungeons that generate out beyond the edge of a mapchunk destroying
nodes added by mods in 'register_on_generated()'.

Issue discovered by, and original PR by, argyle77.

5 years agoPrevent multi-line chat messages server-side (#8420)
rubenwardy [Tue, 26 Mar 2019 01:18:52 +0000 (01:18 +0000)]
Prevent multi-line chat messages server-side (#8420)

5 years agoDocument 'highly unstable' mapgens instead of 'stable' mapgens (#8404)
Paramat [Wed, 20 Mar 2019 04:37:33 +0000 (04:37 +0000)]
Document 'highly unstable' mapgens instead of 'stable' mapgens (#8404)

5 years agoFix texture rotation for wallmounted nodeboxes
sfan5 [Mon, 18 Mar 2019 21:41:39 +0000 (22:41 +0100)]
Fix texture rotation for wallmounted nodeboxes

fixes #8358

5 years agohttpfetch: Disable IPv6 here too if requested by settings (#8399)
sfan5 [Mon, 18 Mar 2019 14:06:27 +0000 (15:06 +0100)]
httpfetch: Disable IPv6 here too if requested by settings (#8399)

5 years agonum_emerge_threads: Initialise value to cope with setting syntax error (#8396)
Paramat [Mon, 18 Mar 2019 10:19:53 +0000 (10:19 +0000)]
num_emerge_threads: Initialise value to cope with setting syntax error (#8396)

5 years agonum_emerge_threads: Fix documentation of automatic selection
paramat [Sun, 17 Mar 2019 08:38:15 +0000 (08:38 +0000)]
num_emerge_threads: Fix documentation of automatic selection

5 years agoAdd newline before itemstring in item tooltip (#8213)
Wuzzy [Sun, 17 Mar 2019 12:55:02 +0000 (13:55 +0100)]
Add newline before itemstring in item tooltip (#8213)

5 years agocore.after: Improve assertion message (#8388)
ANAND [Sun, 17 Mar 2019 09:25:47 +0000 (14:55 +0530)]
core.after: Improve assertion message (#8388)

5 years agoBuiltin: Add vector.angle(). Returns the angle between 2 vectors (#7738)
ANAND [Sun, 17 Mar 2019 02:05:03 +0000 (07:35 +0530)]
Builtin: Add vector.angle(). Returns the angle between 2 vectors (#7738)

5 years agoLua_api.txt: Document blockpos, coordinate conversion, map terminology (#8376)
Paramat [Sat, 16 Mar 2019 05:04:11 +0000 (05:04 +0000)]
Lua_api.txt: Document blockpos, coordinate conversion, map terminology (#8376)

Also fix and improve LVM 'calc_lighting()' warning.

5 years agonum_emerge_threads: Warn of crashes when > 1 (#8357)
Paramat [Thu, 14 Mar 2019 12:49:33 +0000 (12:49 +0000)]
num_emerge_threads: Warn of crashes when > 1 (#8357)

5 years agoLINT fixes since recent tooling update
Loïc Blot [Thu, 14 Mar 2019 10:49:46 +0000 (11:49 +0100)]
LINT fixes since recent tooling update