summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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.
2016-02-09this way it works better because unknown nodes may not stay unknownHybridDog
2016-02-09fix pistons not working in every buildable_to nodeHybridDog
2016-01-03playerdetector: short code and don't get scanname for every objectHybridDog
2016-01-02Merge branch 'HybridDog-noteblock_update'Jeija
2016-01-02Noteblock: Code cleanupHybridDog
2016-01-02Add os.datetable(), a (very) limited wrapper for os.date(). Fixes #246.Carter Kolwey
2015-12-29Merge branch 'sofar-sound'Jeija
2015-12-26Fix sound volume level of noteblock.Auke Kok
Playing stereo sounds positionally in OpenAL causes it to play the sounds unattenuated - same volume for all distances. This shouldn't happen, and makes noteblocks unneccesarily loud from very far away. Convert all noteblock samples to mono, 22kHz 64kbit.