aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua21
-rw-r--r--mod.conf1
-rw-r--r--settingtypes.txt7
3 files changed, 21 insertions, 8 deletions
diff --git a/init.lua b/init.lua
index 59b80dd..f305ad8 100644
--- a/init.lua
+++ b/init.lua
@@ -1,13 +1,18 @@
-minetest.register_globalstep(function()
- if minetest.settings:get_bool("digcustom") then
- local list = (minetest.settings:get("digcustom_nodes") or ""):split(",")
- local positions = minetest.find_nodes_near(minetest.localplayer:get_pos(), 5, list, true)
- for i, pos in ipairs(positions) do
- if i > 5 then break end
- minetest.dig_node(pos)
+async(function()
+ while true do
+ if minetest.settings:get_bool("digcustom") and minetest.localplayer then
+ local list = (minetest.settings:get("digcustom_nodes") or ""):split(",")
+ local node_pos = minetest.find_node_near(minetest.localplayer:get_pos(), 5, list, true)
+ local max_time = tonumber(minetest.settings:get("digcustom_max_time")) or -1
+
+ if node_pos then
+ await(diglib.dig_node(node_pos, max_time))
+ end
end
+
+ lua_async.yield()
end
-end)
+end)()
minetest.register_list_command("digcustom", "Configue custom autodig nodes", "digcustom_nodes")
diff --git a/mod.conf b/mod.conf
index 54d3308..e855099 100644
--- a/mod.conf
+++ b/mod.conf
@@ -1,3 +1,4 @@
name = digcustom
author = Fleckenstein
description = A dragonfire CSM to automatically dig customizable nodes
+depends = diglib, lua_async
diff --git a/settingtypes.txt b/settingtypes.txt
index 224341f..d143c07 100644
--- a/settingtypes.txt
+++ b/settingtypes.txt
@@ -1,2 +1,9 @@
+# Enable DigCustom
digcustom (DigCustom) bool false
+
+# Nodes to dig, comma separated
digcustom_nodes (DigCustom Nodes) string
+
+# Maximum time to spend on digging a node.
+# -1 means no limit
+digcustom_max_time (DigCustom Max Time) int -1