aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Allow NodeTimer, ABM and block mgmt interval changes.Auke Kok2016-03-19
| | | | | | | | | | | | | | | | | | | | | | ABM's are hardcoded to run every 1.0s, NodeTimers are hard coded to run at every 1.0s. Block mgmt is running every 2.0sec. However, these timers can be better tuned for both higher and lower values by server owners. Some server owners want to, and have the resources to send more packets per second to clients, and so they may wish to send smaller updates sooner. Right now all ABM's are coalesced into 1.0 second intervals, resulting in large send queues to all clients. By reducing the amount of possible timers, one can get a far better response rate and lower the perception of lag. On the other side of the camp, some servers may want to increase these values, which again isn't easily doable. The global settings abm_interval and nodetimer_interval are set to current values by default. I've tested with 0.2/0.5 type values and noticed a greatly improved response and better scattering of nodetimers, as well as enjoying not faceplanting into doors with pressure plates anymore.
* lua_api.txt: improve vector documentationest312016-03-19
| | | | | Before it rendered very badly in HTML. Also point out what vector.round does.
* Set EXAMPLE_CONF_DIR to DOCDIR if DOCDIR gets customizedest312016-03-16
| | | | | | | | | | | | | | | | | | | | | | Before, customisation of DOCDIR did not lead to changes of the EXAMPLE_CONF_DIR default value. This was inconsistent with expected behaviour if you didn't know of the existence of the EXAMPLE_CONF_DIR variable. The confusion is very strong, as (for not in place builds) both DOCDIR and EXAMPLE_CONF_DIR share the same default value, it is unexpected that setting CUSTOM_DOCDIR changes the location of all documentation files but one. The best meaning of EXAMPLE_CONF_DIR is to further allow customization of the mt.conf.example storage place, but otherwise keep defaulting to whatever DOCDIR is set to, at least for not in place builds. This patch implements that behaviour. Fixes #3863.
* Remove chat escape sequences from chat messages, for future colored chat.Ekdohibs2016-03-15
|
* Add option to not send pre v25 init packetest312016-03-15
| | | | | | | | | | | | | | | | | The legacy init packet (pre v25) sends information about the client's password that a server could use to log in to other servers if the username and password are the same. All the other benefits of SRP of protocol v25 are missed if the legacy init packet is still sent during connection creation. This patch adds an option to not send the v25 init packet. Not sending the v25 packet means breaking compat with pre v25 servers, but as the option is not enabled by default, no servers are affected unless the user explicitly flips the switch. More than 90% of the servers on the serverlist support post v25 protocols. The patch also fixes a bug with greying out of non compliant servers being done wrongly, the min and max params were mixed.
* Fix two reconnect bugsest312016-03-15
| | | | | | | | | | | | | | | | | | | | | | Fix two bugs related to the reconnect feature introduced by commit 3b50b2766aeb09c9fc0ad0ea07426bb2187df3d7 "Optional reconnect functionality" 1. Set the password to the stored one Before, we have done the reconnect attempt with a cleared password, so using the feature would only work if you had an empty password. Thanks to @orwell96 for reporting the bug. 2. Reset the reconnect_requested flag after its use the_game only writes to the reconect_requested flag if it sets it to true. It never sets it to false. If the flag is not reset after its use, all "reset"s to the main menu will look like the server had requested a reconnect.
* Much better API for auth.{cpp, h}est312016-03-15
| | | | | | | | * No function overloading * Adhere coding style and with method names following lowercase_underscore_style * Use std::string in external API, handling these is much more fun
* Mapgen: Fix light in tunnels at mapchunk bordersparamat2016-03-14
| | | | | | Don't excavate the overgenerated stone at node_max.Y + 1, this creates a 'roof' over the tunnel, preventing light in tunnels at mapchunk borders when generating mapchunks upwards.
* Fix player teleportation bug whilst sneakingHybridDog2016-03-14
| | | | | Only set back position when sneaking if player wasn't teleported by adding and using a bool "got_teleported" to player it fixes #2876
* Connected nodes: fix 2 minor bugsAuke Kok2016-03-14
| | | | | | | | | | | | | | | 1. Copy-paste error: properly test for back-connection. In the case of two different connected nodebox types, we want to assure that if A connects to B, that B also connects to A. This test was accidentally not implemented correctly. 2. Clear the connects_to_ids before deserializing. With each new connected node, the deserialization code added more and more targets to the map, since the map wasn't cleared in between deserialization steps. This caused e.g. wall blocks to connect to things in the fence connects_to map.
* Resend blocks when modified while sending to clientJeija2016-03-12
|
* Add options for screenshot format and qualityDiego Martinez2016-03-12
|
* 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
* Fix chat console not opening after formspec opened over itShadowNinja2016-03-12
| | | | | | The MainMenuManager set the console invisible when a formspec opened over it, but didn't properly close it, and the chat console never set itself visible again.
* Documentation: Auto-update conf.example and settings_translation_file.cppparamat2016-03-12
|
* Fix ask_reconnect_on_crash option being ignoredorwell962016-03-11
| | | | | | | | | | | | | | Since commit 3b50b2766aeb09c9fc0ad0ea07426bb2187df3d7 "Optional reconnect functionality" there is a config option named ask_reconnect_on_crash. It asks the client to reconnect to the server if the server crashed. It has been implemeted and works, but due to a function parameter not being passed it never showed effect. This patch adds the parameter and fixes the bug. Also fixes the `reconnect` option of minetest.request_shutdown being ignored.
* Documentation: Clarify global and mapgen-specific mapgen flagsparamat2016-03-11
|
* 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.
* Avoid try/catch for settings.Auke Kok2016-03-09
| | | | | We can just test for the presence of these settings nicely here, no need to use a try / catch construct.
* 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
|
* Fix SpatialAreaStore not freeing removed areasShadowNinja2016-03-07
|
* Add basic AreaStore method documentationShadowNinja2016-03-07
|
* Sort AreaStore headerShadowNinja2016-03-07
|
* Clean up VectorAreaStoreShadowNinja2016-03-07
|
* Move AreaStore container selection logic into getOptimalImplementationShadowNinja2016-03-07
|
* Move AreaStore to utilShadowNinja2016-03-07
|
* Make AreaStore cache setting privateShadowNinja2016-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.
* Settings Tab: Regroup dropdown datas in tablesJean-Patrick Guerrero2016-03-06
|
* Faster insertion into tableRui9142016-03-06
|
* Add forgotten valleys mapgen in mapgen nameMuhammad Rifqi Priyo Susanto2016-03-05
| | | | Missing `valleys` in `settingtypes.txt` and `minetest.conf.example`.
* Update settings tab + some misc. clean-upJean-Patrick Guerrero2016-03-05
|
* Update Android dependencies, -O3 optimization, remove old ARMv5 configMaksim Gamarnik2016-03-05
| | | | | | | * Update OpenSSL (thanks @sapier, i use his patch!), Curl and SQLite3. * Remove old arm config. Almost all phones that use ARMv5 have 1 core and 256-512 RAM, it's about 2-5 FPS. * Do -O3 optimization for libs and remove -fexpensive-optimizations for Minetest (-O3 includes this! Read gcc docs). * OpenSSL fix - thanks @sapier, again.
* Mgvalleys: Correct spawn problemsDuane Robertson2016-03-04
| | | | Increase maximum spawn altitude to reduce spawn issues.
* Decoration API: Allow force_placement of simple decorationsparamat2016-03-04
|
* 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.
* Add support for non-ASCII characters to chat consoleShadowNinja2016-03-02
| | | | | This still only supports 256 characters, but that's because Irrlicht's clipboard handlers don't support wide characters.
* Add Android chat formShadowNinja2016-03-02
|
* Add text selection and copying to consoleShadowNinja2016-03-02
|
* Unlock cursor when opening consoleShadowNinja2016-03-02
|
* Use the console instead of a dedicated window when pressing keymap_chat/cmdEsteban I. Ruiz Moreno2016-03-02
| | | | keymap_console opens a full window for chat history browsing.
* Fix a mistake in the world format documentationAleksey Vorona2016-03-03
| | | | | | Fixed a minor mistake that made it appear as if the inventory is serialized multiple times - once per each variable. In fact it is serialized once per each node.