incrementaltp: respect physics overrides
[waspsaliva.git] / clientmods / autoeat / init.lua
blob32e026c1bcbcc05ca734234a98abeb60b96bded6
1 autoeat = {}
2 autoeat.lock = false
4 local autodupe = false --rawget(_G, "autodupe")
5 local hud_id = nil
7 local function get_float(name, default)
8 return tonumber(minetest.settings:get("autoeat_" .. name) or "") or default
9 end
11 local etime = 0
13 function autoeat.eat()
14 local food_index
15 local food_count = 0
16 for index, stack in pairs(minetest.get_inventory("current_player").main) do
17 local stackname = stack:get_name()
18 if stackname ~= "" then
19 local def = minetest.get_item_def(stackname)
20 if def and def.groups.food then
21 food_count = food_count + 1
22 if food_index then
23 break
24 end
25 food_index = index
26 end
27 end
28 end
29 if food_index then
30 if food_count == 1 and autodupe then
31 --autodupe.needed(food_index)
32 autoeat.lock = true
33 else
34 local player = minetest.localplayer
35 local old_index = player:get_wield_index()
36 player:set_wield_index(food_index)
37 --minetest.interact("activate", {type = "nothing"})
38 minetest.place_node(minetest.localplayer:get_pos())
39 player:set_wield_index(old_index)
40 autoeat.lock = false
41 end
42 end
43 end
45 function autoeat.get_hunger()
46 if hud_id then
47 return minetest.localplayer:hud_get(hud_id).number
48 else
49 return 20
50 end
51 end
53 minetest.register_globalstep(function(dtime)
54 if not minetest.localplayer then return end
55 etime = etime + dtime
56 if autoeat.lock or minetest.settings:get_bool("autoeat") and etime >= get_float("cooldown", 0.5) and autoeat.get_hunger() < get_float("hunger", 9) then
57 etime = 0
58 autoeat.eat()
59 end
60 end)
61 local function get_hud()
62 local player = minetest.localplayer
63 local def
64 local i = -1
65 if not player then minetest.after(5,get_hud) return end
66 repeat
67 i = i + 1
68 def = player:hud_get(i)
69 until not def or def.text == "hbhunger_icon.png"
70 if def then
71 hud_id = i
72 end
73 end
74 minetest.after(15,get_hud )
76 minetest.register_cheat("AutoEat", "Player", "autoeat")