aboutsummaryrefslogtreecommitdiff
path: root/commands/admin_commands.lua
diff options
context:
space:
mode:
Diffstat (limited to 'commands/admin_commands.lua')
-rw-r--r--commands/admin_commands.lua122
1 files changed, 122 insertions, 0 deletions
diff --git a/commands/admin_commands.lua b/commands/admin_commands.lua
new file mode 100644
index 0000000..19a7cb6
--- /dev/null
+++ b/commands/admin_commands.lua
@@ -0,0 +1,122 @@
+minetest.register_chatcommand("mesecons_enable", {
+ description = "enables the mesecons globlastep",
+ privs = { mesecons_debug = true },
+ func = function()
+ -- flush actions, while we are on it
+ mesecon.queue.actions = {}
+ mesecons_debug.mesecons_enabled = true
+ return true, "mesecons enabled"
+ end
+})
+
+minetest.register_chatcommand("mesecons_disable", {
+ description = "disables the mesecons globlastep",
+ privs = { mesecons_debug = true },
+ func = function()
+ mesecons_debug.mesecons_enabled = false
+ return true, "mesecons disabled"
+ end
+})
+
+minetest.register_chatcommand("mesecons_whitelist_get", {
+ description = "shows the current mapblock whitelist",
+ privs = { mesecons_debug = true },
+ func = function()
+ local count = 0
+ local list = {}
+ for hash, _ in pairs(mesecons_debug.storage:to_table().fields) do
+ table.insert(list, minetest.pos_to_string(minetest.get_position_from_hash(hash)))
+ count = count + 1
+ end
+
+ return true, (
+ "mesecons whitelist:\n" ..
+ "%s\n" ..
+ "%i mapblocks whitelisted"
+ ):format(
+ table.concat(list, "\n"),
+ count
+ )
+ end
+})
+
+minetest.register_chatcommand("mesecons_whitelist_add", {
+ description = "adds the current mapblock to the whitelist",
+ privs = { mesecons_debug = true },
+ func = function(name)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return
+ end
+
+ local hash = mesecons_debug.hashpos(player:get_pos())
+ local ctx = mesecons_debug.get_context(hash)
+ ctx.whitelisted = true
+ mesecons_debug.storage:set_string(hash, "1")
+
+ return true, "mapblock whitlisted"
+ end
+})
+
+minetest.register_chatcommand("mesecons_whitelist_remove", {
+ description = "removes the current mapblock from the whitelist",
+ privs = { mesecons_debug = true },
+ func = function(name)
+ local player = minetest.get_player_by_name(name)
+ if not player then
+ return
+ end
+
+ local hash = mesecons_debug.hashpos(player:get_pos())
+ local ctx = mesecons_debug.get_context(hash)
+ ctx.whitelisted = false
+ mesecons_debug.storage:set_string(hash, "")
+
+ return true, "mapblock removed from whitelist"
+ end
+})
+
+minetest.register_chatcommand("mesecons_debug_set", {
+ description = "modify mesecons_debug settings",
+ params = "<setting> <value>",
+ privs = { mesecons_debug = true },
+ func = function(name, params)
+ local player = minetest.get_player_by_name(name)
+ if not player or not params then
+ return false
+ end
+
+ local setting, value = params:match('^([a-zA-Z0-9_-]+)%s+(.*)$')
+ value = tonumber(value)
+ if not setting or not value then
+ return false
+ end
+
+ if not mesecons_debug.settings[setting] then
+ return false, "unknown setting"
+ end
+
+ mesecons_debug.settings.modify_setting(setting, value)
+
+ return true, "setting updated"
+ end
+})
+
+minetest.register_chatcommand("mesecons_debug_get", {
+ description = "get mesecons_debug settings",
+ params = "<setting>",
+ privs = { mesecons_debug = true },
+ func = function(name, setting)
+ local player = minetest.get_player_by_name(name)
+ if not player or not setting then
+ return false
+ end
+
+ local value = mesecons_debug.settings[setting]
+ if value then
+ return true, tostring(value)
+ else
+ return false, "unknown setting"
+ end
+ end
+})