]> git.lizzy.rs Git - invutil.git/blob - init.lua
Fix weird behavior and performace impact of AutoRefill
[invutil.git] / init.lua
1 local etime = 0
2
3 minetest.register_globalstep(function(dtime)
4         local player = minetest.localplayer
5         if not player then return end
6         local item = player:get_wielded_item()
7         local itemname = item:get_name()
8         local itemdef = minetest.get_item_def(itemname)
9         local wieldindex = player:get_wield_index()
10         etime = etime + dtime
11         if minetest.settings:get_bool("autorefill") and itemname ~= "" and itemdef and etime > 0.1 then
12                 etime = 0
13                 local space = item:get_free_space()
14                 local i = minetest.find_item(item:get_name(), wieldindex + 1)
15                 if i and space > 0 then
16                         local invact = InventoryAction("move")
17                         invact:to("current_player", "main", wieldindex)
18                         invact:from("current_player", "main", i)
19                         invact:set_count(space)
20                         invact:apply()
21                 end
22         end
23         if minetest.settings:get_bool("autoeject") then
24                 local invact = InventoryAction("drop")
25                 local list = (minetest.settings:get("eject_items") or ""):split(",")
26                 local inventory = minetest.get_inventory("current_player")
27                 for index, stack in pairs(inventory.main) do
28                         if table.indexof(list, stack:get_name()) ~= -1 then
29                                 invact:from("current_player", "main", index)
30                                 invact:apply()
31                         end
32                 end
33         end
34 end)
35
36 minetest.register_list_command("eject", "Configure AutoEject", "eject_items")
37
38 minetest.register_cheat("AutoRefill", "Inventory", "autorefill")
39 minetest.register_cheat("AutoEject", "Inventory", "autoeject")