| Commit message (Collapse) | Author | Age |
| |
|
| |
|
|
|
|
| |
This has been a problem since the first day, oops.
|
|
|
| |
Co-authored-by: rubenwardy <rw@rubenwardy.com>
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
* Add a simple PNG image encoder with Lua API
Add ColorSpec to RGBA converter
Make a safety wrapper for the encoder
Create devtest examples
Co-authored-by: hecktest <>
Co-authored-by: sfan5 <sfan5@live.de>
|
|
|
| |
Add backwards-compatible metatable functions for vectors.
|
| |
|
| |
|
|
|
|
|
| |
Add more detailed light detection functions, a function to get the artificial light (torches) and a function to get the sunlight as seen by the player (you can specify timeofday).
Co-authored-by: rubenwardy <rw@rubenwardy.com>
|
| |
|
|
|
|
|
| |
Keeping the ObjectRefs around in a table isn't ideal and this allows
removing the somewhat nonsensical is_player_connected() added in 86ef7147.
|
| |
|
| |
|
| |
|
|
|
|
| |
Remove now redundant setting show_statusline_on_connect
Improve documentation of `minetest.get_server_status`
|
|
|
|
|
|
| |
* is_area_protected: Rename from intersects_protection
Return first protected position
Clarify docs: Mods may overwrite the function
|
|
|
|
|
|
| |
* Add minetest.is_player
* First use for is_player
|
|
|
|
|
| |
A useful function that applies 'core.is_protected()' to a 3D lattice of
points evenly spaced throughout a defined volume, with a parameter for
the maximum spacing of points.
|
| |
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
| |
|
|
|
| |
This will only happen if the formname matches or if formname is "".
|
| |
|
| |
|
|
|
|
|
|
|
| |
core.check_player_privs accepts as first argument a name or player object, but just tested for a string.
This caused crashes inside builtin, when being passed any unexpected types.
This provides a better (duck-typing like) test, better error reporting.
|
|
|
|
|
| |
Add documentation, move files to a proper place and avoid memory leaks.
Make it work with most kind of texts, and allow backgrounds too.
|
|
|
|
| |
@nerzhul improvements * Add unit tests * Fix coding style * move guiChatConsole.hpp to client/
|
|
|
|
|
|
|
| |
This fixes the problem that the first timer tick is an
overrun and causes all timers to expire immediately.
replaces #4003
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This allows mods to perform both asynchronous and synchronous HTTP
requests. Mods are only granted access to HTTP APIs if either mod
security is disabled or if they are whitelisted in any of the
the secure.http_mods and secure.trusted_mods settings.
Adds httpfetch_caller_alloc_secure to generate random, non-predictable
caller IDs so that lua mods cannot spy on each others HTTP queries.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I could honestly not make much sense of the timer implementation
that was here. Instead I've implemented the type of timer algorithm
that I've used before, and tested it instead.
The concept is extremely simple: all timers are put in an ordered
list. We check every server tick if any of the timers have
elapsed, and execute the function associated with this timer.
We know that many timers by themselves cause new timers to be
added to this list, so we iterate *backwards* over the timer
list. This means that new timers being added while timers are
being executed, can never be executed in the same function pass,
as they are always appended to the table *after* the end of
the table, which we will never reach in the current pass over
all the table elements.
We switch time keeping to minetest.get_us_time(). dtime is
likely unreliable and we have our own high-res timer that we
can fix if it is indeed broken. This removes the need to do
any sort of time keeping.
|
|
|
|
|
|
|
|
|
|
|
| |
The callback can now be invoked with either the player object or name as
the first parameter, and with either a table or a list of strings, like
this:
minetest.check_player_privs(player_name, { shout = true, fly = true })
minetest.check_player_privs(player_name, "shout", "fly")
minetest.check_player_privs(player, { shout = true, fly = true })
minetest.check_player_privs(player, "shout", "fly")
|
| |
|
| |
|
|
|
|
|
|
| |
* abort if theres no active timer
* only reduce the timer.time of all timers when its necessary
* move updating timers_to_add into a seperate function
|
| |
|
|
|
|
|
| |
Add optional core.pos_to_string decimal place rounding
Move core.string_to_pos to builtin/common/misc_helpers.lua for consistency
|
| |
|
| |
|
|
|