diff options
-rw-r--r-- | sorting_tubes.lua | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/sorting_tubes.lua b/sorting_tubes.lua index 84a2306..8c1d49e 100644 --- a/sorting_tubes.lua +++ b/sorting_tubes.lua @@ -52,22 +52,29 @@ if pipeworks.enable_mese_tube then local inv = meta:get_inventory() local name = stack:get_name() for i, vect in ipairs(pipeworks.meseadjlist) do - if meta:get_int("l"..i.."s") == 1 then - local invname = "line"..i - local is_empty = true - for _, st in ipairs(inv:get_list(invname)) do - if not st:is_empty() then - is_empty = false - if st:get_name() == name then - foundn = foundn + 1 - found[foundn] = vect - end - end - end - if is_empty then - tbln = tbln + 1 - tbl[tbln] = vect - end + local npos = vector.add(pos, vect) + local node = minetest.get_node(npos) + local reg_node = minetest.registered_nodes[node.name] + if meta:get_int("l"..i.."s") == 1 and reg_node then + local tube_def = reg_node.tube + if not tube_def or not tube_def.can_insert or + tube_def.can_insert(npos, node, stack, vect) then + local invname = "line"..i + local is_empty = true + for _, st in ipairs(inv:get_list(invname)) do + if not st:is_empty() then + is_empty = false + if st:get_name() == name then + foundn = foundn + 1 + found[foundn] = vect + end + end + end + if is_empty then + tbln = tbln + 1 + tbl[tbln] = vect + end + end end end return (foundn > 0) and found or tbl |