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 |
|