Jozef Behran [Sat, 10 Aug 2019 21:32:47 +0000 (23:32 +0200)]
Fix breakage of non-GLES2 setups (#8774)
The commit 526a9e4b66abaf83eb6b1aaa3e93375acd87b830 breaks
the non-GLES2 setups because the code that is intended to
handle that is behind "elseif()" which is interpreted as
"elseif(false)" and thus the code never gets executed. Fix
that by changing the offending line to else().
Additionally, to avoid breaking the server only build
(which shall not have a dependency on GL/GLU/GLES at all),
enclose the entire block code in if(BUILD_CLIENT).
Paramat [Wed, 7 Aug 2019 21:07:51 +0000 (22:07 +0100)]
Avoid crash caused by, and improve, 'findSpawnPos()' (#8728)
Avoid an unsuitable spawn position (which if outside mapgen limits can
cause a crash) if the main 0-3999 loop reaches its end. Fallback to a
spawn at 0,0,0.
Check the mapgen-returned 'spawn_level' value for being outside limits.
When 'air_count' reaches 2, move back down 1 to spawn in the lower
empty node.
If the spawn position is disallowed by 'objectpos_over_limit()', 'break'
from loop instead of 'continue' because positions above are probably
also over limit.
Reset 'air_count' to 0 if an obstruction is found, to make 'air_count'
consecutive empty nodes.
Allow spawn in 'airlike' drawtype nodes such as mod-added vacuum,
alien atmospheres, fog etc.
Add clarifying comments and improve codestyle.
Beha [Wed, 7 Aug 2019 08:48:04 +0000 (04:48 -0400)]
Do not add group values of zero to group lists. (#8751)
This fixes an issue where when the engine looked up groups (for example,
in ABM node names), NodeDefManager's m_group_to_items would contain nodes
with a group value of zero, resulting in nodes with flammable = 0 being
burned by a fire mod with a group:flammable checking ABM.
It brings consistency to the behaviour described in the api
documentation, where zero and nil groups should be the same.
Paramat [Tue, 6 Aug 2019 01:30:28 +0000 (02:30 +0100)]
Mapgen Flat: Fix and improve getSpawnLevelAtPoint() (#8756)
Previously, this wrongly returned ground level (a position containing
a solid node) as spawn level.
Return ground level + 2 (+ 2 to spawn above biome 'dust' nodes).
Improve codestyle and make more consistent with generateTerrain().
Beha [Thu, 1 Aug 2019 15:11:43 +0000 (11:11 -0400)]
Correct ServerActiveObject's virtual getArmorGroups() to be const.
Due to commit ec3142a , UnitSAO's getArmorGroups() did not match
ServerActiveObject's, notably resulting in the lua get_armor_groups() call
returning nothing.
Move the clamping of hp/breath when their maximums change to read_object_properties(). (#8689)
This prevents set_properties() calls that have nothing to do with hp_max or breath_max overriding the saved hp before another mod has the chance to set a player's intended hp_max (such as in on_joinplayer).
ContentCAO: Fix broken attachments on join (#8701)
What happened:
1) Object data is received. Client begins to read the data
2) Client initializes all its children (gob_cmd_update_infant)
3) Children try to attach to parent (yet not added)
4) Parent initializes, is added to the environment
And somewhere in between, Irrlicht wrecks up the attachments due to the missing matrix node.
The solution here is to:
1) Use the same structure as ServerActiveObject
2) Attach all children after the parent is really initialized
Re-order mapgens in mainmenu and 'all settings' mapgen selection (#8705)
v6 always last to discourage selection.
Special mapgens flat, fractal, singlenode, next to last. Of these, singlenode
last to discourage selection.
Of the remaining, v5 last due to age, v7 first due to being the default.
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.
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.
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`.
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.
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.
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
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
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().
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
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.