| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
* Account for walking speed in vertical dir
* Avoid undefined behaviour due to division-by-zero
|
| |
|
| |
|
| |
|
|
|
|
| |
* Fix Wstringop-overflow warning from util/srp.cpp
|
| |
|
| |
|
|
|
|
| |
`&vector[0]` is undefined if vector.empty(), causing build failure on MSVC
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Solves some issues with ModStorage functionality in mapgen threads
that occurred when mapgen threads continued to run after the main
server thread had stopped. Also shuts down mapgen threads before
shutdown callbacks are called.
|
| |
|
| |
|
|
|
|
|
|
| |
No longer decide placement on 'buildable_to' parameter.
Dust nodes only look acceptable placed on cubic nodes.
Modders may not want to make their plantlike decorations 'buildable_to'.
|
| |
|
|
|
|
| |
We try to use default fallback for both mono and main font when custom font path is not exist. This way, if Minetest is not corrupted, we could avoid crash.
|
|
|
|
|
| |
This avoids scaling textures to 'texture_min_size' unless it is actually
required (because either auto-scaling or bi/trilinear filtering is enabled)
|
| |
|
| |
|
|
|
|
| |
Causes get_day_night_ratio() to return unpredictable results.
|
| |
|
| |
|
|
|
|
| |
Thread::m_start_finished_mutex (#6515)
|
|
|
|
|
|
| |
In some cases NetworkPacket was created using default constructor and m_data is not properly sized.
This fixed out of bounds memory copy
Also use memcpy instead of std::vector affectation to enhance packet creation
|
|
|
|
| |
* Replace deprecated WINAPI GetVersionInfoEx
|
|
|
|
|
|
|
| |
* Allow setting the near plane
* - Add near_plane limit of 0.5 to prevent x-ray.
- Add more details to near_plane setting.
|
|
|
|
| |
* Unkown nodes: Provide position on interact
|
|
|
|
| |
* Particles: Move spawner code to a separate fucntion
|
| |
|
|
|
|
|
|
|
| |
* Fix attached particle spawners far from spawn
When far from spawn, attached particle spawners
did not spawn particles.
|
|
|
|
| |
Leave the old move code untouched.
|
|
|
|
|
| |
Fixes commit a455297d297c0819a7eff89e51e5f01a5ac731c3
<cmath> header was already present in commit.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change OpenAL distance model from AL_INVERSE_DISTANCE to
AL_INVERSE_DISTANCE_CLAMPED to avoid excessive volume when very close
to the sound location, for example MTG doors, and MTG fire sounds which
are combined at an average position and often located in air nodes.
Because AL_REFERENCE_DISTANCE has been reduced to 1 node (the distance
under which gain is clamped), multiply volume by the same factor to keep
sound gains the same as before, since the gain is calculated as:
gain = (AL_REFERENCE_DISTANCE / distance)
|
|
|
|
|
| |
This bug can be triggered by e.g. calling minetest.place_schematic()
and stopping the server immediately afterwards.
|
|
|
|
|
|
| |
* Set placer to nil instead of a non-functional one
This requires nil checks in core.rotate_node and core.rotate_and_place.
|
|
|
|
|
| |
Add missing documentation of leveled nodebox to lua_api.txt, plus
a little cleaning up nearby.
|
|
|
|
| |
* ServerEnv: Clean up object lifecycle handling
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
temporary instead of global copied exception instances, it's not recommended and should have undefined issues
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reached (#6258)
* ClientInterface: add a function to verify (correctly) if user limit was reached
CS_HelloSent is a better indicator of active slots than CS_Created, which are session objects created after init packet reception
Switch existing checks to ClientInterface::isUserLimitReached()
Use range-based for loop for getClientIds() used function too
This will fix #6254 (not the memory overhead if init is flooded)
|
|
|
|
| |
Document behaviour for older clients.
|
|
|
|
| |
To make it sound less confusing to players
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Another small general problem: the player is always standing exactly on the
bondary between 2 nodes e.g. Y=1.5 is exactly between nodes Y=1 and Y=2.
floatToInt() and myround() will round +/-n.5 always 'outwards' to +/-(n+1),
which means they behave differently depending on where you are: they round
upwards above sea level and downwards when underground. This inconsistency
comes from the way the coordinates are calculated, independent of the
specific C++ code.
The result is a tiny bit of lost performance when moving underground,
because 1 node level more than necessary is checked for collisions. This can
be amended by adding a tiny offset to minpos_f.Y, like @paramat suggested.
This is not an elegant solution, but still better than wasting CPU.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To determine the area (nodes) where a player movement took place
collisionMoveSimple() first took the old/new player coordinates and rounded
them to integers, then added the player character's collision box and
implicitely rounded the result. This has 2 problems:
Rounding the position and the box seperately, then adding the resulting
integers means you get twice the rounding error. And implicit rounding
always rounds towards 0.0, unlike floatToInt(), which rounds towards the
closest integer.
Previous (simplified) behavior: round(pos)+(int)box, for example player at
Y=0.9, body is 1.75m high: round(0.9)+(int)1.75 = 1+1 = 2.
==> A character's height of 1.75m always got rounded down to 1m, its width
of +/-0.3 even became 0.
Fixed by adding the floats first, then rounding properly: round(pos+box) =
round(0.9+1.75) = round(2.65) = 3.
|
| |
|