Commit Graph

50 Commits

Author SHA1 Message Date
ShadowNinja 5030ce5f4b
Use a settings object for the main settings
This unifies the settings APIs.

This also unifies the sync and async registration APIs, since the async
registration API did not support adding non-functions to the API table.
2022-05-21 16:14:45 +02:00
Loïc Blot 8ed0c6ebfa
Player data to Database (#5475)
* Player data to Database

Add player data into databases (SQLite3 & PG only)

PostgreSQL & SQLite: better POO Design for databases

Add --migrate-players argument to server + deprecation warning

* Remove players directory if empty
2022-05-21 16:14:42 +02:00
Dániel Juhász 26833c3659
Add /fixlight chat command 2022-05-21 16:14:42 +02:00
Loïc Blot bed4f29a19
Implement delayed server shutdown with cancelation (#4664) 2022-05-21 16:14:40 +02:00
red-001 f12f99333b
Move chat command handling code from C++ to Lua (#5528) 2022-05-21 16:14:37 +02:00
paramat da687589b3
Map generation limit: Make per-world
The setting limits map generation but affects nothing else.
Add 'mapgen_limit' to global mapgen parameters.
Move 'blockpos_over_mapgen_limit()' to the only place it is called
from: map.cpp.
Allow teleportation to any part of the world even if over the set
mapgen limit.
Simplify the reading of this limit in mgvalleys.
Remove the 'map_generation_limit' setting.
2022-05-21 16:14:33 +02:00
red-001 5943ad8975
Change command prefix to "." and add "help" command. 2022-05-21 16:14:32 +02:00
red-001 33b76809dd
Add client-sided chat commands (#5092) 2022-05-21 16:14:27 +02:00
red-001 ccce7bbd6d
Fix crash that can be caused by the shutdown command. (#5292) 2022-05-21 16:14:23 +02:00
red-001 152924b6f2
Add support for the new arguments of `request_shutdown` to the `/shutdown` chatcommand. (#5252) 2022-05-21 16:14:21 +02:00
Elijah Duffy d22ecfcbb3
Add chatcommand unregister and override API (#5076)
Introduces two functions to unregister and override chatcommands.
minetest.unregister_chatcommand("<name>") and
minetest.override_chatcommand("<name>", {<redifinition>})
2022-05-21 16:14:16 +02:00
Ezhh 3f0a7c339b
Improve priv descriptions (#5047) 2022-05-21 16:14:15 +02:00
rubenwardy ec70ea807a
Expose and document chatcommands as minetest.registered_chatcommands 2022-05-21 16:14:10 +02:00
Dorian Wouters 269e50a879
Fix /grant & /revoke not working with custom auth handler (#4974)
core.auth_table is not supposed to be accessed directly.
2022-05-21 16:14:10 +02:00
red-001 8b8f204d6d
Chat commands: Trim whitespaces from input of `/privs` command 2022-05-21 16:13:57 +02:00
red-001 8ba872f6e4
Builtin/../chatcommands: Add /grantme command 2022-05-21 16:13:55 +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
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
tenplus1 78874e8216
Avoid teleporting player if /teleport coords are out-of-range 2022-05-21 16:13:36 +02:00
rubenwardy 50d7bee97d
Builtin: Add basic_privs setting 2022-05-21 16:13:35 +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
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
Rui914 32752d2bc5
Faster insertion into table 2022-05-21 16:13:23 +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
Splizard 35bae38ca3
Add admin command which says who the administator is for the server. 2022-05-21 16:13:15 +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
kwolekr 37a94ffa9d
Add /emergeblocks command and core.emerge_area() Lua API 2022-05-21 16:12:52 +02:00
kwolekr 3120d9e8e2
SAPI: Track last executed mod and include in error messages 2022-05-21 16:12:46 +02:00
Marcin e235a42346
Add ability to specify coordinates for /spawnentity 2022-05-21 16:12:42 +02:00
Craig Davison 406b5bf810
Remove reference to deprecated privilege 2022-05-21 16:12:36 +02:00
est31 e648a40cec
Nicer time setting logging
Now logs

ACTION[ServerThread]: player sets time to 6:03

instead of

ACTION[ServerThread]: player sets time to 6:3
2022-05-21 16:12:35 +02:00
LeMagnesium de7cd53f41
Added hour:minute format to time command
* The time command now accepts parameters in the form <hour>:<minute>,
    and if invoked with no parameters returns the current time in said format.
2022-05-21 16:12:33 +02:00
est31 c2dcb45bf8
Add reason to kicked log message and use present tense 2022-05-21 16:12:29 +02:00
SmallJoker 6d524e3940
Radius parameter for /deleteblocks here 2022-05-21 16:12:27 +02:00
est31 944e67af37
Add /setpassword and /clearpassword logging 2022-05-21 16:12:27 +02:00
Loïc Blot b6c7b01e45
Fix unused (and so, broken) enable_rollback_recording. This option must be reloaded at server loop but loaded when server starts, for data consistency (not a hot load variable) ok @ShadowNinja 2022-05-21 16:12:24 +02:00
kwolekr a4bc5e525e
Prevent null concatenation when /deleteblocks is provided an incorrect format 2022-05-21 16:12:20 +02:00
kwolekr 5d9c758b13
Simplify deleteblocks chat command argument parsing
Add optional core.pos_to_string decimal place rounding
Move core.string_to_pos to builtin/common/misc_helpers.lua for consistency
2022-05-21 16:12:17 +02:00
kwolekr b18ccd0056
Add ability to delete MapBlocks from map
Also add a Lua API and chatcommand for this
2022-05-21 16:12:17 +02:00
Craig Davison 8ed639715a
Fix some undeclared global variables 2022-05-21 16:12:06 +02:00
Ryan Newell c8a29cc3b7
Add last_login field to auth.txt
Also shortens some related code and adds more parameters to string.split.
2022-05-21 16:12:00 +02:00
LeMagnesium 2a038ee038
Add a better error message when trying to teleport another player without bring privileges 2022-05-21 16:11:59 +02:00
sapier b92b8a51ce
Mod profiling support
Config settings:
profiling = true/false (gather statistics)
detailed_profiling = true/false (break mod times to callbacks)

Chat commands:
save_mod_profile saves current statistics in debug.txt and shows on console (on default loglevel)
2022-05-21 16:11:55 +02:00
ShadowNinja 2fafe8b464
Add success and output return values to chat commands 2022-05-21 16:11:45 +02:00
Diego Martínez 86071c16d0
Sort commands and privs alphabetically in '/help'.
Also make a stray variable local.
2022-05-21 16:11:44 +02:00
ShadowNinja 37c32c715f
Use "core" namespace internally 2022-05-21 16:11:41 +02:00
ShadowNinja 148b74312e
Organize builtin into subdirectories 2022-05-21 16:11:40 +02:00