summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-12-28Luacontroller: Restrict digiline messagesJeija
Restrict maximum length of messages to 50.000 characters and disable sending functions or table references over the wire. Restrict types of channel variable to string, number or boolean. The missing length restriction made DoS-like attacks possible by overflowing memory using string concatenation. Thanks to gamemanj for disclosing this issue.
2016-12-04Fix crash with movestonesYutao Yuan
2016-11-17Remove an unused function.Christopher Head
2016-09-04Never postpone action_on or action_offJeija
There is no more need for that since VoxelManip caching makes sure we always get an answer to get_node_force.
2016-09-04Add Hawk777 to contributor list, update developer documentation URLJeija
2016-08-31Duplicate unhash_blockpos code to legacy.luaJeija
Duplicating that small piece of code seems like a better idea than putting the undo-forceloading code back into util.lua. This way, it is easier to remember to remove that unneccesary code after a couple of months / years, when people have transitioned. This also means we can make changes to the code in util.lua without breaking old code.
2016-08-30Remove some long unused legacy codeJeija
The change that required this compatibility layer happened in 2014, so other mods have had a lot of time to update.
2016-08-30Small cleanups in `internal.lua`, move forceloading reversal to legacyJeija
2016-08-30Greatly improve performance by making use of VoxelManips in turnoffJeija
Instead of seperately looking for onstate receptors along equipotential sections of the circuit before turning off, do that while already modifying the VoxelManip. In case an onstate receptor is found, discard the VoxelManip cache, otherwise commit it after turnoff is completed.
2016-08-30Further simplification of turnon/turnoffJeija
2016-08-24Simplify turnon/turnoff.Christopher Head
It is no longer possible for get_node_force to return nil if the target location does, in fact, exist, because a VM will always be able to load it (whereas a forceload might not, due to exhaustion of forceload resources). So it is no longer necessary to handle get_node_force returning nil by deferring processing.
2016-08-24Use VM transactions for conductor state changes.Christopher Head
VoxelManipulator-based transactions are used to hopefully speed up scanning and replacing of networks of conductors when receptors start or stop driving signals into them.
2016-08-24Implement VoxelManipulator-based transactions.Christopher Head
Rather than calling out through the Lua-to-C API for each node that needs to be read or written, a group of map reads (and optionally writes) can be grouped into a transaction. Access to map data within the transaction is provided at high speed by means of VoxelManipulators. Once the reads and writes are finished, the transaction can be committed or aborted.
2016-08-24Use VoxelManipulators for get_node_force.Christopher Head
A VoxelManipulator, when asked to read a mapblock, in addition to making that mapblock available to the caller, also pulls it into the server’s map cache, thus making get_node calls in the immediate future succeed. This has the dual advantages that not every mapblock containing a Mesecons circuit need remain loaded at all times (rather mapblocks can be loaded on demand as signals are sent), and that the server need not bother running ABMs and ticking entities within those mapblocks that are loaded due to Mesecons signalling.
2016-08-23Split wires into their own mod, introduce autoconnect hooksCarter Kolwey
The update_autoconnect function had to be abstracted away from the default wires, any kind of wire can now register autoconnect hooks, which should make having multiple different wire types much easier. mesecons_mvps, mesecons_receiver and mesecons_random made use of update_autoconnect, their code was also adapted. This also fixes a receiver bug: If a receiver was placed with a onstate receptor next to it (but not the wall lever / button that caused the receiver to appear) the receiver didn't turn on in the past. Also move documentation for mesecon wire into mesecons_wire.
2016-08-23Move shared textures into base mod (fixes a few LuaC issues)Carter Kolwey
2016-08-16Merge pull request #282 from Hawk777/luacontroller-commentFlorian Euchner
Remove an obsolete comment.
2016-08-16Remove an obsolete comment.Christopher Head
2016-07-31Fix bug introduced in previous commit that broke all logic blocksJeija
turnon / turnoff were calling activate / deactivate on nodes even though their rules didn't link Fixes #278, thanks to @darkfeels
2016-07-25Fix #276: Fix bugs in block forceloading in turnon / turnoffJeija
Thanks to @Hawk777 for reporting this problem
2016-07-09Don't bother checking if a node can overheat before cooling itCarter Kolwey
2016-07-09Command block server crash fixednumber Zero
Before that, command block would crash the server if activated when no players are online
2016-05-17Add protection support to Luacontrollers,Carter Kolwey
protection is ignored with protection_bypass_priv
2016-05-17Merge pull request #270 from Emon-Omen/patch-1Florian Euchner
Fixed missing capital letter in "ghoststone"
2016-05-16fixed missing capital letter @ line 29Emon
2016-05-16Add COPYING.txt file to clarify coprights and licensesJeija
2016-05-15Remove microcontroller documentation files from the source treeJeija
The files are still available for download in a GitHub release
2016-04-26Luacontroller: Fix `remove_functions` stack overflow bugelectrodude
2016-04-26Mese as conductor: Fix light source, make code more flexibleJeija
Closes #265
2016-04-21Merge pull request #264 from cheapie/masterFlorian Euchner
Escape command block commands for formspec
2016-04-21Escape command block commands for formspecCarter Kolwey
2016-04-02Disable JIT optimization for user code and allow string.find in plain modePedro Gimeno
Disabling LuaJIT for user code enables normal working of debug.sethook() even for loops. The drawback is that that code will run more slowly. The fourth parameter of string.find indicates whether the second parameter should be interpreted literally (true) or as a pattern (false). Allowing patterns enables DoS attacks, but it's possible to allow literal matching with little effort, by disallowing the function only if the fourth parameter (plain mode) is not `true`.
2016-03-14Luacontroller: Put clearing debug hook before throwing error back inJeija
2016-03-13Luacontroller: Add safe version of string.rep and remove string.gsub,Jeija
fixes #255
2016-03-13Luacontroller: Fix function usage in LuaJIT, make 'do' no longerJeija
prohibited, remove pcall and xpcall, fix global lookup of "jit" variable, correct error locations Thanks to @ShadowNinja and @gamemanj for fixing this in #241
2016-02-28Revert "Toggle trapdoors on signal, workaround for #252"Jeija
Please use the screwdriver if you want to rotate trapdoors. This reverts commit 417a136c5e6842a6c54a98690746b0aa41ad69e5.
2016-02-27Toggle trapdoors on signal, workaround for #252Jeija
2016-02-23Merge branch 'ssieb-master'Jeija
2016-02-22Fix crash due to force loading changes.Samuel Sieb
2016-02-19Remove unused VERSION fileJeija
and remove debug output
2016-02-19Force-load areas with mesecon usageJeija
This is a major speedup for large mesecon machines / structures. Force-loaded areas are stored in a file to be persistent over server reboots. By default, areas are unloaded after 10 minutes (600s) without usage, this can be customized with the mesecon.forceload_timeout setting. Please turn max_forceloaded_blocks up for better performance.
2016-02-16Update documentation: Fix mesecons.net linksJeija
2016-02-15Consistently use UNIX line endings (LF instead of CR LF)Jeija
2016-02-15Fix vertical wires not updating power when adding to / removing from a ↵Jeija
vertical line Call mesecon.on_dignode / mesecon.on_placenode to take care of that.
2016-02-15Fix pistons not connecting to wire and not activating when placingJeija
up/down pistons from certain directions
2016-02-14Always use minetest.set_node instead of minetest.add_node for consistencyJeija
2016-02-14Use vector helper functions instead of old builtin cmpPos and addPosRule ↵Jeija
functions
2016-02-14Merge branch 'playerdetector_update' of ↵Jeija
https://github.com/HybridDog/minetest-mod-mesecons into HybridDog-playerdetector_update
2016-02-14Merge branch 'fix_pistons' of ↵Jeija
https://github.com/HybridDog/minetest-mod-mesecons into HybridDog-fix_pistons
2016-02-14Doors: Use new mesh door API if availableAuke Kok
I've implemented a new door API in minetest_game that performs all the needed things to assure doors are properly openend and closed, without mods needing to know the inner details of what needs to be done. Mesecons can just fetch a reference to the door object and call the appropriate open or close method, which simplifies this code a lot. For compatibility, this code retains the old code path and tests whether the new API is available, so this code remains functional if the new API is not available. Since the metal trapdoor was only recently added, I added it to the new API codepath only, it's unlikely to be present on older versions of minetest_game anyway. As a benefit from the new door API, there is now absolutely no more accidental switching closed trapdoors to open on power off, which could happen with the old method - since that was just a simple toggle.