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 | 
