Commit Graph

668 Commits

Author SHA1 Message Date
raymoo 222e8090c1
Forceloading: Transient forceloads
Adds a flag to forceload_block which lets you turn off persistence for
that forceload.
2022-05-21 16:13:52 +02:00
Rui 1344513303
Fix typo in core.after (#4560) 2022-05-21 16:13:52 +02:00
paramat eef3643501
Conf.example: Re-add deleted noise parameter documentation
Re-add documentation of noise parameter formats.
Re-add 'mgv5_np_ground' noise parameters in group format.
Both these were deleted through auto-generation of conf.example.
Add note to builtin/mainmenu/dlg_settings_advanced.lua that this
documentation must be preserved.
2022-05-21 16:13:52 +02:00
paramat 2e54664273
Builtin: Change error to warning for light_source > 14 2022-05-21 16:13:51 +02:00
James Stevenson aaf808144d
Increase default font size by 1 2022-05-21 16:13:51 +02:00
est31 d6ef8bb772
Fix a typo and use proper deprecation notification system
Fix a typo pointed out by @thecow275.

Also, use the deprecated notification system which respects the
deprecated_lua_api_handling setting.
2022-05-21 16:13:50 +02:00
paramat a114f7297e
Register.lua: Throw error if node 'light_source' > core.LIGHT_MAX
Add 'core.LIGHT_MAX = 14' to builtin/game/constants.lua with the intention
to replace misplaced 'default.LIGHT_MAX = 14' in Minetest Game.
Add comment in light.h requiring the constant be changed in both places.
Add lighting bug warning to note in lua_api.txt.
There are hundreds of mod uses of 15 which causes a lighting bug.
2022-05-21 16:13:50 +02:00
paly2 716d19077f
Add minetest.unregister_item and minetest.register_alias_force 2022-05-21 16:13:49 +02:00
Rui c774d1e0df
Document keymap_autorun in settingtypes.txt and minetest.conf.example (#4486) 2022-05-21 16:13:49 +02:00
red-001 1c7b95f66f
Settingtypes.txt: Clarify comments, correct spelling 2022-05-21 16:13:49 +02:00
SmallJoker 3102f9f030
Builtin: Disallow registering users with the same name
Prevents duplicate names: 'NickName', 'nickname', 'NICKNAME'.
Skips already registered users, so they can connect as usual.
2022-05-21 16:13:48 +02:00
est31 6213fb1cf6
Client: disable pre v25 init sending by default
Disable the ability to connect to old servers by default to
improve password security.

If people still want to connect to old (0.4.12 and earlier)
servers, they can flip the send_pre_v25_init setting.

Add the ability to detect if we've tried to connect
to a server which only supports the pre v25 init protocol,
and show an apropriate error message. Most times the error
will already be catched at the serverlist level, the
detection mechanism only acts as last resort, because the
"Connection timed out" error message that would be shown
otherwise would be very confusing.

Automatic "fixing" of this condition is not desired,
as it would allow for downgrade attacks.

As already 161 of the 167 servers on the serverlist
support the new srp based auth protocol (> 96%),
the breakage should be minimal.

Follow up of commit

af30183124d40a969040d7de4b3a487feec466e4 "Add option to not send pre v25 init packet"

Also change the pessimistic assumption of masterlist
server versions to optimistic, in order to avoid buggy
behaviour (favourites not in the serverlist would be
denied to connect to, etc).
2022-05-21 16:13:48 +02:00
Xunto bf33a189da
Move on join and on leave messages to lua (#4460) 2022-05-21 16:13:47 +02:00
Tim cae4272b18
Tidy up generate_from_settingtypes.lua a bit.
* Multiline strings
* Table-concat instead of String-concats
* string.rep instead of loop-concat
* string.format %q instead of manual quotation by gsub
* Assert writeable files
* Generate new settings_translation_file
2022-05-21 16:13:47 +02:00
Tim caeafe3a44
Move generation from settingtypes out of dlg_settings_advanced
Avoids unreachable code linter warning by moving generation code
(of minetest.conf.example and settings_translation_file.cpp)
out of dlg_settings_advanced.

Due to passing the settings, also it avoids reading the settings file twice.

Instead of activating the code by changing the active if-clauses,
its activation is now done by uncommenting the loadfile() statement.
2022-05-21 16:13:46 +02:00
Ben Deutsch 6d21a3b8fe
Zooming the camera requires the 'zoom' privilege 2022-05-21 16:13:46 +02:00
Ben Deutsch bb50564ddd
Document zoom_fov in settingtypes.txt and minetest.conf.example 2022-05-21 16:13:46 +02:00
Wuzzy ac759533bd
Main menu, lua_api.txt: Fix mod/texture pack screenshot size issues
Recommend mod screenshot size in lua_api.txt
Adjust displayed screenshot size of texture packs
Document texture pack files in lua_api.txt
2022-05-21 16:13:45 +02:00
Tim 552e304da9
Builtin: Add core.MAP_BLOCKSIZE constant 2022-05-21 16:13:45 +02:00
Tim d03f226194
Builtin: Fix check for a player object in core.check_player_privs
core.check_player_privs accepts as first argument a name or player object, but just tested for a string.
This caused crashes inside builtin, when being passed any unexpected types.

This provides a better (duck-typing like) test, better error reporting.
2022-05-21 16:13:44 +02:00
Tim a1fcfc28ec
Builtin/profiler: Replace game profiler (#4245)
Use the setting "profiler.load" to enable profiling.
Other settings can be found in settingtypes.txt.

* /profiler print [filter] - report statistics to in-game console
* /profiler dump [filter] - report statistics to STDOUT and debug.txt
* /profiler save [format [filter]] - saves statistics to a file in your worldpath
	* txt (default) - same treetable format as used by the dump and print commands
	* csv - ready for spreadsheet import
	* json - useful for adhoc D3 visualizations
	* json_pretty - line wrapped and intended json for humans
	* lua - serialized lua table of the profile-data, for adhoc scripts
* /profiler reset - reset all gathered profile data.
	This can be helpful to discard of any startup measurements that often spike during loading or to get more useful min-values.

[filter] allows limiting the output of the data via substring/pattern matching against the modname.

Note: Serialized data structures might be subject to change with changed or added measurements.
	csv might be the most stable, due to flat structure.

Changes to the previous version include:

* Updated and extended API monitoring
* Correct calculation of average (mean) values (undistorted by idleness)
* Reduce instrumentation overhead.
* Fix crashes related to missing parameters for the future and occasional DIV/0's.
* Prevent issues caused by timetravel (overflow, timejump, NTP corrections)
* Prevent modname clashes with internal names.
* Measure each instrumentation individually and label based on registration order.
* Labeling of ABM's and LBM's for easier classification.
  Giving several ABM's or LBM's the same label will treat them as one.
  Missing labels will be autogenerated based on name or registration order.
* Configurable instrumentation and reporting. Skip e.g. builtin if you don't need it.
* Profile the profiler to measure instrumentation overhead.
2022-05-21 16:13:44 +02:00
rubenwardy c9476e8c2c
Remove cinematic toggle on F8
Also update cinematic mode's description to include mouse
2022-05-21 16:13:44 +02:00
est31 36ebc1f65a
Disable joysticks per default for now
It seems that various different devices register as
Joysticks on linux, and their presence has caused
lots of confusion amongst minetest users.

Therefore, disable the joystick feature.

Closes #4261
Closes #4221
2022-05-21 16:13:43 +02:00
HybridDog 6cbe7ef399
Only allow strings to be passed to minetest.global_exists (#4253)
Sometimes you accidentally forget the quotes when using global_exists, this makes minetest abort if you did so.

M  builtin/common/strict.lua
2022-05-21 16:13:43 +02:00
paramat a51850f7c2
Mgflat/fractal/v7/valleys: Denser 3D noise tunnels
Reduce spread from 96 to primes 61 and 67 (either side of 64)
Prime spreads help to keep 3D noise periodic features unaligned
'cave width' 0.2 to preserve tunnel width
Reduce octaves to 3 to improve network structure
2022-05-21 16:13:42 +02:00
Auke Kok db3e245ff0
Builtin/game/item: Add `place_param2` nodedef field
This allows a nodedef to specify a fixed value for param2 to be
used for all normal placements.

There are several uses for this:

- nodes that require param2 to be set to a non-zero value for
  internal mod use. E.g. leafdecay could use this to detect that
  leaves are played by players.
- force wallmounted or facedir value at placement at placement

This overrides any player look direction or other on-the-fly
param2 setting during placement.
2022-05-21 16:13:42 +02:00
est31 9fe6a3d2b3
Initial Gamepad support
Adds initial ingame gamepad support to minetest.

Full Formspec support is not implemented yet and
can be added by a later change.
2022-05-21 16:13:41 +02:00
Nathanaël Courant 4c2af14cef
Add colored text (not only colored chat).
Add documentation, move files to a proper place and avoid memory leaks.
Make it work with most kind of texts, and allow backgrounds too.
2022-05-21 16:13:41 +02:00
TriBlade9 4108d1bd6b
Colored chat working as expected for both freetype and non-freetype builds. @nerzhul improvements * Add unit tests * Fix coding style * move guiChatConsole.hpp to client/ 2022-05-21 16:13:41 +02:00
Sokomine 71b4fd31ac
protection_bypass priv can now be revoked in singleplayer (#4169) 2022-05-21 16:13:40 +02:00
paramat dea9b57e4b
Item entities: Don't show description as infotext
Partially reverts #3547
Infotext remains optional for objects, empty by default
2022-05-21 16:13:40 +02:00
Wayward One 306a8d1311
Add on_punchnode callback 2022-05-21 16:13:39 +02:00
paramat 2bc30ec0c5
Documentation: Remove incorrect and excessive mapgen flags text 2022-05-21 16:13:39 +02:00
est31 f0f9cda43b
Android: Re-add button to remove singleplayer world
Fixes #4120.
2022-05-21 16:13:38 +02:00
est31 2c07dc8219
Mainmenu: don't show change keys dialog on android
The change keys dialog can't be left. It doesn't make
much sense to show it on Android in the first place,
therefore disable it, just like commit

aed70cb0b652d6cb2272e7b94cd56671b3df6239 'Disable sound and key binding settings in "pause" menu on android'

has disabled it for the esc menu.

Fixes #4115.
2022-05-21 16:13:38 +02:00
Rui b6af7f73ec
Fix #4111 ("Provided world path doesn't exist" if choosing singleplayer on first run")
Bug and whitespace error fixed (Zeno)
2022-05-21 16:13:38 +02:00
est31 026f0a3e8c
Update credits tab 2022-05-21 16:13:37 +02:00
Rui 4cc9542edb
Mainmenu: Remove space under mod list 2022-05-21 16:13:37 +02:00
paramat 3851dc4649
Mapgen: Make 3D noise tunnels' width settable
Correct parameter names mg_valleys to mgvalleys
Remove biome NoiseParams from MapgenValleysParams
Improve format of parameter code
2022-05-21 16:13:36 +02:00
tenplus1 78874e8216
Avoid teleporting player if /teleport coords are out-of-range 2022-05-21 16:13:36 +02:00
Jean-Patrick Guerrero 7c7b72f83d
Android menu: Unified serverlist 2022-05-21 16:13:36 +02:00
rubenwardy 50d7bee97d
Builtin: Add basic_privs setting 2022-05-21 16:13:35 +02:00
SmallJoker 0939c871cf
Mainmenu: Standardize the menu button order and sizes 2022-05-21 16:13:35 +02:00
Nathanaël Courant d39cdbcf4f
Fix mainmenu code downloading the public serverlist twice.
Also, fix a nil error that can happen sometimes in
menu_handle_key_up_down
2022-05-21 16:13:34 +02:00
paramat bf161fe707
Textures: Replace menu background fallback dirt_bg.png with empty sky texture 2022-05-21 16:13:34 +02:00
Auke Kok 807cec58aa
Fix timer initialization.
This fixes the problem that the first timer tick is an
overrun and causes all timers to expire immediately.

replaces #4003
2022-05-21 16:13:33 +02:00
Jean-Patrick Guerrero ee08952a2e
Mainmenu: Code cleaning 2022-05-21 16:13:33 +02:00
Jean-Patrick Guerrero 24d09852ee
Mainmenu: Unify favorite servers with main serverlist 2022-05-21 16:13:33 +02:00
Auke Kok ea243adba1
falling: walk 4 additional diagonally down directions.
This seems very little cost and matches the old behavior more
closely. This will cause some more falling nodes to get added
to falling clusters. With the efficiency of the algorithm, this
really doesn't do much damage.
2022-05-21 16:13:32 +02:00
est31 f762820a7e
Mainmenu: Still support favorites if send_pre_v25_init is disabled
@SmallJoker has noted a bug that servers from the (local) main menu
favorites list can't be opened.

This commit fixes the bug by disabling any main menu based protocol
checks for servers from the favorite list.

Also, it fixes a second bug that happens when a server from the
public serverlist doesn't send its supported protocol versions,
most likely because its running a minetest older than commit [1].
Then we have shown an error msg that the server has enforced
one specific protocol version. This was most likely not the case.

Of course, we can't do anything better than do an assumption on
the protocol versions if they are not known. That assumption
should however be closest to the most often occuring case as
possible.

Also, some little cleanups.

[1]: 5a0ed780f56a5225b3d7c5f64099586e390e5f39 "Server: announce MIN/MAX protocol version supported to serverlist. Client: check serverlist"
2022-05-21 16:13:32 +02:00
SmallJoker f4ed603ee0
mainmenu: Tidy up logic in is_server_protocol_compat() (#3997)
Apply de morgan to simplify the logic.
2022-05-21 16:13:31 +02:00
TriBlade9 c130956370
Add option to disable entity selectionboxes. (#3992)
Setting only loaded once, default value is to enable them.
2022-05-21 16:13:31 +02:00
Auke Kok a3d0df7466
Convert nodeupdate to non-recursive
This took me a while to figure out. We no longer visit all 9 block
around and with the touched node, but instead visit adjacent plus
self. We then walk -non- recursively through all neigbors and if
they cause a nodeupdate, we just keep walking until it ends. On
the way back we prune the tail.

I've tested this with 8000+ sand nodes. Video result is here:

  https://youtu.be/liKKgLefhFQ

Took ~ 10 seconds to process and return to normal.
2022-05-21 16:13:31 +02:00
Rui914 8850a2a73f
Mainmenu: Refactor tab UI code
- Use local variables for tabs in place of globals
 - Merge together if statements where possible
 - Replace manual table searching code with indexof where possible
2022-05-21 16:13:30 +02:00
Rui914 d86bc91f4b
Mainmenu: Move description.txt textbox down
Additionally, fix misc. code style issues
2022-05-21 16:13:30 +02:00
paramat 60e3898c22
Mgv7: Decrease cliff steepness 2022-05-21 16:13:29 +02:00
tenplus1 b6b49f9cc9
stop falling.lua error
2016-03-27 15:47:01: ERROR[Main]: ServerError: Lua: Runtime error from mod '*builtin*' in callback luaentity_Step(): Node name is not set or is not a string!
2016-03-27 15:47:01: ERROR[Main]: stack traceback:
2016-03-27 15:47:01: ERROR[Main]: 	[C]: in function 'add_node'
2016-03-27 15:47:01: ERROR[Main]: 	/usr/share/minetest/builtin/game/falling.lua:96: in function </usr/share/minetest/builtin/game/falling.lua:43>
2022-05-21 16:13:29 +02:00
Rui 215e71efad
Falling: Set acceleration on step again
Commit

65c09a96f41705bb8e75fc5ff4276342be91ed11 "Set acceleration only once in falling node"

has made the acceleration being set only once.
But this has introduced a regression.

Fix #3884.
2022-05-21 16:13:28 +02:00
Rui 3f4c1bb7b8
Credits: Make that easy to add/remove 2022-05-21 16:13:28 +02:00
Auke Kok 400c4dda7a
Make `options` local here.
Undoubtably this may cause problems later if unchecked.

```
2016-03-22 21:57:52: WARNING[Server]: Assignment to undeclared global "options" inside a function at .../sofar/git/minetest/bin/../builtin/game/chatcommands.lua:862.
```
2022-05-21 16:13:28 +02:00
paramat b12c539595
Builtin/game/falling: Re-add comma removed by recent commit 2022-05-21 16:13:27 +02:00
Rui914 8760d15445
Set acceleration only once in falling node 2022-05-21 16:13:27 +02:00
Auke Kok 2f45f007f4
Allow NodeTimer, ABM and block mgmt interval changes.
ABM's are hardcoded to run every 1.0s, NodeTimers are hard coded to
run at every 1.0s. Block mgmt is running every 2.0sec.

However, these timers can be better tuned for both higher and lower
values by server owners. Some server owners want to, and have the
resources to send more packets per second to clients, and so they
may wish to send smaller updates sooner. Right now all ABM's are
coalesced into 1.0 second intervals, resulting in large send queues
to all clients. By reducing the amount of possible timers, one can
get a far better response rate and lower the perception of lag.

On the other side of the camp, some servers may want to increase
these values, which again isn't easily doable.

The global settings abm_interval and nodetimer_interval are set to
current values by default. I've tested with 0.2/0.5 type values
and noticed a greatly improved response and better scattering of
nodetimers, as well as enjoying not faceplanting into doors with
pressure plates anymore.
2022-05-21 16:13:26 +02:00
est31 eaab9d5586
Add option to not send pre v25 init packet
The legacy init packet (pre v25) sends information about the client's
password that a server could use to log in to other servers if the
username and password are the same. All the other benefits of SRP of
protocol v25 are missed if the legacy init packet is still sent during
connection creation.

This patch adds an option to not send the v25 init packet. Not sending
the v25 packet means breaking compat with pre v25 servers, but as the
option is not enabled by default, no servers are affected unless the
user explicitly flips the switch. More than 90% of the servers on the
serverlist support post v25 protocols.

The patch also fixes a bug with greying out of non compliant servers
being done wrongly, the min and max params were mixed.
2022-05-21 16:13:26 +02:00
Diego Martínez 79667b4dc6
Add options for screenshot format and quality 2022-05-21 16:13:26 +02:00
paramat 7f85241781
Documentation: Clarify global and mapgen-specific mapgen flags 2022-05-21 16:13:25 +02:00
Auke Kok 9e994e0e39
Introduce "protection_bypass" privilege.
This privilege allows map protection bypassing for server operators
and world moderators.

Initially I had thought that bypassing protection mods would have been
something that could entirely be done inside mods and minetest_game,
but the concept of protection is defined in core, in the code of
core.is_protected().

I don't feel that it would be logical to introduce a protection
concept in core, but not some way around that for server operators
to maintain map parts that need fixing, de-griefing or cleanup.

Others had noticed the same problems, and proposed a patch to
minetest_game. That patch is fine by itself, but it fails to add
protection bypass functionality for digging normal nodes and placing
nodes.

So, instead, we indroduce the new priv "protection_bypass" in core,
and modify 'on_place_node' and 'node_dig' to allow bypassing node
protections if the player holds this priv.

This priv was tested with protector redo by tenplus1.

A followup patch to Minetest Game will include allowing special checks
for doors, trapdoors, chests in Minetest Game.

Protection mods will likely want to mimic the changes in their relevant
code sections.
2022-05-21 16:13:25 +02:00
Auke Kok da5a169a45
Add consistent monotonic day counter - get_day_count()
I've written several experimental bits of code that revolve around the
need for a consistent calendar, but implementing one is extremely hard
in mods due to time changes and mods overriding core.get_timeofday(),
which will conflict.

The second part of the problem is that doing this from a mod requires
constant maintenance of a settings file.

An implementation in core is trivial, however, and solves all of
these problems at virtually no cost: No extra branches in server
steps, and a single branch when minetest.set_time_of_day(), which is
entirely reasonable.

We store the day_count value in env_meta.txt.

The use case is obvious: This change allows mods to create an actual
virtual calendar, or properly account for seasonal changes, etc..

We add a "/days" chatcommand that displays the current day count. No
permissions are needed. It can only retrieve the day count, not
modify it.
2022-05-21 16:13:24 +02:00
ShadowNinja 96b86f8440
Add AreaStore custom ID API 2022-05-21 16:13:24 +02:00
est31 d1e698f4fb
Add minetest.register_lbm() to run code on block load only 2022-05-21 16:13:23 +02:00
Jean-Patrick Guerrero 7d23793e05
Settings Tab: Regroup dropdown datas in tables 2022-05-21 16:13:23 +02:00
Rui914 32752d2bc5
Faster insertion into table 2022-05-21 16:13:23 +02:00
srfqi 8660983a8e
Add forgotten valleys mapgen in mapgen name
Missing `valleys` in `settingtypes.txt` and `minetest.conf.example`.
2022-05-21 16:13:22 +02:00
Jean-Patrick Guerrero 9f6730de09
Update settings tab + some misc. clean-up 2022-05-21 16:13:22 +02:00
est31 250f67bf2f
Don't generate trailing spaces in minetest.conf.example
If the default value of a setting was empty,
it previously generated a trailing space.
2022-05-21 16:13:21 +02:00
RealBadAngel 3cb36ba9ac
Mapblock mesh: Allow to use VBO 2022-05-21 16:13:21 +02:00
RealBadAngel 362d382289
Remove new_style_water 2022-05-21 16:13:20 +02:00
Jeija d0a7fe455e
Add Lua interface to HTTPFetchRequest
This allows mods to perform both asynchronous and synchronous HTTP
requests. Mods are only granted access to HTTP APIs if either mod
security is disabled or if they are whitelisted in any of the
the secure.http_mods and secure.trusted_mods settings.

Adds httpfetch_caller_alloc_secure to generate random, non-predictable
caller IDs so that lua mods cannot spy on each others HTTP queries.
2022-05-21 16:13:20 +02:00
RealBadAngel 6817425d4d
Camera: remove auto tune FPS, single view range setting 2022-05-21 16:13:20 +02:00
RealBadAngel e0bf406bea
Remove preload_item_visuals code
Closes #3748
2022-05-21 16:13:19 +02:00
BlockMen ae7b3ec177
Restore simple settings tab and add advanced settings as dialog 2022-05-21 16:13:19 +02:00
paramat 41bef56c82
Documentation: Remove now unused 'vertical spawn range' 2022-05-21 16:13:18 +02:00
Diego Martínez 60a5b2ac4d
Initialize facedir and wallmounted tables only once.
This makes the functions a bit faster since they don't
have to recreate the tables every invocation, and makes
the code more readable.

Also, document `wallmounted_to_dir`.

The function was implemented but not documented in `lua_api.txt`.
2022-05-21 16:13:18 +02:00
Kahrl c4db9d23ff
Log /clearobjects mode 2022-05-21 16:13:17 +02:00
Kahrl ed493305e4
Add '/clearobjects quick' 2022-05-21 16:13:17 +02:00
RealBadAngel d8c9c7deac
Filmic HDR tone mapping 2022-05-21 16:13:17 +02:00
RealBadAngel e942240abf
Cleanup selection mesh code, add shaders for halo and selection boxes 2022-05-21 16:13:16 +02:00
Diego Martínez 6dc6ea419e
builtin: Fix `print` crashing on nil "holes".
The engine implementation of `print` packs the varargs into a
table and passes the table directly to `table.concat`. If you
pass any value not supported by `table.concat` (particularly
`nil`), the server crashes. This is unexpected behavior, as
`print` is supposed to be able to work with anything.

This patch changes the implementation so it first converts
all arguments using `tostring`, which fixes the issue and
makes the custom `print` function compatible with the stock
Lua behavior.
2022-05-21 16:13:16 +02:00
RealBadAngel 204f43d9c9
Use meshes to display inventory items 2022-05-21 16:13:15 +02:00
Splizard 35bae38ca3
Add admin command which says who the administator is for the server. 2022-05-21 16:13:15 +02:00
Duane Robertson 3a9235fc1c
Mgvalleys: use standard caves
Replace simple caves with V5 caves, adding unpredictable water and lava
settings and massive caves based on subterrain. Remove fast terrain mode
and accompanying settings. Remove superfluous temperature/humidity
settings. Remove lava/water height setting. Fix errors in humidity
handling and remove humidity_break_point setting. Move cave noises to
generateCaves. Fix minor formatting/naming issues and use
MYMAX/MYMIN/myround.
2022-05-21 16:13:14 +02:00
Auke Kok 3cef28e731
New timer design.
I could honestly not make much sense of the timer implementation
that was here. Instead I've implemented the type of timer algorithm
that I've used before, and tested it instead.

The concept is extremely simple: all timers are put in an ordered
list. We check every server tick if any of the timers have
elapsed, and execute the function associated with this timer.

We know that many timers by themselves cause new timers to be
added to this list, so we iterate *backwards* over the timer
list. This means that new timers being added while timers are
being executed, can never be executed in the same function pass,
as they are always appended to the table *after* the end of
the table, which we will never reach in the current pass over
all the table elements.

We switch time keeping to minetest.get_us_time(). dtime is
likely unreliable and we have our own high-res timer that we
can fix if it is indeed broken. This removes the need to do
any sort of time keeping.
2022-05-21 16:13:14 +02:00
Diego Martínez d10a5cfedb
Fix world config menu ignoring `name` in `mod.conf`. 2022-05-21 16:13:13 +02:00
RealBadAngel 580ea1201e
Show infotext with description for item entities 2022-05-21 16:13:13 +02:00
Rogier e577c35a3c
Fix error message in settings tab overlapping 'save' button
The save button is now fully functional again when an error message
is shown.

After an invalid value is entered in the settings tab dialog, the GUI
label for the error message that is shown was partly overlapping the
'save' button, so that the top half of the button could not be clicked
on.
2022-05-21 16:13:12 +02:00
Duane Robertson e64db54315
Add Valleys mapgen. 2022-05-21 16:13:12 +02:00
paramat bffee113cf
Mgflat: Set blank default spflags. Unhide 2022-05-21 16:13:11 +02:00
Rogier 6a3484c135
Fix the checking of flags values in the settings tab
Changes:
- Accept setting an empty flags-type value in the settings tab
  if the variable specification permits it
- Don't accept substrings of flag values
  E.g. with values: 'one,two,three', 'hree', 'w', etc. used to
  be accepted. Not any more
- Don't accept flags with random pattern-matching special characters
  E.g. with values: 'one,two,three', 'on.', '(o)[n]e*' etc. used
  to be accepted. Not any more.
2022-05-21 16:13:11 +02:00
Rogier 4e30d1bb0a
Improve parsing of setting types from settingtypes.txt for settings tab
- Accept numbers prefixed with '+'
- Accept multiple spaces instead of just a single one where spaces are expected
- Allow flags to have an empty default value
2022-05-21 16:13:10 +02:00
Dalai Felinto 2461f6d985
New 3D Mode: Pageflip
The pageflip mode requires a stereo quadbuffer, and a modern graphic
card. Patch tested with NVidia 3D Vision.

The mini-map is not drawn, but that's what is done for topbottom and
sidebyside modes as well.

Also most of the time the user would prefer the HUD to be off. That's
for the user to decide though, and toggle it manually.

Finally, the interocular distance (aka eye separation) is twice as much
as the "3d_paralax_strength" settings. I find this a strange design
decision. I didn't want to chance this though, since it's how the other
3d modes interpret this settings.
2022-05-21 16:13:10 +02:00
paramat b36217f608
Liquids: Flow into and destroy 'floodable' nodes
Add new node property 'floodable', default false
Define "air" as floodable = true in C++ and lua
2022-05-21 16:13:10 +02:00
Jean-Patrick Guerrero eadd017507
Alphabetical sorting of texture packs in menu (fixes #3487) 2022-05-21 16:13:09 +02:00
HybridDog 93de351e5f
Fix missing localization for obj 2022-05-21 16:13:09 +02:00
paramat 681434bc5d
Mgfractal: Add 3D and 4D fractals
3D Mandelbrot/Mandelbar
3D Christmas Tree
3D Mandelbulb
3D Cosine Mandelbulb
4D Mandelbulb
Plus corresponding julia set for each
Add credits for formulas
Rename parameter 'formula' to 'fractal'
Speed optimisations
2022-05-21 16:13:08 +02:00
est31 111be664a8
Fix some setting documentation
* Horizontal and vertical are used wrongly. Use height and width because
	horizontal/vertical describes different things. Thanks @kilbith for pointing out.
* Update minetest.conf.example and settings_translation_file.cpp
* Correct maximum/minimum copy paste mistake.
2022-05-21 16:13:08 +02:00
Alex Ford 8341ca836e
Add on_secondary_use when right clicking an item in the air 2022-05-21 16:13:07 +02:00
Robert Zenz e7bc7c6857
Simplify regex used in check_modname_prefix and other improvements.
Simplified the regex used, added comments and changed the error message
to contain the correct mod name.
2022-05-21 16:13:07 +02:00
paramat 90edce95c3
Mgfractal: Move julia set selection into formula parameter
Improve default parameters
Update and improve documentation
Unhide mapgen, but is still unstable
2022-05-21 16:13:06 +02:00
paramat 93356f96df
Mapgen: Add global 'decorations' flag
Flag is set by default in MapgenParams
The global 'trees' flag remains but is now
undocumented and unset by default in MapgenParams
Add mgv6_spflag 'trees' set by default in
defaultsettings.cpp to affect new worlds only
This is automatically backwards
compatible for existing worlds
2022-05-21 16:13:06 +02:00
Rui aedf15826c
Log static_spawn error only once 2022-05-21 16:13:05 +02:00
paramat 78d2dee49e
Mgfractal: Revert unnecessary duplication of parameters 2022-05-21 16:13:05 +02:00
paramat dfce6ebd28
Mgfractal: Create a choice of 4 mandelbrot formulas 2022-05-21 16:13:04 +02:00
paramat 86b75dbdfa
Mgv6: Move global mapgen flag 'flat' into mgv6 spflags
Add mgv6 spflag 'flat'
Global flag is kept for backwards compatibility but is now undocumented
2022-05-21 16:13:04 +02:00
Robert Zenz 4662b21222
Add the player name to dropped items
The player name is now added in the field "dropped_by" on the created
entity.
2022-05-21 16:13:04 +02:00
paramat d35da6cac9
Mapgen: Add flat mapgen in hidden form 2022-05-21 16:13:03 +02:00
est31 bf7ed56ddd
Settings tab: add v3f type
Add the v3f type, currently is just a nice placeholder for string.
Currently undocumented, on wish of @PilzAdam, to support future changes.
2022-05-21 16:13:03 +02:00
kwolekr f9e25279e1
Improve LuaVoxelManip documentation 2022-05-21 16:13:02 +02:00
paramat 5bc192a744
Conf.example, settingtypes: Improve mgfractal documentation 2022-05-21 16:13:02 +02:00
est31 d70090cc51
Add server side ncurses terminal
This adds a chat console the server owner can use for administration
or to talk with players.
It runs in its own thread, which makes the user interface immune to
the server's lag, behaving just like a client, except timeout.
As it uses the same console code as the f10 console, things like nick
completion or a scroll buffer basically come for free.
The terminal itself is written in a general way so that adding a
client version later on is just about implementing an interface.

Fatal errors are printed after the console exists and the ncurses
terminal buffer gets cleaned up with endwin(), so that the error still
remains visible.

The server owner can chose their username their entered text will
have in chat and where players can send PMs to.
Once the username is secured with a password to prevent anybody to
take over the server, the owner can execute admin tasks over the
console.

This change includes a contribution by @kahrl who has improved ncurses
library detection.
2022-05-21 16:13:01 +02:00
paramat 3d92807282
Settingtypes: Correct documentation for mgfractal
Use type 'string' for v3fs and add comments
2022-05-21 16:13:01 +02:00
paramat 272541a8bb
Mgfractal: Add documentation to conf.example and settingtypes 2022-05-21 16:13:00 +02:00
kwolekr 0b80c8c114
Add callback parameter for core.emerge_area() 2022-05-21 16:13:00 +02:00
Rui914 9bca5b37c4
minetest. to core. 2022-05-21 16:13:00 +02:00
paramat e532e69c98
findSpawnPos: Add setting for max height above water level
Increase default from 6 to 16 to help with mgv7 and mgfractal
Large-scale or alternative mapgens can result in a lowland spawn point not
being found, causing a spawn at (0, 0, 0) possibly buried underground
The max height is now settable to allow correct player spawn
in any mapgen or when using custom noise parameters
2022-05-21 16:12:59 +02:00
PilzAdam 7e69f86aa5
Fix parameter passing to gettext call 2022-05-21 16:12:59 +02:00
BlockMen 1f21ad4da2
Check if hitter has inventory when punching item
Fixes #3280
2022-05-21 16:12:58 +02:00
Rui c0297ebcbe
Credits: Remove my name 2022-05-21 16:12:58 +02:00
PilzAdam 2f0e5a075d
Escape " in generated settings_translation_file.cpp 2022-05-21 16:12:58 +02:00
PilzAdam 4067cf06c3
Fix setting comments 2022-05-21 16:12:57 +02:00
PilzAdam b7a3bf1e30
Don't allow games or mods to add secure. settings 2022-05-21 16:12:57 +02:00
est31 bd43e63b83
Better gettext support for protocol version mismatch messages
Previously, xgettext failed to resolve the dynamic call.
Thanks to @JakubVanek for pointing this out.
2022-05-21 16:12:56 +02:00
PilzAdam c391792fca
Improve Lua settings menu
* Add key settings to setting table and ignore them later
  This way they are added to the auto-generated minetest.conf.example
* Add flags type
* Add input validation for int, float and flags
* Break in-game graphic settings into multiple sections
* Parse settingtpes.txt in mods and games
* Improve description for a lot of settings
* Fix typos and wording in settingtypes.txt
* Convert language setting to an enum
2022-05-21 16:12:56 +02:00
Robert Zenz 9ad5562efb
Add more ways to pass data to check_player_privs
The callback can now be invoked with either the player object or name as
the first parameter, and with either a table or a list of strings, like
this:

    minetest.check_player_privs(player_name, { shout = true, fly = true })
    minetest.check_player_privs(player_name, "shout", "fly")
    minetest.check_player_privs(player, { shout = true, fly = true })
    minetest.check_player_privs(player, "shout", "fly")
2022-05-21 16:12:55 +02:00
est31 b29666b49a
Display sane output for empty descriptions
According to its man page, the function gettext(3)
"may return a nonempty string" when msgid is "".

This commit fixes a bug where the comment ""
for some settings caused gettext to return a
"nonempty string", in this case header info of the
po file.
2022-05-21 16:12:55 +02:00
PilzAdam 86c317e796
New settings tab contain all possible settings
Settings are automatically parsed from builtin/settingtypes.txt
The edit dialog automatically adjust based on the type of setting
2022-05-21 16:12:55 +02:00
ShadowNinja 8fc9b3b9cb
Refactor logging
- Add warning log level
- Change debug_log_level setting to enumeration string
- Map Irrlicht log events to MT log events
- Encapsulate log_* functions and global variables into a class, Logger
- Unify dstream with standard logging mechanism
- Unify core.debug() with standard core.log() script API
2022-05-21 16:12:54 +02:00
Rui f3c5e76d9a
Localize digprop_err function 2022-05-21 16:12:54 +02:00
Jean-Patrick Guerrero e55a5a1c24
Add viewing range GUI setting 2022-05-21 16:12:53 +02:00
Fernando Carmona Varo 095cfc2c70
Added minetest.wallmounted_to_dir 2022-05-21 16:12:53 +02:00
est31 e1b5a8789e
Some map border related fixes
1. Check for entity addition success in spawn_item implementation
2. Check for success in item_drop callback, so that the player
doesn't lose the item if they are outside bounds and try to drop it.
3. When existing player joins game, check that their position is inside
map bounds. If not, set their position to the return value of findSpawnPos().
4. Make findSpawnPos() respect the border

2 fixes a lua crash if a player drops an item outside map bounds.
3 fixes an assertion crash if a player leaves when being outside map bounds,
and then rejoins.
2022-05-21 16:12:52 +02:00
kwolekr 37a94ffa9d
Add /emergeblocks command and core.emerge_area() Lua API 2022-05-21 16:12:52 +02:00
est31 7feed28ef0
Replace "self program" with "this program" in fstk boilerplates
... and remove trailing whitespace.
2022-05-21 16:12:51 +02:00
Rui914 39001fe1f5
Minor tweaks handle_settings_buttons 2022-05-21 16:12:51 +02:00
Rui914 ffffe22f15
Change my email 2022-05-21 16:12:50 +02:00
Rui 55ccf6bce8
Small fixes of minetest.has_feature 2022-05-21 16:12:50 +02:00
Rui 4c9302c8a2
Minor tweaks __builtin:falling_node 2022-05-21 16:12:49 +02:00
est31 4a83767d37
Credits tab: fix accidental merger of two contributors
Fixes #3125
2022-05-21 16:12:49 +02:00
Rui914 5ef81a0e15
Use gettext to "None" of texture pack list 2022-05-21 16:12:49 +02:00
kwolekr 8cda9256e1
Remove some emails from credits tab 2022-05-21 16:12:48 +02:00
kwolekr f6393ae381
Update credits tab 2022-05-21 16:12:48 +02:00