Commit Graph

692 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
Wuzzy 90d5a1df8a
Add configurable key bindings for hotbar scrolling, and for changing volume. 2022-05-21 16:14:44 +02:00
red-001 284cbcd844
add `on_item_use` (#5544) 2022-05-21 16:14:44 +02:00
Loïc Blot e57e8ceba1
Save minetest screen width/height options when modified (#5683)
* Save minetest screen width/height options when modified

* Add autosave_screensize setting (default true)

* Fix @SmallJoker comments
2022-05-21 16:14:43 +02:00
Vincent Glize 9a88f2bc0c
Add event on_place_node API lua (#5548)
* [CSM] Add event on_place_node API lua
2022-05-21 16:14:43 +02:00
Louis Pearson 6787e73560
Footsteps without view bobbing (#5645)
* Remove redundant view_bobbing setting

Also fixes bug where disabling view_bobbing disables footstep sounds.

* Removes redundant view_bobbing setting

Setting view_bobbing amount to 0 is now the only way to
turn view_bobbing on and off. Also fixed a bug where footstep
sounds would not play when view_bobbing was disabled.
2022-05-21 16:14:42 +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
paramat 059c5e1d41
Conf.example: Move some lines to minetest.conf.example.extra
Some information in conf.example cannot be generated from
settingtypes.txt, moving it to a new file makes generating
conf.example while preserving that information easier.

Regenerate conf.example from settingtypes.txt.
2022-05-21 16:14:41 +02:00
MarkuBu a99d95ee92
Pointed thing to face pos: Fix crash if opening door with slab or stair
Avoids crash caused when 'pointed thing -under' and '-above' are not
face-neighbours, for example in the case of pointing to the top half
of a door.
2022-05-21 16:14:41 +02:00
Perttu Ahola a72a00ff52
MeshUpdateQueue: Add a MapBlock cache that minimizes the amount of MapBlock copying done in the main thread
Cache size is configurable by the meshgen_block_cache_size (default 20 MB).

New profiler stats:
- MeshUpdateQueue MapBlock cache hit %
- MeshUpdateQueue MapBlock cache size kB

Removes one type of stutter that was seen on the client when received MapBlocks
were being handled. (the "MeshMakeData::fill" stutter)

Kind of related to at least #5239

Originally preceded by these commits, now includes them:
- Move the mesh generator thread into src/mesh_generator_thread.{cpp,h}
- mesh_generator_thread.cpp: Update code style
- MeshUpdateThread: Modify interface to house a different implementation: Actual functionality will be changed by next commits.
- MeshMakeData: Add fillBlockData() interface (so that caller can fill in stuff from eg. a MapBlock cache)
2022-05-21 16:14:40 +02:00
Loïc Blot bed4f29a19
Implement delayed server shutdown with cancelation (#4664) 2022-05-21 16:14:40 +02:00
red-001 04a8ca0f9c
Allow escaping chatcommands and add missing calls to gettext. (#5565) 2022-05-21 16:14:40 +02:00
red-001 089bca3f7f
Use more gettext (#5553) 2022-05-21 16:14:39 +02:00
red-001 e6d04ba28f
Move `.list_players` and `.disconnect` to builtin. (#5550) 2022-05-21 16:14:39 +02:00
numzero 1ce5854e18
Hard-coded undersampling.
Adds uniform undersampling for the 3D rendered scene. GUI elements
are not undersampled, resulting in better playability for users
with low-performance platforms with readable fonts and formspecs.

The undersampling setting can be set to 0 (disabled), 2, 3, 4 pixels
which translates into a resolution reduction of x4, x9 or x16, and
is significant.
2022-05-21 16:14:38 +02:00
Dániel Juhász b97e06de4b
Hardware coloring for itemstacks
Adds the possibility to colorize item stacks based on their metadata.

In the item/node definition you can specify palette (an image file)
and color (fallback color if the item has no palette or metadata).
Then you can add palette_index to the metadata.

Dropped itemstacks with different colors do not merge.
2022-05-21 16:14:38 +02:00
red-001 f12f99333b
Move chat command handling code from C++ to Lua (#5528) 2022-05-21 16:14:37 +02:00
Vincent Glize 58e922c884
Add event on_connect player API lua (#5540)
* Add event on_connect player API lua
2022-05-21 16:14:37 +02:00
SmallJoker 200a18f1ef
Settings: Update documentation (#5534)
Now documented (sorted a-z):
enable_console
enable_particles
creative_mode
hud_scaling
inventory_image_hack
keymap_console
keymap_zoom
shader_path
view_bobbing
2022-05-21 16:14:37 +02:00
rubenwardy cc1235c8ec
Add Joystick type detection and Xbox controller support
* Add joystick type detection (with joystick_type setting to override it)
* Fix multiple joysticks from interfering with each other by only reading from one (add joystick_id setting)
* Add support for Xbox controllers
2022-05-21 16:14:36 +02:00
Loïc Blot 342452f247
Expose vector helpers to CSM 2022-05-21 16:14:36 +02:00
paramat b199634744
Mapgen documentation: Add descriptions to noise parameters
Shorten 'readable names'.
Add a new advanced settings menu section for Biome API noises.
Various minor edits and improvements.
2022-05-21 16:14:35 +02:00
paramat e2a176b887
Cavegen/Mgv5/Mgv7: Add optional giant caverns
Add to MapgenBasic for use by multiple mapgens.
Add to mgv5 and mgv7, enabled by default.

Similar to mgvalleys caverns but half the scale.
Parameters for upper y limit, distance caverns taper to full size, and
noise threshold (full cavern size).
As with mgvalleys caverns are generated first and classic caves are
disabled in any mapchunk containing a cavern, to avoid excessive
spreading volumes of liquids.
This also avoids floating blobs of liquid where a large classic cave
has overgenerated out into a neighbouring previously-generated mapchunk.
2022-05-21 16:14:35 +02:00
Auke Kok 9d9c4cc91f
minetest.after(): simplify further, pause in singleplayer (#5500)
Using the `dtime` value entirely, this will stop the clock
if the game is paused in singleplayer. Since most of the
clocks were fixed a long time ago, this should again be
safe to use.
2022-05-21 16:14:34 +02:00
MarkuBu 61efcfec7d
First commit for fine pointed (#5485) 2022-05-21 16:14:34 +02:00
Diego Martínez 67ca4f86c5
Add functions to strip color information. (#5472) 2022-05-21 16:14:34 +02:00
Loïc Blot 1bbcceb65c
Fix a type bug in colorize function
This bug was introduced by dd2f1d7551bfd70357ad4f3fb180704194272147 and reported by @kilbith
2022-05-21 16:14:33 +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
numzero 35edba888b
Add mesh generation delay 2022-05-21 16:14:32 +02:00
Loïc Blot f436404054
Typo fix 2022-05-21 16:14:32 +02:00
red-001 acb03dc956
Add multiline support to colorize. (#5444) 2022-05-21 16:14:31 +02:00
red-001 52662dfcce
Block access to the `io` library 2022-05-21 16:14:31 +02:00
red-001 d210b6d2cf
Give CSM access to use `core.colorize()` (#5113) 2022-05-21 16:14:30 +02:00
Auke Kok 0d606691dd
Fix two nul deref if digging unknown nodes. (#5398)
Introduced by d785456b3fa35faf47cb972fde9e8668382c5e22 (#5162)
2022-05-21 16:14:30 +02:00
Loïc Blot 7af68932f2
Add enable_client_modding param (default: false) 2022-05-21 16:14:29 +02:00
red-001 c38197ed66
Add `on_punchnode` callback 2022-05-21 16:14:29 +02:00
red-001 e02c119936
Add `on_dignode` callback (#5140) 2022-05-21 16:14:29 +02:00
red-001 fb042da4a5
Improve security for client-sided mods (#5100) 2022-05-21 16:14:28 +02:00
Loïc Blot 3d38c234e5
implement client side mod loading (#5123)
* client side mods are located in clientmods/
* move builtin/preview.lua to clientmods/preview/init.lua as a preview mod
* refactor ModConfiguration class to work properly with client and server using child objects
* move some Server constructor mod load code to ModConfiguration to reduce code duplication between client and server
* remove mods.{cpp,h} unused functions
* use UNORDERED_SET instead of std::set in some modspec storages
2022-05-21 16:14:28 +02:00
red-001 0412d35355
Add local formspecs. (#5094) 2022-05-21 16:14:27 +02:00
Loïc Blot b38c00d90f
sound_play & sound_stop support + client_lua_api doc (#5096)
* squashed: CSM: Implement register_globalstep
  * Re-use fatal error mechanism from server to disconnect client on CSM error
  * Little client functions cleanups

* squashed: CSM: add core.after function
  * core.after is shared code between client & server
  * ModApiUtil get_us_time feature enabled for client
2022-05-21 16:14:27 +02:00
red-001 33b76809dd
Add client-sided chat commands (#5092) 2022-05-21 16:14:27 +02:00
Loïc Blot 6a9953bd0f
Add on_death, on_hp_modification & oh_damage_taken callbacks (#5093)
* Add on_death callback
* Add on_hp_modification & on_damage_taken callbacks
* move preview code to preview.lua
2022-05-21 16:14:26 +02:00
Loïc Blot 80f3d77767
Client side modding
* rename GameScripting to ServerScripting
* Make getBuiltinLuaPath static serverside
* Add on_shutdown callback
* Add on_receiving_chat_message & on_sending_chat_message callbacks
* ScriptApiBase: use IGameDef instead of Server
  This permits to share common attribute between client & server
* Enable mod security in client side modding without conditions
2022-05-21 16:14:26 +02:00
Vladislav Tsendrovskii 49602a4a4f
Save metainfo for falling nodes 2022-05-21 16:14:25 +02:00
lhofhansl a25f0a2210
Enable server side occlusion culling by default. 2022-05-21 16:14:25 +02:00
lhofhansl cc4fdda474
Allow server side occlusion culling. 2022-05-21 16:14:24 +02:00
paramat 6838bbf6d0
Climb speed: Increase default setting from 2 to 3 2022-05-21 16:14:24 +02:00