]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - clientmods/inventory/autotool.lua
Added minetest.get_inventory(location)
[dragonfireclient.git] / clientmods / inventory / autotool.lua
index 97638672470f07457f98ab3a1e97349b463817db..430e6025b0819c902b2e6b37d74be63c7a5d8095 100644 (file)
@@ -1,9 +1,9 @@
-local function check_tool(groups, old_best_time)
-       local toolcaps = minetest.localplayer:get_wielded_item():get_tool_capabilities()
+local function check_tool(stack, node_groups, old_best_time)
+       local toolcaps = stack:get_tool_capabilities()
        if not toolcaps then return end
        local best_time = old_best_time
        for group, groupdef in pairs(toolcaps.groupcaps) do
-               local level = groups[group]
+               local level = node_groups[group]
                if level then
                        local this_time = groupdef.times[level]
                        if this_time < best_time then
@@ -17,14 +17,16 @@ end
 minetest.register_on_punchnode(function(pos, node)
        if not minetest.settings:get_bool("autotool") then return end
        local player = minetest.localplayer
-       local groups = minetest.get_node_def(node.name).groups
+       local inventory = minetest.get_inventory("current_player")
+       local node_groups = minetest.get_node_def(node.name).groups
        local new_index = player:get_wield_index()
-       local better, best = check_tool(groups, math.huge)
-       for i = 0, 35 do
-               player:set_wield_index(i)
-               better, best = check_tool(groups, best)
-               if better then
-                       new_index = i
+       local is_better, best_time = false, math.huge
+       is_better, best_time = check_tool(player:get_wielded_item(), node_groups, best_time)
+       is_better, best_time = check_tool(inventory.hand[1], node_groups, best_time)
+       for index, stack in pairs(inventory.main) do
+               is_better, best_time = check_tool(stack, node_groups, best_time)
+               if is_better then
+                       new_index = index - 1
                end
        end
        player:set_wield_index(new_index)