aboutsummaryrefslogtreecommitdiff
path: root/src/script
Commit message (Collapse)AuthorAge
* Allow nodes to specify which sides to connect to.Auke Kok2016-03-12
| | | | | | | | | | | | | | | | NDT_CONNECTED attempts to connect to any side of nodes that it can connect to, which is troublesome for FACEDIR type nodes that generally may only have one usable face, and can be rotated. We introduce a node parameter `connect_sides` that is valid for any node type. If specified, it lists faces of the node (in "top", "bottom", "front", "left", "back", "right", form, as array) that connecting nodeboxes can connect to. "front" corresponds to the south facing side of a node with facedir = 0. If the node is rotatable using *simple* FACEDIR, then the attached face is properly rotated before checking. This allows e.g. a chest to be attached to only from the rear side.
* Nodebox: Allow nodeboxes to "connect"Auke Kok2016-03-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We introduce a new nodebox type "connected", and allow these nodes to have optional nodeboxes that connect it to other connecting nodeboxes. This is all done at scenedraw time in the client. The client will inspect the surrounding nodes and if they are to be connected to, it will draw the appropriate connecting nodeboxes to make those connections. In the node_box definition, we have to specify separate nodeboxes for each valid connection. This allows us to make nodes that connect only horizontally (the common case) by providing optional nodeboxes for +x, -x, +z, -z directions. Or this allows us to make wires that can connect up and down, by providing nodeboxes that connect it up and down (+y, -y) as well. The optional nodeboxes can be arrays. They are named "connect_top, "connect_bottom", "connect_front", "connect_left", "connect_back" and "connect_right". Here, "front" means the south facing side of the node that has facedir = 0. Additionally, a "fixed" nodebox list present will always be drawn, so one can make a central post, for instance. This "fixed" nodebox can be omitted, or it can be an array of nodeboxes. Collision boxes are also updated in exactly the same fashion, which allows you to walk over the upper extremities of the individual node boxes, or stand really close to them. You can also walk up node noxes that are small in height, all as expected, and unlike the NDT_FENCELIKE nodes. I've posted a screenshot demonstrating the flexibility at http://i.imgur.com/zaJq8jo.png In the screenshot, all connecting nodes are of this new subtype. Transparent textures render incorrectly, Which I don't think is related to this text, as other nodeboxes also have issues with this. A protocol bump is performed in order to be able to send older clients a nodeblock that is usable for them. In order to avoid abuse of users we send older clients a "full-size" node, so that it's impossible for them to try and walk through a fence or wall that's created in this fashion. This was tested with a pre-bump client connected against a server running the new protocol. These nodes connect to other nodes, and you can select which ones those are by specifying node names (or group names) in the connects_to string array: connects_to = { "group:fence", "default:wood" } By default, nodes do not connect to anything, allowing you to create nodes that always have to be paired in order to connect. lua_api.txt is updated to reflect the extension to the node_box API. Example lua code needed to generate these nodes can be found here: https://gist.github.com/sofar/b381c8c192c8e53e6062
* 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
|
* Implement AreaStore serializationShadowNinja2016-03-07
|
* Move AreaStore container selection logic into getOptimalImplementationShadowNinja2016-03-07
|
* Move AreaStore to utilShadowNinja2016-03-07
|
* Simplify AreaStore ID managementShadowNinja2016-03-07
|
* s_env.{cpp, h} cleanupsest312016-03-07
| | | | | | * Replace string by-val passing with const reference * Fix code style * Remove redundant `int table` definition and indentation level
* Add minetest.register_lbm() to run code on block load onlyest312016-03-07
|
* Use LuaErrors in security check macrosShadowNinja2016-03-07
| | | | | Throwing a LuaError calls destructors as it propagates up the stack, wheres lua_error just executes a longjmp.
* Require minetest.request_http_api to be called from the mod's main scopeJeija2016-03-03
| | | | Fixes #3764
* Fix main menu being unable to set secure settingsShadowNinja2016-03-03
|
* Remove debug.getupvalue from the Lua sandbox whitelistShadowNinja2016-03-03
| | | | This function could be used to steal insecure environments from trusted mods.
* Fix minetest.request_insecure_environment() always returning nilJeija2016-02-26
| | | | Fixes #3765
* 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.
* Ignore spaces in secure.trusted_mods settingJeija2016-02-19
|
* Require request_insecure_environment to be called from the mod's main scopeShadowNinja2016-02-19
| | | | | | | | | | | | | Previously you could steal a secure environment from a trusted mod by wrapping request_insecure_environment with some code like this: local rie_cp = minetest.request_insecure_environment local stolen_ie function minetest.request_insecure_environment() local ie = rie_cp() stolen_ie = stolen_ie or ie return ie end
* v2d & aabbox3d<f32> & sky cleanupsnerzhul2016-02-11
| | | | | * Sky: rename Box => m_box and inline getBoundingBox * Uniformize aabbox3d<f32> to aabb3f
* Add '/clearobjects quick'Kahrl2016-02-11
|
* Don't print whole json data buffer to errorstream on errorest312016-01-28
| | | | | | `errorstream` must not be overly verbose as clientside it is directly printed onto the ingame chat window. These days, the serverlist can contain > 200k bytes, so better print it to warningstream if the data buffer is too long.
* Fix C++11 compilabilityest312016-01-23
| | | | Previous commits broke it... :(
* Allow per-tiles culling.Auke Kok2016-01-20
| | | | | | | | | | | | | | | | | | | | | | | | Backface culling is enabled by default for all tiles, as this is how the lua parser initializes each tiledef. We revert to always using the value from the tiledef since it is always read and serialized. Mods that wish to enable culling for e.g. mesh nodes, now can specify the following to enable backface culling: tiles = {{ name = "tex.png", backface_culling = true }}, Note the double '{' and use of 'name' key here! In the same fashion, backface_culling can be disabled for any node now. I've tested this against the new door models and this properly allows me to disable culling per node. I've also tested this against my crops mod which uses mesh nodes where culling needs to be disabled, and tested also with plantlike drawtype nodes where we want this to continue to be disabled. No default setting has changed. The defaults are just migrated from nodedef.cpp to c_content.cpp.
* Show infotext with description for item entitiesRealBadAngel2016-01-18
|
* Make ItemStack:set_count(0) clear the item stacksfan52016-01-15
| | | | fixes minetest/minetest_game#786
* 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
* Revert "Add support for using arbitrary meshes as items"Sapier2015-12-29
| | | | | | This reverts commit 91bafceee6606fab79db1bde4cba01b84fed65c7. Reverted due to missinterpretation of agreement, obvious dislike and me not interested in doing fights for feature I don't actually need
* Add support for using arbitrary meshes as itemsSapier2015-12-29
|
* Fix lua object:get_properties() being brokenSapier2015-12-21
|
* Fix missing popest312015-12-20
| | | | | | | | | | | Previous commit 70ea5d552e283bd5bce3278cbf3819bd87ba2602 "Add support for limiting rotation of automatic face movement dir entitys" by sapier has broken minetest's feature to open worlds. This was due to a missing stack pop operation. Thanks to @oleastre for reporting this bug and suggesting the fix.
* Add support for limiting rotation of automatic face movement dir entitysSapier2015-12-19
|
* Add option to give every object a nametagBlockMen2015-12-15
| | | | or change the nametag text of players
* Fix threshold typeest312015-12-07
| | | | | | | | | | | Fix the type of the threshold value for mapgen. The commit a78dd7f2b6b0e1fefdbaa1ae21b722dd4459e4f4 "Fix spelling of noise_threshold" has changed it to be read as int, but it can have non-integral values too. Thanks to @kwolekr for pointing this out.
* Mapgen: Add propagate_shadow bool to calcLightingparamat2015-12-07
| | | | | | | | | | To terminate unwanted shadows from floatlands or realms above Also add to LuaVoxelManip calc_lighting for use in mapgen mods Remove the 2 argument calcLighting, mapgens now use the 5 argument form to specify the volumes for propagateSunlight and spreadLight In mgsinglenode replace calcLighting with setLighting and clean-up use of tabs and spaces
* Fix spelling of noise_thresholdJun Zhang2015-12-06
|
* Add on_secondary_use when right clicking an item in the airAlex Ford2015-12-02
|
* Add LuaSecureRandomest312015-11-08
|
* Add support for audio feedback if placing node failedBlockMen2015-11-07
|
* Add server side ncurses terminalest312015-11-06
| | | | | | | | | | | | | | | | | | | | | | | | This adds a chat console the server owner can use for administration or to talk with players. It runs in its own thread, which makes the user interface immune to the server's lag, behaving just like a client, except timeout. As it uses the same console code as the f10 console, things like nick completion or a scroll buffer basically come for free. The terminal itself is written in a general way so that adding a client version later on is just about implementing an interface. Fatal errors are printed after the console exists and the ncurses terminal buffer gets cleaned up with endwin(), so that the error still remains visible. The server owner can chose their username their entered text will have in chat and where players can send PMs to. Once the username is secured with a password to prevent anybody to take over the server, the owner can execute admin tasks over the console. This change includes a contribution by @kahrl who has improved ncurses library detection.
* Schematics: Add core.place_schematic_on_vmanip APIkwolekr2015-11-05
| | | | | Fix memory leak in minetest.place_schematic Slightly refactor Schematic code
* Add callback parameter for core.emerge_area()kwolekr2015-11-02
|
* Fix Lua scripting synchronizationkwolekr2015-11-01
| | | | | | | For several years now, the lua script lock has been completely broken. This commit fixes the main issue (creation of a temporary rather than scoped object), and fixes a subsequent deadlock issue caused by nested script API calls by adding support for recursive mutexes.
* Fix server crashing on Lua errorsShadowNinja2015-10-31
| | | | | | | | Previously, the server called FATAL_ERROR when a Lua error occured. This caused a (mostly useless) core dump. The server now simply throws an exception, which is caught and printed before exiting with a non-zero return value. This also fixes a number of instances where errors were logged multiple times.
* SAPI: Fix seed parameter truncation for LuaPseudoRandom constructorkwolekr2015-10-26
| | | | | Also fix a potential seed truncation issue on platforms where the range of ptrdiff_t (the underlying type of lua_Integer) is too small.
* SAPI: Move core.get_us_time() to Util modulekwolekr2015-10-26
|
* Remove some abort() callsest312015-10-26
| | | | abort() doesn't benefit from the high level abstractions from FATAL_ERROR.
* SAPI: Throw runtime error instead of if l_get_mapgen_object called in ↵kwolekr2015-10-25
| | | | incorrect thread
* SAPI: Mark all Lua API functions requiring envlockkwolekr2015-10-25
|
* Correct comment in l_util.cppest312015-10-26
| | | | | Remove outdated loglevel list from a l_util.cpp comment, and rather point to the updated code.
* Add option to disable backface culling for modelsBlockMen2015-10-25
| | | | | - Disabled by default (except players) - Fixes #2984