Commit Graph

7429 Commits

Author SHA1 Message Date
cx384 879f7e9f03 Refactor tile.cpp/h parts except texturesource.cpp 2024-03-03 15:52:05 +01:00
cx384 aaf77025b6 Split up tile.cpp/h 2024-03-03 15:52:05 +01:00
Desour cdce33dd05 Fix some narrowing warnings 2024-03-02 01:56:25 +01:00
Desour b10797b3d5 Add missing include in container.h
BUILD_BENCHMAKRS builds were broken.
2024-03-02 01:47:03 +01:00
sfan5 e73e562a63 Allow curl to use all content encodings 2024-03-01 18:22:59 +01:00
grorp e40417f687
Allow giving "pointabilities" to Lua raycasts (#14390) 2024-03-01 17:12:13 +01:00
Gregor Parzefall aac616fcc5 Avoid visible camera jumps because of touchscreen_threshold 2024-03-01 17:11:46 +01:00
Gregor Parzefall fa0745f7da Adjust touchscreen_sensitivity to display density 2024-03-01 17:11:46 +01:00
Gregor Parzefall 00a3e6bbd7 Touchscreen: Allow camera movement while digging without touch_use_crosshair 2024-03-01 17:11:46 +01:00
sfan5 bb7f57b095 VBO-related optimizations and improvements (#14395) 2024-02-29 17:20:57 +01:00
sfan5 d85c842ce9 Refactor fog shader to reuse Irrlicht values 2024-02-29 17:20:50 +01:00
sfan5 dce166dc93 Support deleting shader materials 2024-02-29 17:20:50 +01:00
sfan5 13a0e5fb4a Share FpsControl code between game and menu 2024-02-29 17:20:50 +01:00
sfan5 0c3a4cc7b9 Improve ergonomics of CachedShaderSetting 2024-02-29 17:20:49 +01:00
sfan5 e9ab5bc223 Factor shadow constants out of MainShaderConstantSetter 2024-02-29 17:20:49 +01:00
sfan5 5da18d34ba Properly warn that shader queue is unimplemented 2024-02-29 17:20:49 +01:00
sfan5 09d542dfe0 Drop enable_vbo setting
Consistently applying this setting requires some code work,
because Irrlicht does not provide a global toggle.
At the same time I don't see any reason for someone to disable this.
2024-02-29 17:20:49 +01:00
sfan5 5280863300 Set VBO hints in more places 2024-02-29 17:20:49 +01:00
sfan5 fbec378869 Fix more type promotion mistakes
Someone of these are probably actual bugs and gcc totally doesn't care to warn about them, wtf?
This issue seems to be new with the IrrlichtMt update.
2024-02-26 22:07:40 +01:00
sfan5 9fcd7f2dc0 Fix clang-tidy type promotion errors 2024-02-26 20:47:47 +01:00
sfan5 5d8a22066c
Change how max_lag is calculated and reported (#14378)
-Change how max_lag is calculated and reported

- Cap singleplayer step at 60Hz

- Clarify dedicated_server_step
2024-02-26 20:46:57 +01:00
sfence 63a9853811
Remove attached sounds when the active object is removed (#14341) 2024-02-25 22:10:39 +00:00
rubenwardy f4eba3bfba
Add support for ContentDB package translation (#14410) 2024-02-25 22:09:52 +00:00
sfan5 762fca538c
Expose SHA256 algorithm to Lua (#14403)
Co-authored-by: chmodsayshello <chmodsayshello@hotmail.com>
2024-02-25 18:12:23 +01:00
SmallJoker fa1d80b53b
MetaData: restore undocumented set_string behaviour (#14396) 2024-02-25 16:03:05 +01:00
rubenwardy b4be483d3e
Add support for translating content titles and descriptions (#12208) 2024-02-24 19:13:07 +00:00
grorp 57de599a29
Restore pre-5.9.0-dev behavior of touch_use_crosshair=false shootline (#14389)
* Fix incorrect shootline after releasing pointer if touch_use_crosshair=false

This happened because Android reuses pointer IDs.
Also includes a refactor to merge "m_known_ids" and "m_pointer_pos".

* Restore pre-5.9.0-dev behavior of shootline when !m_has_move_id
2024-02-24 13:12:53 +01:00
sfan5 492aab20fe Fix compiler warnings 2024-02-24 12:39:12 +01:00
lhofhansl 0d4b489545
Detect air-only blocks instead of day/night differences (#14264)
* Detect air-only blocks instead day/night differences

* Write !is_air into the former day-night-diff bit on disk, so that old server can still read maps written by new servers

* Only set is_air bit when reading from disk
2024-02-22 21:47:42 -08:00
numzero 0d30a3071a Add meshgen tests 2024-02-22 15:45:17 +00:00
numzero 753f03ff6a Add mesh comparison functions, for tests 2024-02-22 15:45:17 +00:00
numzero bf2098c07f Decouple MeshMakeData from Client 2024-02-22 15:45:17 +00:00
numzero 2f35b121a4 Const correctness 2024-02-22 15:45:17 +00:00
David Heidelberg 34286d77c7
Allow toggling touchscreen mode at runtime (#14075)
Signed-off-by: David Heidelberg <david@ixit.cz>
Co-authored-by: Gregor Parzefall <gregor.parzefall@posteo.de>
2024-02-22 15:44:49 +00:00
sfan5 e3cc26cb7c
Irrlicht support changes (#14383) 2024-02-19 21:14:47 +01:00
Lars Müller 4acbd59162
Support absent scene node names (#14330)
Contains a hack to support IrrlichtMT revision 14 for now (until we release revision 15)
2024-02-18 11:39:16 +01:00
DS 1e316a9704
Don't use a reference for RaycastState::m_pointabilities (#14376) 2024-02-17 18:36:20 +01:00
sfan5 6ca214fefc
Introduce `std::string_view` into wider use (#14368) 2024-02-17 15:35:33 +01:00
sfan5 f483d10c95
Switch to LLVM-based MinGW toolchain (#14329) 2024-02-16 21:36:19 +01:00
sfan5 933432e62d Annotate Lua packer with more comments 2024-02-16 12:34:40 +01:00
sfan5 2b97fead9e Fix some potential iterator invalidation issues 2024-02-16 12:34:40 +01:00
cx384 9ac6d330b4
Fix minimap textures overwrite (#14349) 2024-02-15 21:52:41 +01:00
DS 4843890c56
Inline g/setPixel in imageCleanTransparent (#14323) 2024-02-15 19:38:23 +01:00
lhofhansl c81e0b7433
Allow shaders with disabled post processing pipeline (#14338)
- Allow disabling of the post processing pipeline while leaving shaders enabled
- Also disable post processing on Android by default
2024-02-15 08:25:33 -08:00
sfan5 ce97210eb1 Refactor how script api reads current mod name
This is to prevent future mistakes and make it clearer whether
the mod name can be trusted depending on how it is retrieved.
2024-02-15 11:06:21 +01:00
sfan5 cb5fa56e17 Remove insecure environment from async and emerge environment 2024-02-15 11:06:21 +01:00
fuzun 6cbb9193ea
Fix undefined behaviors (#14365)
* Initialize member `floats` in ContentFeatures

* Do not assign big double to u32

* Do not assign negative floating point number to unsigned integer
2024-02-15 11:05:42 +01:00
sfan5 3cac17d23e
Lua on each mapgen thread (#13092) 2024-02-13 22:47:30 +01:00
sfan5 d4b107e2e8 Enable dynamic_add_media to take the file data instead of a path 2024-02-13 22:44:10 +01:00
sfan5 c90ebad46b Allow specifying name for dynamic media files 2024-02-13 22:44:10 +01:00
sfan5 af69d4f7a9 Allow dynamic_add_media at mod load time 2024-02-13 22:44:10 +01:00
cx384 7901087466
Rename `MINETEST_SUBGAME_PATH` to `MINETEST_GAME_PATH` (#14351) 2024-02-12 23:21:19 +01:00
paradust7 e2ccd14c05
Allow using VBOs for meshes all the way down to 4 vertices (#14366)
This may improve performance substantially if there are many meshes with "few" vertices that would otherwise be retransmitted to the GPU every frame. In testing, this does not seem to decrease performance, even if as few as 4 vertices are used (e.g. particles).
2024-02-12 23:20:48 +01:00
Lars Mueller a14320fc44 Improve deprecation error messages 2024-02-12 22:58:26 +01:00
David Heidelberg eb52a149a0
Enable IPO/LTO by default except for debug builds (#14198)
Test case:

```
$ cmake . -DRUN_IN_PLACE=TRUE -DCMAKE_BUILD_TYPE=Release -DBUILD_SERVER=TRUE -DENABLE_TOUCH=FALSE

         minetest minetestserver
W/o LTO:      13M           7.3M
W/  LTO:      11M           5.9M
difference:   15%            19%
```

Also fixes various compiler warnings resulting from compilation using LTO.

---------

Signed-off-by: David Heidelberg <david@ixit.cz>
2024-02-09 00:01:12 +01:00
cx384 adaa4cc2f3
Move hard coded minimap to builtin (#14071) 2024-02-07 20:13:23 +01:00
grorp f2b99332d9
Add Lua API function to resolve node/collision/selection boxes (#13964) 2024-02-06 20:45:16 +01:00
sfence 83f779c52d
Fix active object adding to not generated block (#14311) 2024-02-04 21:24:08 +01:00
sfan5 c9e10e1dd9 Drop valgrind from CI and instead enable ASan
The recently added ioctl use is reported as a false-positive by valgrind.
I tried moving it to different compilers/versions two times and only
hit further issues that were valgrind's fault.

Also includes a tiny fix.
2024-02-04 21:23:05 +01:00
sfan5 4259ac96ea Optimize fs::CopyFileContents on Linux and Windows 2024-02-04 21:23:05 +01:00
sfan5 714c9361ea Add unit tests for fs::CopyFileContents 2024-02-04 21:23:05 +01:00
sfan5 93381014a0 Bypass media transfer in single player 2024-02-04 21:23:05 +01:00
Lars Müller 1d9c9710d7
Fix short raycasts missing large objects (#14339)
Increases the tolerance from one node to five nodes.
Also optimizes the "sphere" used for pre-filtering entities
to start in the middle of the line segment rather than at the start.
2024-02-04 14:04:05 +01:00
SmallJoker e7dbd325d2
RemotePlayer: make peer ID always reflect the validity of PlayerSAO (#14317)
Upon disconnect, RemotePlayer still had a peer ID assigned even though
the PlayerSAO object was maked as gone (for removal). This commit makes
that the following always holds true:

	(!sao || sao->isGone()) === (peer_id == PEER_ID_INEXISTENT)
2024-02-02 22:13:24 +01:00
techno-sam 176e674a51
Add wear bar color API (#13328)
---------

Co-authored-by: Muhammad Rifqi Priyo Susanto <muhammadrifqipriyosusanto@gmail.com>
Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
Co-authored-by: grorp <gregor.parzefall@posteo.de>
2024-02-02 21:21:00 +01:00
sfan5 e10d8080ba
Add flag to control mgv6 temple generation (#14293) 2024-01-30 21:52:04 +01:00
sfan5 9da1354f3a
Fix missing limit check for block y pos (#14320) 2024-01-30 21:51:51 +01:00
sfan5 e1f6108789 Revert class forward declaration in {client,server}opcodes.h
closes #14324
2024-01-30 17:04:12 +01:00
Lars Mueller 40bf88ac74 Performance: Limit blitting work to overlapping area 2024-01-28 13:01:54 +01:00
sfan5 ffec698d3e Change how [combine parameters are checked
the old checks were too strict
2024-01-28 13:01:54 +01:00
grorp fbec168e91
Only pause rendering if the Android activity is stopped (#14211) 2024-01-27 14:37:00 +01:00
sfan5 89f3502b56 Move Server ban check to different point 2024-01-27 10:33:32 +01:00
sfan5 5dbc1d4c08 Move some files to src/server/ 2024-01-27 10:33:32 +01:00
sfan5 c0f852e016 Change NetworkPacket to reserve instead of resize
also make the bool serialization clearer and move the constructor
to the header file
2024-01-27 10:33:32 +01:00
sfan5 397682a5b0 Clean up client and server command sending / tables 2024-01-27 10:33:32 +01:00
grorp 2b99dabdac
Touchscreen: Abort ongoing short taps if touch interaction mode changes (#14305) 2024-01-26 23:19:06 +01:00
sfan5 4158759265 Move mtevent.h to src/client/ 2024-01-26 22:10:36 +01:00
sfan5 8927e7caf6 Handle some edge cases in tile images 2024-01-26 22:10:36 +01:00
sfan5 a46fe79939 Reduce code duplication in tile.cpp 2024-01-26 22:10:36 +01:00
lhofhansl 2ef080a51b
Slight simplification of RemoteClient::getNextBlocks(...) (#14302) 2024-01-25 11:32:18 -08:00
Sokomine 4468813d47
Show more lines in chat scrollback buffer (#14290) 2024-01-24 19:41:29 +01:00
Lars Mueller 6a2eb4da07 Restore pointability backwards compatibility 2024-01-23 23:30:28 +01:00
sfan5 731b84d725 Reduce some instances of useless data shuffling 2024-01-23 22:34:36 +01:00
sfan5 362e4505e8 Minor improvements to media request / announce code
I had to throw away the code switching sendRequestedMedia to
a bin packing algorithm because it actually performed worse. :(
2024-01-23 22:34:36 +01:00
sfan5 13013d1b8b Fix client loading not aborting correctly in certain cases 2024-01-23 22:34:36 +01:00
sfan5 6df0de565f Check media requests on the server more carefully 2024-01-23 22:34:36 +01:00
sfan5 89eabb5803 Drop speed tests and some other unused code from clientlauncher.cpp 2024-01-23 22:34:36 +01:00
sfan5 6aa4f14a28 Drop some unneeded MOD_REASONs 2024-01-23 22:34:36 +01:00
sfan5 be7844192b Don't save blocks asap for only lighting updates 2024-01-23 22:34:36 +01:00
sfan5 9e3a11534f
Allow fog color to be overriden properly (#14296) 2024-01-23 22:33:33 +01:00
grorp a29d3cf074
Save the settings in more cases to avoid losing setting changes (especially on Android) (#14266) 2024-01-23 21:33:27 +01:00
cx384 5958714309
Tool specific pointing and blocking pointable type (#13992) 2024-01-22 18:27:08 +01:00
Lars Mueller fb461d21a5 Fix waypoint precision wraparound, add bounds check 2024-01-21 21:00:09 +01:00
grorp 404a063fdf
Touchscreen: Allow mods to swap the meaning of short and long taps (punch with single tap) (#14087)
This works through a new field "touch_interaction" in item definitions.
The two most important use cases are:
 - Punching players/entities with short tap instead of long tap (enabled by default)
 - Making items usable that require holding the place button (e.g. bows and shields in MC-like games)
2024-01-21 17:44:08 +01:00
sfan5 8cbd629010
Fix bugs in ModifySafeMap (#14276) 2024-01-20 15:37:30 +01:00
David Heidelberg 371b9a7fc2
Move check for strlcpy before config.h generation
Fixes: 225aa107f6 ("Define strlcpy only on platforms where it's not available")
2024-01-19 22:48:43 +01:00
sfan5 699d1bf27c Use newer IrrlichtMt
now with SDL2
2024-01-19 11:54:40 +01:00
David Heidelberg 225aa107f6 Define strlcpy only on platforms where it's not available
Linux musl-libc and recent glibc > 2.38 have it.

Signed-off-by: David Heidelberg <david@ixit.cz>
2024-01-19 11:53:08 +01:00
DS e416c99419
Fix signed overflow UB in PseudoRandom::next() 2024-01-19 11:52:53 +01:00
Lars 7c9706fdcf Remove unused meshgen_block_cache_size setting 2024-01-19 11:52:39 +01:00
HybridDog f08e4bb27d
Return to the main menu if a shader compilation fails (#14256)
Before this change, if the shaders are broken, only an error message is shown and the player enters the world nonetheless, where he/she sees broken graphics.
2024-01-19 11:51:46 +01:00
savilli 432988a4ad
Fix multiple password changes in one session 2024-01-19 11:50:55 +01:00
sfan5 e985b7a0bf Initialize random with better seed 2024-01-17 20:06:26 +01:00
sfan5 6caa06eaed Remove mistaken exec mode from three files 2024-01-17 20:06:26 +01:00
sfan5 5ceb327e55 Replace SHA256 implementation with one from LibreSSL
They have cleaner code than OpenSSL :)

from here: https://github.com/libressl/openbsd/tree/master/src/lib/libcrypto
and https://github.com/libressl/portable
2024-01-17 20:06:26 +01:00
sfan5 b0f76d82c5 Remove references to SHA1 and SHA512 from SRP code 2024-01-17 20:06:26 +01:00
sfan5 5756d6262e Minor improvements and fixes in httpfetch.cpp 2024-01-17 20:06:11 +01:00
sfan5 56943bef48 Use modern libcurl poll/wait methods 2024-01-17 20:06:11 +01:00
sfan5 ee727eb65e Migrate UDPSocket to use poll() 2024-01-17 20:06:11 +01:00
sfan5 e8008c1b21 Sanitize lang_code and full_version received from client
fixes #14262
2024-01-17 20:05:57 +01:00
sfan5 bdc124ba41 Require client to consistently use peer ID 2024-01-17 20:05:57 +01:00
sfan5 f27f701251 Make server disconnect lingering clients 2024-01-17 20:05:57 +01:00
sfan5 b2f0a37b18 Rate-limit client connection attempts 2024-01-17 20:05:57 +01:00
sfan5 050152eb90 Do not allocate packet quota to half-open connections 2024-01-17 20:05:57 +01:00
sfan5 3987318f09 Time out when reliables can't be delivered
If one of the channels stalls for whatever reason we can't pretend the connection is fine.
2024-01-17 20:05:57 +01:00
sfan5 9f684eac92 Remove weird command procession limit
it was set to 1 too, wtf?!
2024-01-17 20:05:57 +01:00
sfan5 abf3142b26 Send initial dummy packet as empty
No functional change and no compatibility implicatons
but this better matches what is documented everywhere.
2024-01-17 20:05:57 +01:00
sfan5 eeb873b23c Minor code corrections 2024-01-17 20:05:57 +01:00
sfan5 84d4647329 Scale resend timeout exponentially 2024-01-17 20:05:57 +01:00
sfan5 7acb14f7a1 Use fixed, lower timeout for half-open connections 2024-01-17 20:05:57 +01:00
sfan5 2587302987 Assign peer IDs randomly 2024-01-17 20:05:57 +01:00
sfan5 db88d24ff8 Track connection half-open state 2024-01-17 20:05:57 +01:00
cx384 2ea8d9ca11
Fix out of range enum casts in deSerialize functions (#14090) 2024-01-17 20:05:46 +01:00
sfan5 0383c44f0d
Custom data structure for active objects to get performance *and* safety (#13880) 2024-01-17 20:04:56 +01:00
Wuzzy 08ee6d8d4b
Add rotation support for wallmounted nodes in 'ceiling' or 'floor' mode (#11073) 2024-01-17 17:47:06 +01:00
sfence ceaa7e2fb0
Add API for restoring PseudoRandom and PcgRandom state (#14123) 2024-01-16 23:20:52 +01:00
Vitaliy 8093044f07
Support OpenGL 3 (#13321) 2024-01-16 21:09:18 +01:00
cx384 92c55c27cf
Add function to get all HUD elements (#14042) 2024-01-14 17:46:29 +01:00
SmallJoker ed7d4037b2 Client: fix possible division by zero in [crack modifier 2024-01-14 16:28:03 +01:00
sfan5 1ba26d67bd Remove excessive includes from porting.h 2024-01-14 13:17:53 +01:00
sfan5 e824e9023f Simplify LuaPseudoRandom::l_next and fix docs
Also extends the allowed range on the C++ side. This has no side-effects.
2024-01-14 13:17:53 +01:00
sfan5 d20f1182f2 Fix Lua PseudoRandom seeds being mangled
closes #14237
2024-01-14 13:17:53 +01:00
sfan5 e83530d40b Use explicit types on PseudoRandom implementation 2024-01-14 13:17:53 +01:00
sfan5 6f494a968d Move setenv compat code to porting.h 2024-01-14 13:17:53 +01:00
sfan5 133f706bf3 Make unittests less reliant on files in the source distribution 2024-01-14 13:17:53 +01:00
sfan5 863c9b55b4 Remove broken MINETEST_SUBGAME_PATH test
The path being tested for is in the default search path for games,
so it would still pass if the env var was not working.
2024-01-14 13:17:53 +01:00
sfan5 45561b89a4 Make sure unittests don't try to write to cwd 2024-01-14 13:17:53 +01:00
grorp b12be0498e
Don't enable relative mouse mode if in touchscreen mode (#14118) 2024-01-13 20:01:10 +01:00
lhofhansl 59abf1bb42
Allow active blocks to be generated (#14185) 2024-01-13 10:27:41 -08:00
lhofhansl 518ecd7f4e
Slight optimizations in ClientMap (#14251) 2024-01-12 16:53:08 -08:00
HybridDog 345e93d19c Code style: Use non-static member initialisation instead of member initialiser lists for shader uniform names
Before this change,
the member type and member name are at one place,
and the member name and uniform name are at another place.
If the uniform name is written directly at the member declaration,
the member type, member name and uniform name are all at one place,
which leads to shorter code and may be easier to read.
2024-01-11 20:04:42 +01:00
SmallJoker a7eaee77ca
ContentCAO: Fix threshold of alpha channel textures (#14213)
With disabled shaders, the material EMT_TRANSPARENT_ALPHA_CHANNEL uses the
parameter as an alpha threshold to decide whether to draw the texture.
Thus lowering this limit fixes the issue of vanishing textures below alpha 128.
2024-01-10 19:34:52 +01:00
Muhammad Rifqi Priyo Susanto 0d41996562 MSVC: Fix locale workaround code 2024-01-10 19:33:04 +01:00
lhofhansl 4bf95703a0
Allow access into MapSector::m_blocks (#14232)
* New API to allow access into MapSector::m_blocks
* Use this API on ClientMap::touchMapBlocks(), ClientMap::updateDrawList(), and ClientMap::updateDrawListShadow() to speed them up
2024-01-10 09:17:26 -08:00
cx384 2766c70ad3
Fix dividing by zero crashes in texture modifiers 2024-01-07 21:49:26 +01:00
sfan5 2c390b5473 Rework client connecting and enable fallback address use 2024-01-07 21:49:05 +01:00
sfan5 20692d54de Some minor cleanups for UDPSocket class 2024-01-07 21:49:05 +01:00
sfan5 dc7fb26921 Extend capabilities of Address class 2024-01-07 21:49:05 +01:00
Muhammad Rifqi Priyo Susanto 171f911237
Android: Add selection dialog (drop down/combo box) (#13814)
- The handling of IGUIComboBox uses the new setAndSendSelected() method.
- getDialogState() is now getInputDialogState() and returns the state of the input dialog.
- getLastDialogType() is added and returns current/last shown dialog's type.
- getInputDialogState() now returns an enum instead of int.
- getAndroidUIInput() now returns void instead of bool.
- New data types (enum) are added:
  (1) GameActivity.DialogType (Java) and porting::AndroidDialogType (C++)
  (2) GameActivity.DialogState (Java) and porting::AndroidDialogState (C++)
- When showing a text input dialog, there is no custom accept button text any more.
- showDialog()/showDialogUI() for text input is now showTextInputDialog()/showTextInputDialogUI().
- showInputDialog()/showDialogUI() for text input is now showTextInputDialog()/showTextInputDialogUI().
- getDialogValue()/getInputDialogValue() is now getDialogMessage()/getInputDialogMessage().


Co-authored-by: Gregor Parzefall <82708541+grorp@users.noreply.github.com>
2024-01-07 19:00:04 +07:00
lhofhansl bd42cc2c77
Ensure deterministic client occlusion culling and minor improvements (#14212)
* Ensure deterministic client occlusion culling
* Increase culling optimize distance slightly
* More accurate culling when sampling
2024-01-06 18:43:46 -08:00