| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Fix taking damage caused by sneaking over a nodebox gap.
Fix strange behaviour on stair nodeboxes.
Enable jumping from node edges while sneaking.
Enable movement around corners while sneaking on a 1-node-high groove in a wall.
|
| |
|
|
|
|
|
| |
Prevents normal drawtype nodes having transparency.
Avoids clients cheating by using 'x-ray' texture packs with transparent textures.
|
|
|
|
|
|
|
|
| |
Commit cad10ce3b747b721fd63784915e05f12bc488128 altered the parameter
'float_mount_height' but was missing the necessary line in the constructor
to get the altered value from 'params'.
Fixes 3D floatland terrain generating everywhere.
|
|
|
|
| |
(#6058)
|
| |
|
|
|
|
|
| |
Some settings of paramters can cause mgv7 variables to be -inf, nan or -nan.
This can cause massive vertical columns of water to appear above sea level.
|
|
|
|
|
|
|
|
| |
* Fix render order of overlays
* Use C++11 loops
* Fix time_t
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Automatic item and node colorization
Now nodes with a palette yield colored item stacks, and colored items
place colored nodes by default. The client predicts the colorization.
* Backwards compatibility
* Use nil
* Style fixes
* Fix code style
* Document changes
|
|
|
|
|
|
|
| |
Extend documentation, limit area volume
Remove u16 count limitation
* Prevent integer overflow, replace minp/maxp with pos1/pos2
|
|
|
|
|
|
| |
* Verify HudSetParams input when hotbar textures are set
This fix #6011
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, findSpawnPos() did not take the 'mapgen_limit' setting into account,
a small limit often resulted in a spawn out in the void.
Use the recently added 'calcMapgenEdges()' to get max spawn range through a new
mapgenParams function 'getSpawnRangeMax()'.
Previously, when a player respawned into a world, 'objectpos_over_limit()' was
used as a check, which was inaccurate.
Use the recently added 'saoPosOverLimit()' to get exact mapgen edges.
Also fix default value of 'm_sao_limit_min'.
|
|
|
|
|
|
|
|
|
| |
These code be generated by CSM, a modded client or just copy and pasted by the player.
Changes
- Update configuration example and setting translation file.
- Remove colour codes before logging chat.
- Add setting to remove colour codes before processing the chat.
|
|
|
| |
Also remove `disable_escape_sequences` since it's not needed anymore.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* LuaEntitySAO: Remove beyond outermost mapchunk edges
Based on a commit by, and with help from, nerzhul.
Add 2 functions to class Mapgen:
A function to calculate actual mapgen edges, called from the Mapgen constructor.
A function called indirectly from content_sao.cpp per entity step to check SAO
position is within mapgen edges.
* Calculate borders from params not mapgen, which is not available everytime
|
|
|
|
|
|
| |
functions (#5848)
* Tooltips: Unify the tooltip[] and list[] description tooltip display functions
|
|
|
|
| |
This commit restores the old behavior: if an inventory item has an own
inventory texture, it will not be shaded.
|
|
|
| |
Fix #5867
|
|
|
| |
This fixes a bug that occurred when the selection list of a drop down menu was changed but the name was still the same.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
(#5839)
* Use only one label instead of two for the soundText, this permit to ensure both label & values are aligned
* Add '%' character too, to reflect it's a percentage volume
* Remove rect on regenerateGui (upper part) which shadows outer part and which is not needed outside of the DesiredRect affectation
Fix issue #5837
|
| |
|
|
|
|
| |
MacOSX build fix + cleanups
|
|
|
|
|
|
|
|
|
|
| |
* Enhance ABM performance a little bit by removing two std::set copy
* ActiveBlockModifier::getTriggerContents now returns a const ref
* ActiveBlockModifier::getRequiredNeighbors now returns a const ref
* ActiveBlockModifier::getRequiredNeighbors is now purely virtual
* Little code style fix
|
|
|
|
|
|
|
| |
Mudflow of a neighbouring mapchunk extends into a mapchunk's edge, and could
remove 'dirt with grass' from under a decoration, creating unsupported
decorations.
Remove any decoration above if a 'dirt with grass' node is removed by mudflow.
|
|
|
| |
This ensures the shutting down progress bar is correctly rendered. This fixes #3050.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
intlGUIEditBox (#5806)
* Revert 1469424075affce7c27bb44e5a5cbd51485e44b2 and fix wrong char position when doing mouse selection on intlGUIEditBox
position should look at current line not the whole text and shift 1 character on the last line (due to \0 string delimiter)
* Finish the fix and prevent values under zero for getCursorPos which crash the program if found
* Forget to remove old comment
* fix zero to NULL
* Fix typo
|
|
|
|
|
|
| |
ad9fcf859ec2347325830e09504ae96968b51ea8
Fix #5803
|
|
|
|
|
|
|
| |
Fixes a crash caused in MTGame by breaking and right-clicking a chest.
If loading meta, digging, node can disappear and we looked at meta, which is wrong because meta became NULL.
Pointer is invalidated and we read wrong memory area
|
|
|
|
| |
Seems the diff mode doesn't work well, PR are detected as working whereas in master it's shown it's problematic (and really problematic). Use same check everywhere
|
|
|
|
|
|
|
|
|
|
|
|
| |
* [CSM] Add send_chat_message and run_server_chatcommand API functions
* Add client-side chat message rate limiting
* Limit out chat queue size
* [CSM] Add minetest.clear_out_chat_queue API function and .clear_chat_queue chatcommand
* Last fixes/cleanups before merge
|
| |
|
|
|
|
|
| |
Add node def and item def documentation.
Please be ready for merge!
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Allow enabling and disabling mods.
* Re-fix 605599b6f150b89ba6539c4d088231b326adcb48
This breaks some chars like € in chat.
Instead verify is char is a non control char -> iswcntrl
|
|
|
|
| |
Use runData.dig_time_complete instead of params.time to find out whether it's instant digging.
runData.dig_time_complete is set to something very big if the node can't be dug, whereas param.time is 0 when digging is impossible or it's instant digging. So not using param.time fixes #5728.
|