aboutsummaryrefslogtreecommitdiff
path: root/builtin/game
Commit message (Collapse)AuthorAge
* Rename nodeupdate and nodeupdate_single and make them part of the official APIest312016-11-14
| | | | | | | | | | | | | | | Now, the renamed forms of nodeupdate and nodeupdate_single are part of the official API. As nodeupdate has been used by Minetest Game and in mods despite of not being part of the official API, we ease the transition by still supporting it for the 0.4.15 release. After the release, the two functions can be removed. The removal will not violate the stability promise, as that promise only includes the official and documented API. Also, make some formerly global functions local. They most likely haven't been used by mods, therefore they won't get stubs with deprecation warnings, hard erroring directly.
* Builtin/../falling: Fix bugs caused by 'ignore' nodesparamat2016-11-07
| | | | | | | | Original commit by t4im, rebased and developed by paramat. Fix CONTENT_IGNORE being replaced by falling nodes or causing large areas of sand to collapse into itself. Format some conditional code for clarity. Add and clarify some comments.
* Privileges: Only give singleplayer 4 basic privsWuzzy2016-11-07
| | | | | | | - interact - shout - privs - basic_privs
* Add debug priv, and allow player to display the scene as wire-frame. (#4709)lhofhansl2016-11-04
|
* Chat commands: Trim whitespaces from input of `/privs` commandred-0012016-10-20
|
* Builtin/../chatcommands: Add /grantme commandred-0012016-10-16
|
* Builtin/../falling.lua: Code optimisationtenplus12016-10-14
|
* VoxelArea: faster iter function (#4490)HybridDog2016-10-08
|
* Builtin/falling: Add fallback vector in case of nil 'wallmounted to dir'paramat2016-10-03
| | | | | | | The fallback vector is in case 'wallmounted to dir' is nil due to voxelmanip placing a wallmounted node without resetting a pre-existing param2 value that is out-of-range for wallmounted. The fallback vector corresponds to param2 = 0.
* Forceloading: Transient forceloadsraymoo2016-10-03
| | | | | Adds a flag to forceload_block which lets you turn off persistence for that forceload.
* Fix typo in core.after (#4560)Rui2016-10-01
|
* Builtin: Change error to warning for light_source > 14paramat2016-09-21
|
* Register.lua: Throw error if node 'light_source' > core.LIGHT_MAXparamat2016-09-17
| | | | | | | | Add 'core.LIGHT_MAX = 14' to builtin/game/constants.lua with the intention to replace misplaced 'default.LIGHT_MAX = 14' in Minetest Game. Add comment in light.h requiring the constant be changed in both places. Add lighting bug warning to note in lua_api.txt. There are hundreds of mod uses of 15 which causes a lighting bug.
* Add minetest.unregister_item and minetest.register_alias_forcepaly22016-09-08
|
* 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
|