From 3a77d1dd8e8929ff07fd1bdaf0a180c03ee128e4 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Wed, 29 Mar 2017 16:54:38 -0400 Subject: if an item should reverse dir (e.g. full destination), and it's not going back into a tube, reject it and pop out as an item --- item_transport.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'item_transport.lua') diff --git a/item_transport.lua b/item_transport.lua index c89eaf5..e906387 100644 --- a/item_transport.lua +++ b/item_transport.lua @@ -251,8 +251,8 @@ luaentity.register_entity("pipeworks:tubed_item", { local rev_node = minetest.get_node(vector.round(vector.add(self.start_pos,rev_dir))) local tube_present = minetest.get_item_group(rev_node.name,"tubedevice") == 1 if not found_next then + local drop_pos = minetest.find_node_near(vector.add(self.start_pos, velocity), 1, "air") if pipeworks.drop_on_routing_fail or not tube_present then - drop_pos = minetest.find_node_near(vector.add(self.start_pos, velocity), 1, "air") if drop_pos then -- Using add_item instead of item_drop since this makes pipeworks backward -- compatible with Minetest 0.4.13. @@ -262,9 +262,17 @@ luaentity.register_entity("pipeworks:tubed_item", { return end else - print("[Pipeworks] Warning - tubed item had to reverse direction at "..minetest.pos_to_string(self.start_pos)) - velocity = vector.multiply(velocity, -1) - self:setvelocity(velocity) + if minetest.get_item_group(rev_node.name,"tube") == 1 then + print("[Pipeworks] Warning - tubed item had to reverse direction at "..minetest.pos_to_string(self.start_pos)) + velocity = vector.multiply(velocity, -1) + self:setvelocity(velocity) + else + if drop_pos then + minetest.add_item(drop_pos, stack) + self:remove() + return + end + end end end -- cgit v1.2.3