Midgard [Mon, 28 May 2018 16:00:42 +0000 (16:00 +0000)]
Print error when HOME is not set (#7376)
In some configurations, such as when using the runit supervisor and its
tool chpst, the HOME variable might be unset. This resulted in an
unclear error message that was hard to pin down.
Loïc Blot [Mon, 28 May 2018 13:39:02 +0000 (15:39 +0200)]
Fix more GCC 8.1 warnings 1 master
Fix 3 warnings reported by GCC 8.1 of the following type
```src/client/gameui.cpp:191:43: warning: « void* memset(void*, int, size_t) » effacement d'un objet du type non trivial « struct GameUI::Flags »; use assignment or value-initialization instead [-Wclass-memaccess]
memset(&m_flags, 0, sizeof(GameUI::Flags));
```
Loïc Blot [Mon, 28 May 2018 12:17:19 +0000 (14:17 +0200)]
Fix a -Wcatch-value warning reported by GCC 8.1
```
src/translation.cpp:43:16: warning: interception du type polymorphique « class std::out_of_range » par valeur [-Wcatch-value=]
} catch (std::out_of_range) {
```·
Paramat [Thu, 24 May 2018 21:20:06 +0000 (22:20 +0100)]
Vein ore: Fix bug caused by changing perlinmap Y size (#7371)
Because vein ore uses 3D noise (all the other ores use 2D noise) the
perlinmap Y size can be different in different mapchunks when close
to the ore Y limits.
Previously this caused bugs in the vein structure because changes in
perlinmap Y size did not recreate the noise objects.
Delete and recreate the noise objects with the new Y size if Y size
has changed.
Paramat [Thu, 24 May 2018 01:52:35 +0000 (02:52 +0100)]
Schematic decorations: Fix placement bug when centred and rotated (#7365)
Previously, the centering caused by the 'place center x/z' flags did
not take rotation into account. So schematics with unequal X and Z
dimensions were incorrectly placed. The bug was hidden for schematics
equal in X and Z dimensions.
Paramat [Wed, 16 May 2018 19:49:46 +0000 (20:49 +0100)]
Pointed_thing_to_face_pos: Avoid crash when player is inside a node (#7342)
Avoid crash in some situations when player is inside a node, causing
'above' to equal 'under'.
In this situation return 'under' which is the node position very close
to the face position that would normally be returned.
Paramat [Tue, 15 May 2018 18:35:55 +0000 (19:35 +0100)]
Contributing.md: Various additions and edits (#7309)
Add a new point to encourage discussion before coding. Move the 'ask
before significant coding' suggestion into this.
Edit and extend commit message guidelines. Refer to core dev commit
messages as good examples.
Remove 'short' and 'briefly' from the description guideline to try to
improve description quality.
Larger text for '### A pull-request is considered ..'.
Add a second roadmap link to celeron55's blog roadmap which is the 1st
part of the forum roadmap.
Add full stops to lists.
Consistent text size for '## Donations'.
Global new() or grab() to be managed in constuctor only (#7235 partial) (#7236)
* g_extrusion_mesh_cache new() and grab() to be managed in constuctor only (#7235 partial)
This global was getting grab()-ed by each call to getItemMesh, incrementing its reference count. What was to be the final drop() in the destructor ended up with > 0 reference count, so memory not freed by Irrlicht.
Mapgen caves: Re-order generation to fix cavern bug
Previously, caverns confused tunnel generation causing biome top and filler
nodes to appear in caverns.
Split 'generateCaves()' into 2 functions to separate tunnel and large
randomwalk cave generation.
In each mapgen re-order cave generation to generate tunnels before caverns.
Split some long lines.
Edit comments.
Remove unnecessary comments and unnecessary commented-out code.
Use std::fmax/fmin instead of MYMAX/MYMIN.
Remove scope-limiting braces.
Consistently define literals as floats, except in noise parameters.
Cleanup literals in noise parameters.
Remove unnecessary 'near_cavern' line.
Reduce max spawn y to be consistent with other mapgens.
Mgvalleys: Use shared tunnel / cavern code instead of internal
Caverns first appeared in mgvalleys and were later added to other
mapgens as shared code. Now this shared code can replace mgvalley's
internal cavern code.
Also use shared tunnel code instead of internal code.
Changes to mapgen that will affect existing worlds (mgvalleys is not
stable):
Single lava and water sources not added in tunnels.
Previous caverns are unchanged but an equal number of new ones are
added at a distance from the previous.
From y = -256 to 192 nodes below, where the caverns taper at their
upper limit, they will have a slightly different shape as the taper
is now linear.
Ben Deutsch [Wed, 18 Apr 2018 18:56:01 +0000 (20:56 +0200)]
PlayerSettings struct for player movement code (#7243)
Instead of calling g_settings->getBool("flag") multiple times
during each movement step, the current settings are cached
in a new player object member. Updated via registered callbacks.
* Android: Add zoom, minimap, and toggle chat button
Zoom button is put above jump button.
Minimap and toggle chat button are put in settings bar.
* Jump button is rotated down button
* Move three buttons on the right screen higher
Cavegen: Fix variable typo that broke mgvalleys large cave distribution (#7249)
Fix elusive 5 year old bug that caused mgvalleys large caves to be flat and
limited to mapchunk borders.
Error was fixed 2 years ago in 'CavesV6' but not in 'CavesRandomWalk'.
FOV: Raise lower limit to avoid zoom-loading of distant world (#7234)
In the client, raise lower limit from 30 to 45 degrees, to avoid server
seeing this as a zoom and loading world beyond the server-set limit.
Add minimum in settingtypes.txt and enforce lower limit when set using
minetest.conf.
In the server, distrust the client-sent FOV if below the heuristic zoom
threshold and use the player object property 'zoom_fov' to check it, to
protect against hacked clients.
Android: Replace movement buttons with joystick (#7126)
* Android: Replace movement buttons with joystick
Replace movement control buttons (arrows at bottom left screen) with virtual joystick.
Joystick has 8 directions (same as keyboard). Basically, just map it to keyboard input.
Joystick applies only on left 1/3 of screen.
Joystick's position can be fixed by enabling fixed_virtual_joystick setting.
Three new images:
(1) placeholder joystick,
(2) joystick container (background), and
(3) joystick cursor.
Remove unused images: movement control buttons (*_arrow.png).
New data type: touch_gui_joystick_move_id
Joystick's fixed position is spaced one button size from bottom and from left of screen.
Remove unused variable: m_joystick_downlocation
minduser00 [Tue, 27 Mar 2018 11:49:47 +0000 (11:49 +0000)]
Fix for translating empty strings
Fix for incorrect translation of empty strings
In the key change menu, when a button key not have name an empty string is passed to gettext.
The empty string is reserved for gettext to return de header of the .po file an this is shoved in the button
Sun colour: Undo colour change. Remove double assignment (#7227)
Commit 5070ca2111dd5b3f333a942059ef2c592de8dc24 changed sun colour by
fixing what seemed to be a code mistake.
Return to the standard colour but comment-out the first assignment of the
double-assignment for performance.
Add a comment to explain.
Biome API / dungeons: Add biome-defined dungeon nodes
Add new biome fields 'node_dungeon', 'node_dungeon_alt', 'node_dungeon_stair'.
If 'node_dungeon' is not defined dungeons fall back to classic behaviour.
Remove messy and imprecise dungeon material code from 'generateBiomes()'.
Code deciding dungeon materials is now in 'generateDungeons()' and uses the
biome at mapchunk centre for more precision.
Remove hardcoded 'MG_STONE' types as long intended.
Loïc Blot [Wed, 4 Apr 2018 18:49:42 +0000 (20:49 +0200)]
[clang-tidy] Promote some performance-* as a coding error (#7194)
* Promote performance-type-promotion-in-math-fn as a coding error
* Promote performance-faster-string-find too (which is not problematic currently)
* Same for performance-implicit-cast-in-loop
* Fix remaining tidy points
Loic Blot [Wed, 4 Apr 2018 06:40:21 +0000 (08:40 +0200)]
Fix 5 issues reported by PVS studio
* src/sky.cpp 146 warn V519 The 'suncolor_f.r' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 142, 146.
* src/sky.cpp 147 warn V519 The 'suncolor_f.g' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 143, 147.
* src/sky.cpp 148 warn V519 The 'suncolor_f.b' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 144, 148.
* src/threading/thread.cpp 63 err V730 Not all members of a class are initialized inside the constructor. Consider inspecting: m_thread_obj.
* src/server.cpp 3243 err V595 The 'log' pointer was utilized before it was verified against nullptr. Check lines: 3243, 3258.
Loïc Blot [Tue, 3 Apr 2018 22:43:08 +0000 (00:43 +0200)]
Optimize a little bit isBlockInSight, adjustDist & collisions (#7193)
* Use constexpr + unroll some calculations to cache definitively some calculations
* Unroll some calls in collision code & use a constref instead of a copy in one occurence
Loïc Blot [Sun, 1 Apr 2018 21:57:55 +0000 (23:57 +0200)]
LINT: add clang-tidy step (#6295)
* Implement new travis clang-tidy build step
* This step enable some rules and enforce one rule as error
* This permits to have some C++ quality rules based on clang & clang contributor guidelines
* Fix clang-tidy reported problems on push_back -> emplace_back
Loïc Blot [Fri, 30 Mar 2018 16:32:52 +0000 (18:32 +0200)]
Client eventmanager refactor (#7179)
* Drop EventManager from GameDef & do some client cleanups
* EventManager is only used by Client. Don't expose it on Server & GameDef for nothing
* Drop Client::event() in favor of direct calls to getEventManager
* Cleanup some event put from new + put to put(new)
* MtEvent: add Type(u8) enum
* This will enhance event performance & ensure stricter type
* Drop MtEvent::checkIs (unused)
* clang-tidy reported fixes
* Code style
* Move event_manager.h to the client directory as it's only used by client
Add EventManager unittests + switch to unordered_map as order is not important here
Loic Blot [Thu, 29 Mar 2018 11:36:01 +0000 (13:36 +0200)]
Fix a warning reported by clang
minetest/src/script/cpp_api/s_player.h:27:1: warning: struct 'PlayerHPChangeReason' was previously declared as a class [-Wmismatched-tags]
struct PlayerHPChangeReason;