diff options
-rw-r--r-- | init.lua | 21 | ||||
-rw-r--r-- | mod.conf | 1 | ||||
-rw-r--r-- | settingtypes.txt | 7 |
3 files changed, 21 insertions, 8 deletions
@@ -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") @@ -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 |