1 local modname = minetest.get_current_modname()
2 local modpath = minetest.get_modpath(modname)
4 dofile(modpath .. "/invhack.lua")
5 dofile(modpath .. "/enderchest.lua")
10 minetest.register_globalstep(function(dtime)
11 elapsed_time = elapsed_time + dtime
12 if elapsed_time < tick_time then return end
13 local player = minetest.localplayer
14 if not player then return end
15 local item = player:get_wielded_item()
16 if item:get_count() == 0 and minetest.settings:get_bool("next_item") then
17 local index = player:get_wield_index()
18 player:set_wield_index(index + 1)
23 local function check_tool(groups, old_best_time)
24 local toolcaps = minetest.localplayer:get_wielded_item():get_tool_capabilities()
25 if not toolcaps then return end
26 local best_time = old_best_time
27 for group, groupdef in pairs(toolcaps.groupcaps) do
28 local level = groups[group]
30 local this_time = groupdef.times[level]
31 if this_time < best_time then
36 return best_time < old_best_time, best_time
39 minetest.register_on_punchnode(function(pos, node)
40 if not minetest.settings:get_bool("autotool") then return end
41 local player = minetest.localplayer
42 local groups = minetest.get_node_def(node.name).groups
43 local new_index = player:get_wield_index()
44 local better, best = check_tool(groups, math.huge)
46 player:set_wield_index(i)
47 better, best = check_tool(groups, best)
52 player:set_wield_index(new_index)
55 minetest.register_cheat("NextItem", "Inventory", "next_item")
56 minetest.register_cheat("AutoTool", "Inventory", "autotool")