summaryrefslogtreecommitdiff
path: root/pipeworks/item_transport.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-03-04 23:58:38 -0500
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-03-04 23:58:38 -0500
commita46f07cbfbd9ae59b7b1cc2fc32f68c39ae34de0 (patch)
tree5358ecc88cd634e7277bf04e51be8e9ddd37b2aa /pipeworks/item_transport.lua
parent3eb0b959da58a153e4b9fc7f70eb513b1cf0e5fd (diff)
downloaddreambuilder_modpack-a46f07cbfbd9ae59b7b1cc2fc32f68c39ae34de0.tar
dreambuilder_modpack-a46f07cbfbd9ae59b7b1cc2fc32f68c39ae34de0.tar.gz
dreambuilder_modpack-a46f07cbfbd9ae59b7b1cc2fc32f68c39ae34de0.tar.bz2
dreambuilder_modpack-a46f07cbfbd9ae59b7b1cc2fc32f68c39ae34de0.tar.xz
dreambuilder_modpack-a46f07cbfbd9ae59b7b1cc2fc32f68c39ae34de0.zip
updated digilines, framedglass, mesecons, pipeworks, quartz
technic, unifiedinventory, and unifiedbricks
Diffstat (limited to 'pipeworks/item_transport.lua')
-rw-r--r--pipeworks/item_transport.lua25
1 files changed, 17 insertions, 8 deletions
diff --git a/pipeworks/item_transport.lua b/pipeworks/item_transport.lua
index ee17611..ab1ce55 100644
--- a/pipeworks/item_transport.lua
+++ b/pipeworks/item_transport.lua
@@ -246,15 +246,24 @@ luaentity.register_entity("pipeworks:tubed_item", {
if moved then
local found_next, new_velocity = go_next(self.start_pos, velocity, stack) -- todo: color
+ local rev_vel = vector.multiply(velocity, -1)
+ local rev_dir = vector.direction(self.start_pos,vector.add(self.start_pos,rev_vel))
+ 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
- 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.
- -- Using item_drop here makes Minetest 0.4.13 crash.
- minetest.add_item(drop_pos, stack)
- self:remove()
- return
+ 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.
+ -- Using item_drop here makes Minetest 0.4.13 crash.
+ minetest.add_item(drop_pos, stack)
+ self:remove()
+ return
+ end
+ else
+ velocity = vector.multiply(velocity, -1)
+ self:setvelocity(velocity)
end
end