aboutsummaryrefslogtreecommitdiff
path: root/builtin/game
Commit message (Collapse)AuthorAge
* Builtin: Disallow registering users with the same nameSmallJoker2016-08-29
| | | | | Prevents duplicate names: 'NickName', 'nickname', 'NICKNAME'. Skips already registered users, so they can connect as usual.
* Move on join and on leave messages to lua (#4460)Xunto2016-08-22
|
* Zooming the camera requires the 'zoom' privilegeBen Deutsch2016-08-10
|
* Builtin: Add core.MAP_BLOCKSIZE constantTim2016-07-26
|
* Builtin: Fix check for a player object in core.check_player_privsTim2016-07-26
| | | | | | | 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.
* Builtin/profiler: Replace game profiler (#4245)Tim2016-07-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the setting "profiler.load" to enable profiling. Other settings can be found in settingtypes.txt. * /profiler print [filter] - report statistics to in-game console * /profiler dump [filter] - report statistics to STDOUT and debug.txt * /profiler save [format [filter]] - saves statistics to a file in your worldpath * txt (default) - same treetable format as used by the dump and print commands * csv - ready for spreadsheet import * json - useful for adhoc D3 visualizations * json_pretty - line wrapped and intended json for humans * lua - serialized lua table of the profile-data, for adhoc scripts * /profiler reset - reset all gathered profile data. This can be helpful to discard of any startup measurements that often spike during loading or to get more useful min-values. [filter] allows limiting the output of the data via substring/pattern matching against the modname. Note: Serialized data structures might be subject to change with changed or added measurements. csv might be the most stable, due to flat structure. Changes to the previous version include: * Updated and extended API monitoring * Correct calculation of average (mean) values (undistorted by idleness) * Reduce instrumentation overhead. * Fix crashes related to missing parameters for the future and occasional DIV/0's. * Prevent issues caused by timetravel (overflow, timejump, NTP corrections) * Prevent modname clashes with internal names. * Measure each instrumentation individually and label based on registration order. * Labeling of ABM's and LBM's for easier classification. Giving several ABM's or LBM's the same label will treat them as one. Missing labels will be autogenerated based on name or registration order. * Configurable instrumentation and reporting. Skip e.g. builtin if you don't need it. * Profile the profiler to measure instrumentation overhead.
* Builtin/game/item: Add `place_param2` nodedef fieldAuke Kok2016-06-17
| | | | | | | | | | | | | | | This allows a nodedef to specify a fixed value for param2 to be used for all normal placements. There are several uses for this: - nodes that require param2 to be set to a non-zero value for internal mod use. E.g. leafdecay could use this to detect that leaves are played by players. - force wallmounted or facedir value at placement at placement This overrides any player look direction or other on-the-fly param2 setting during placement.
* Add colored text (not only colored chat).Ekdohibs2016-05-31
| | | | | Add documentation, move files to a proper place and avoid memory leaks. Make it work with most kind of texts, and allow backgrounds too.
* Colored chat working as expected for both freetype and non-freetype builds. ↵TriBlade92016-05-31
| | | | @nerzhul improvements * Add unit tests * Fix coding style * move guiChatConsole.hpp to client/
* protection_bypass priv can now be revoked in singleplayer (#4169)Sokomine2016-05-30
|
* Item entities: Don't show description as infotextparamat2016-05-22
| | | | | Partially reverts #3547 Infotext remains optional for objects, empty by default
* Add on_punchnode callbackWayward One2016-05-17
|
* Avoid teleporting player if /teleport coords are out-of-rangetenplus12016-04-29
|
* Builtin: Add basic_privs settingrubenwardy2016-04-28
|
* Fix timer initialization.Auke Kok2016-04-21
| | | | | | | This fixes the problem that the first timer tick is an overrun and causes all timers to expire immediately. replaces #4003
* falling: walk 4 additional diagonally down directions.Auke Kok2016-04-20
| | | | | | | This seems very little cost and matches the old behavior more closely. This will cause some more falling nodes to get added to falling clusters. With the efficiency of the algorithm, this really doesn't do much damage.
* Convert nodeupdate to non-recursiveAuke Kok2016-04-11
| | | | | | | | | | | | | | This took me a while to figure out. We no longer visit all 9 block around and with the touched node, but instead visit adjacent plus self. We then walk -non- recursively through all neigbors and if they cause a nodeupdate, we just keep walking until it ends. On the way back we prune the tail. I've tested this with 8000+ sand nodes. Video result is here: https://youtu.be/liKKgLefhFQ Took ~ 10 seconds to process and return to normal.
* stop falling.lua errortenplus12016-03-29
| | | | | | | 2016-03-27 15:47:01: ERROR[Main]: ServerError: Lua: Runtime error from mod '*builtin*' in callback luaentity_Step(): Node name is not set or is not a string! 2016-03-27 15:47:01: ERROR[Main]: stack traceback: 2016-03-27 15:47:01: ERROR[Main]: [C]: in function 'add_node' 2016-03-27 15:47:01: ERROR[Main]: /usr/share/minetest/builtin/game/falling.lua:96: in function </usr/share/minetest/builtin/game/falling.lua:43>
* Falling: Set acceleration on step againRui2016-03-25
| | | | | | | | | | | Commit 65c09a96f41705bb8e75fc5ff4276342be91ed11 "Set acceleration only once in falling node" has made the acceleration being set only once. But this has introduced a regression. Fix #3884.
* Make `options` local here.Auke Kok2016-03-24
| | | | | | | | Undoubtably this may cause problems later if unchecked. ``` 2016-03-22 21:57:52: WARNING[Server]: Assignment to undeclared global "options" inside a function at .../sofar/git/minetest/bin/../builtin/game/chatcommands.lua:862. ```
* Builtin/game/falling: Re-add comma removed by recent commitparamat2016-03-19
|
* Set acceleration only once in falling nodeRui9142016-03-19
|
* Introduce "protection_bypass" privilege.Auke Kok2016-03-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This privilege allows map protection bypassing for server operators and world moderators. Initially I had thought that bypassing protection mods would have been something that could entirely be done inside mods and minetest_game, but the concept of protection is defined in core, in the code of core.is_protected(). I don't feel that it would be logical to introduce a protection concept in core, but not some way around that for server operators to maintain map parts that need fixing, de-griefing or cleanup. Others had noticed the same problems, and proposed a patch to minetest_game. That patch is fine by itself, but it fails to add protection bypass functionality for digging normal nodes and placing nodes. So, instead, we indroduce the new priv "protection_bypass" in core, and modify 'on_place_node' and 'node_dig' to allow bypassing node protections if the player holds this priv. This priv was tested with protector redo by tenplus1. A followup patch to Minetest Game will include allowing special checks for doors, trapdoors, chests in Minetest Game. Protection mods will likely want to mimic the changes in their relevant code sections.
* Add consistent monotonic day counter - get_day_count()Auke Kok2016-03-09
| | | | | | | | | | | | | | | | | | | | | | | | I've written several experimental bits of code that revolve around the need for a consistent calendar, but implementing one is extremely hard in mods due to time changes and mods overriding core.get_timeofday(), which will conflict. The second part of the problem is that doing this from a mod requires constant maintenance of a settings file. An implementation in core is trivial, however, and solves all of these problems at virtually no cost: No extra branches in server steps, and a single branch when minetest.set_time_of_day(), which is entirely reasonable. We store the day_count value in env_meta.txt. The use case is obvious: This change allows mods to create an actual virtual calendar, or properly account for seasonal changes, etc.. We add a "/days" chatcommand that displays the current day count. No permissions are needed. It can only retrieve the day count, not modify it.
* Add AreaStore custom ID APIShadowNinja2016-03-07
|
* Add minetest.register_lbm() to run code on block load onlyest312016-03-07
|
* Faster insertion into tableRui9142016-03-06
|
* Add Lua interface to HTTPFetchRequestJeija2016-02-22
| | | | | | | | | | 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.
* Initialize facedir and wallmounted tables only once.Diego Martinez2016-02-11
| | | | | | | | | | This makes the functions a bit faster since they don't have to recreate the tables every invocation, and makes the code more readable. Also, document `wallmounted_to_dir`. The function was implemented but not documented in `lua_api.txt`.
* Log /clearobjects modeKahrl2016-02-11
|
* Add '/clearobjects quick'Kahrl2016-02-11
|
* Add admin command which says who the administator is for the server.Splizard2016-02-04
|
* New timer design.Auke Kok2016-01-29
| | | | | | | | | | | | | | | | | | | | | | | 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.
* Show infotext with description for item entitiesRealBadAngel2016-01-18
|
* Liquids: Flow into and destroy 'floodable' nodesparamat2016-01-07
| | | | | Add new node property 'floodable', default false Define "air" as floodable = true in C++ and lua
* Fix missing localization for objHybridDog2015-12-20
|
* Add on_secondary_use when right clicking an item in the airAlex Ford2015-12-02
|
* Simplify regex used in check_modname_prefix and other improvements.Robert Zenz2015-11-24
| | | | | Simplified the regex used, added comments and changed the error message to contain the correct mod name.
* Log static_spawn error only onceRui2015-11-21
|
* Add the player name to dropped itemsRobert Zenz2015-11-12
| | | | | The player name is now added in the field "dropped_by" on the created entity.
* Improve LuaVoxelManip documentationkwolekr2015-11-07
|
* Add callback parameter for core.emerge_area()kwolekr2015-11-02
|
* minetest. to core.Rui9142015-10-31
|
* Check if hitter has inventory when punching itemBlockMen2015-10-25
| | | | Fixes #3280
* Add more ways to pass data to check_player_privsRobert Zenz2015-10-22
| | | | | | | | | | | 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")
* Refactor loggingShadowNinja2015-10-14
| | | | | | | | | - Add warning log level - Change debug_log_level setting to enumeration string - Map Irrlicht log events to MT log events - Encapsulate log_* functions and global variables into a class, Logger - Unify dstream with standard logging mechanism - Unify core.debug() with standard core.log() script API
* Localize digprop_err functionRui2015-10-12
|
* Added minetest.wallmounted_to_dirFernando Carmona Varo2015-10-04
|
* Some map border related fixesest312015-09-29
| | | | | | | | | | | | | 1. Check for entity addition success in spawn_item implementation 2. Check for success in item_drop callback, so that the player doesn't lose the item if they are outside bounds and try to drop it. 3. When existing player joins game, check that their position is inside map bounds. If not, set their position to the return value of findSpawnPos(). 4. Make findSpawnPos() respect the border 2 fixes a lua crash if a player drops an item outside map bounds. 3 fixes an assertion crash if a player leaves when being outside map bounds, and then rejoins.
* Add /emergeblocks command and core.emerge_area() Lua APIkwolekr2015-09-23
|