diff options
Diffstat (limited to 'clientmods/inventory/init.lua')
-rw-r--r-- | clientmods/inventory/init.lua | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/clientmods/inventory/init.lua b/clientmods/inventory/init.lua new file mode 100644 index 000000000..5050fbe8b --- /dev/null +++ b/clientmods/inventory/init.lua @@ -0,0 +1,56 @@ +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +dofile(modpath .. "/invhack.lua") +dofile(modpath .. "/enderchest.lua") + +local elapsed_time = 0 +local tick_time = 0.05 + +minetest.register_globalstep(function(dtime) + elapsed_time = elapsed_time + dtime + if elapsed_time < tick_time then return end + local player = minetest.localplayer + if not player then return end + local item = player:get_wielded_item() + if item:get_count() == 0 and minetest.settings:get_bool("next_item") then + local index = player:get_wield_index() + player:set_wield_index(index + 1) + end + elapsed_time = 0 +end) + +local function check_tool(groups, old_best_time) + local toolcaps = minetest.localplayer:get_wielded_item():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] + if level then + local this_time = groupdef.times[level] + if this_time < best_time then + best_time = this_time + end + end + end + return best_time < old_best_time, best_time +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 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 + end + end + player:set_wield_index(new_index) +end) + +minetest.register_cheat("NextItem", "Inventory", "next_item") +minetest.register_cheat("AutoTool", "Inventory", "autotool") |