KaylebJay
2020-06-24 438c0877f6ed03a25211ce70e2edd26b01703a8c
commit | author | age
be2f30 1
S 2 local S = technic.getter
3
1a45ad 4 function technic.insert_object_unique_stack(pos, node, incoming_stack, direction)
SZ 5     local meta = minetest.get_meta(pos)
6     local inv = meta:get_inventory()
7     local incoming_name = incoming_stack:get_name()
8     local stack_index = nil
9     for inv_index, inv_stack in pairs(inv:get_list("src")) do
10         if inv_stack:get_name() == incoming_name then
11             stack_index = inv_index
12             break
13         end
14     end
15     if stack_index == nil then
16         return inv:add_item("src", incoming_stack)
17     end
18     local present_stack = inv:get_stack("src", stack_index)
19     local leftover = present_stack:add_item(incoming_stack)
20     inv:set_stack("src", stack_index, present_stack)
21     return leftover
22 end
23
24 function technic.can_insert_unique_stack(pos, node, incoming_stack, direction)
25     local meta = minetest.get_meta(pos)
26     local inv = meta:get_inventory()
27     local incoming_name = incoming_stack:get_name()
28     if meta:get_int("splitstacks") == 0 then
29         -- avoid looping second time with inv:contains_item("src", incoming_stack)
30         for _, inv_stack in pairs(inv:get_list("src")) do
31             if inv_stack:get_name() == incoming_name then
32                 return inv_stack:item_fits(incoming_stack)
33             end
34         end
35     end
36
37     return technic.default_can_insert(pos, node, incoming_stack, direction)
38 end
39
ee0765 40 function technic.register_alloy_furnace(data)
d55ecc 41     data.typename = "alloy"
N 42     data.machine_name = "alloy_furnace"
43     data.machine_desc = S("%s Alloy Furnace")
1a45ad 44
SZ 45     data.insert_object = technic.insert_object_unique_stack
46     data.can_insert = technic.can_insert_unique_stack
47
d55ecc 48     technic.register_base_machine(data)
N 49 end
ee0765 50