aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNatureFreshMilk <naturefreshmilk@github.com>2019-08-16 07:49:14 +0200
committerNatureFreshMilk <naturefreshmilk@github.com>2019-08-16 07:49:14 +0200
commitaeb9ef2e382adcf2a6fc9aac25806397a0574455 (patch)
tree48ba4f72659513e119babea2b792ecf63817ebfb
downloadmesecons_debug-aeb9ef2e382adcf2a6fc9aac25806397a0574455.tar.gz
mesecons_debug-aeb9ef2e382adcf2a6fc9aac25806397a0574455.zip
basic api
-rw-r--r--.luacheckrc16
-rw-r--r--api.lua49
-rw-r--r--depends.txt1
-rw-r--r--flush.lua10
-rw-r--r--globalstep.lua64
-rw-r--r--init.lua10
-rw-r--r--readme.md7
-rw-r--r--register.lua6
8 files changed, 163 insertions, 0 deletions
diff --git a/.luacheckrc b/.luacheckrc
new file mode 100644
index 0000000..550811a
--- /dev/null
+++ b/.luacheckrc
@@ -0,0 +1,16 @@
+allow_defined_top = true
+
+globals = {
+ "mesecon",
+ "minetest"
+}
+
+read_globals = {
+ -- Stdlib
+ string = {fields = {"split"}},
+ table = {fields = {"copy", "getn"}},
+
+ -- Minetest
+ "vector", "ItemStack",
+ "dump"
+}
diff --git a/api.lua b/api.lua
new file mode 100644
index 0000000..87fb2e9
--- /dev/null
+++ b/api.lua
@@ -0,0 +1,49 @@
+
+
+-- node.mesecons.effector.action_on() wrapper
+-- def = { node = "", suffix = "" }
+mesecons_debug.register_action_on_toggle = function(def)
+
+ local nodedef = minetest.registered_nodes[def.node]
+
+ local old_action_on = nodedef and
+ nodedef.mesecons and
+ nodedef.mesecons.effector and
+ nodedef.mesecons.effector.action_on
+
+ if not old_action_on then
+ minetest.log(
+ "action",
+ "[mesecons_debug] invalid definition for " .. def.node
+ )
+ return
+ end
+
+ local enabled = true
+
+ nodedef.mesecons.effector.action_on = function(...)
+ if enabled then
+ old_action_on(...)
+ end
+ end
+
+ minetest.register_chatcommand("mesecons_debug_disable_" .. def.suffix, {
+ description = "disables the mesecon action_on() function for " .. def.node,
+ privs = {server=true},
+ func = function()
+ enabled = false
+ return true, "Disabled action_on() for " .. def.node
+ end
+ })
+
+ minetest.register_chatcommand("mesecons_debug_enable_" .. def.suffix, {
+ description = "enables the mesecon action_on() function for " .. def.node,
+ privs = {server=true},
+ func = function()
+ enabled = true
+ return true, "Enabled action_on() for " .. def.node
+ end
+ })
+
+
+end
diff --git a/depends.txt b/depends.txt
new file mode 100644
index 0000000..acaa924
--- /dev/null
+++ b/depends.txt
@@ -0,0 +1 @@
+mesecons
diff --git a/flush.lua b/flush.lua
new file mode 100644
index 0000000..1a57485
--- /dev/null
+++ b/flush.lua
@@ -0,0 +1,10 @@
+
+
+minetest.register_chatcommand("mesecons_flush", {
+ description = "flushes the mesecon actionqueue",
+ privs = {server=true},
+ func = function(name)
+ minetest.log("warning", "Player " .. name .. " flushes mesecon actionqueue")
+ mesecon.queue.actions = {}
+ end
+})
diff --git a/globalstep.lua b/globalstep.lua
new file mode 100644
index 0000000..8b40669
--- /dev/null
+++ b/globalstep.lua
@@ -0,0 +1,64 @@
+
+-- enable/disable mesecons entirely
+
+local enabled = true
+
+-- globalstep on/off
+for i, globalstep in ipairs(minetest.registered_globalsteps) do
+ local info = minetest.callback_origins[globalstep]
+ if not info then
+ break
+ end
+
+ local modname = info.mod
+
+ if modname == "mesecons" then
+ local fn = function(dtime)
+ if enabled then
+ globalstep(dtime)
+ end
+ end
+
+ minetest.callback_origins[fn] = info
+ minetest.registered_globalsteps[i] = fn
+ end
+end
+
+-- execute()
+local old_execute = mesecon.queue.execute
+mesecon.queue.execute = function(...)
+ if enabled then
+ old_execute(...)
+ end
+end
+
+-- add_action()
+local old_add_action = mesecon.queue.add_action
+mesecon.queue.add_action = function(...)
+ if enabled then
+ old_add_action(...)
+ end
+end
+
+
+-- mesecons commands
+
+minetest.register_chatcommand("mesecons_enable", {
+ description = "enables the mesecons globlastep",
+ privs = {server=true},
+ func = function()
+ enabled = true
+ return true, "mesecons enabled"
+ end
+})
+
+minetest.register_chatcommand("mesecons_disable", {
+ description = "disables the mesecons globlastep",
+ privs = {server=true},
+ func = function()
+ enabled = false
+ -- flush actions, while we are on it
+ mesecon.queue.actions = {}
+ return true, "mesecons disabled"
+ end
+})
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..390e78e
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,10 @@
+local MP = minetest.get_modpath("mesecons_debug")
+
+mesecons_debug = {}
+
+dofile(MP.."/api.lua")
+dofile(MP.."/register.lua")
+dofile(MP.."/flush.lua")
+dofile(MP.."/globalstep.lua")
+
+print("[OK] mesecons_debug loaded")
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..4fa107d
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,7 @@
+Mesecons debug collection
+==================
+
+
+
+
+mesecons_debug_disable_
diff --git a/register.lua b/register.lua
new file mode 100644
index 0000000..22c836b
--- /dev/null
+++ b/register.lua
@@ -0,0 +1,6 @@
+
+
+mesecons_debug.register_action_on_toggle({
+ node = "",
+ suffix = ""
+})