summaryrefslogtreecommitdiff
path: root/item_transport.lua
diff options
context:
space:
mode:
Diffstat (limited to 'item_transport.lua')
-rw-r--r--item_transport.lua16
1 files changed, 13 insertions, 3 deletions
diff --git a/item_transport.lua b/item_transport.lua
index b97d5bb..1e698bf 100644
--- a/item_transport.lua
+++ b/item_transport.lua
@@ -130,20 +130,30 @@ minetest.register_node("pipeworks:filter", {
if not (tube and tube.input_inventory) then
return
end
+ if tube.before_filter then
+ tube.before_filter(frompos)
+ end
local frommeta = minetest.get_meta(frompos)
local frominvname = tube.input_inventory
local frominv = frommeta:get_inventory()
local sname
+ local fired = false
for _,filter in ipairs(inv:get_list("main")) do
sname = filter:get_name()
if sname ~= "" then
-- XXX: that's a lot of parameters
- if grabAndFire(frominv, frominvname, frompos, fromnode, sname, tube, idef, dir) then return end
+ if grabAndFire(frominv, frominvname, frompos, fromnode, sname, tube, idef, dir) then
+ fired = true
+ break
+ end
end
end
- if inv:is_empty("main") then
+ if not fired and inv:is_empty("main") then
grabAndFire(frominv,frominvname,frompos,fromnode,nil,tube,idef,dir)
end
+ if tube.after_filter then
+ tube.after_filter(frompos)
+ end
end,
})
@@ -208,7 +218,7 @@ minetest.register_node("pipeworks:mese_filter", {
end
end
if inv:is_empty("main") then
- grabAndFire(frominv, frominvname, frompos, fromnode, nil, tube, idef, dir, true)
+ grabAndFire(frominv, frominvname, frompos, fromnode, nil, tube, idef, dir, true)
end
end,
})