]> git.lizzy.rs Git - dragonfireclient.git/blob - clientmods/inventory/init.lua
UI Update; Added AutoTool
[dragonfireclient.git] / clientmods / inventory / init.lua
1 local modname = minetest.get_current_modname()
2 local modpath = minetest.get_modpath(modname)
3
4 dofile(modpath .. "/invhack.lua") 
5 dofile(modpath .. "/enderchest.lua") 
6
7 local elapsed_time = 0
8 local tick_time = 0.05
9
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)
19         end
20         elapsed_time = 0
21 end)
22
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]
29                 if level then
30                         local this_time = groupdef.times[level]
31                         if this_time < best_time then
32                                 best_time = this_time
33                         end
34                 end
35         end
36         return best_time < old_best_time, best_time
37 end
38
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)
45         for i = 0, 35 do
46                 player:set_wield_index(i)
47                 better, best = check_tool(groups, best)
48                 if better then
49                         new_index = i
50                 end
51         end
52         player:set_wield_index(new_index)
53 end)
54
55 minetest.register_cheat("NextItem", "Inventory", "next_item")
56 minetest.register_cheat("AutoTool", "Inventory", "autotool")