summaryrefslogtreecommitdiff
path: root/pipeworks/item_transport.lua
diff options
context:
space:
mode:
authorVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-04-05 00:23:23 -0400
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>2017-04-05 00:23:23 -0400
commit4c9e8e6bf06b09b3a015bd7d76ea2a8966e0336f (patch)
treeda4748ec4655a0fc2dc40e777cc8cab88c863caa /pipeworks/item_transport.lua
parent8958d6176121ecdf4f6786f4adddf194e7abe9e9 (diff)
downloaddreambuilder_modpack-4c9e8e6bf06b09b3a015bd7d76ea2a8966e0336f.tar
dreambuilder_modpack-4c9e8e6bf06b09b3a015bd7d76ea2a8966e0336f.tar.gz
dreambuilder_modpack-4c9e8e6bf06b09b3a015bd7d76ea2a8966e0336f.tar.bz2
dreambuilder_modpack-4c9e8e6bf06b09b3a015bd7d76ea2a8966e0336f.tar.xz
dreambuilder_modpack-4c9e8e6bf06b09b3a015bd7d76ea2a8966e0336f.zip
update areasprotector mod, pipeworks, technic
Diffstat (limited to 'pipeworks/item_transport.lua')
-rw-r--r--pipeworks/item_transport.lua25
1 files changed, 23 insertions, 2 deletions
diff --git a/pipeworks/item_transport.lua b/pipeworks/item_transport.lua
index e906387..88df0d2 100644
--- a/pipeworks/item_transport.lua
+++ b/pipeworks/item_transport.lua
@@ -1,3 +1,6 @@
+local luaentity = pipeworks.luaentity
+local max_tube_limit = minetest.setting_get("pipeworks_max_tube_limit") or 30
+
function pipeworks.tube_item(pos, item)
error("obsolete pipeworks.tube_item() called; change caller to use pipeworks.tube_inject_item() instead")
end
@@ -29,6 +32,9 @@ function pipeworks.notvel(tbl, vel)
return tbl2
end
+local tube_last_times = {}
+local tube_item_count = {}
+
local function go_next(pos, velocity, stack)
local next_positions = {}
local max_priority = 0
@@ -55,7 +61,7 @@ local function go_next(pos, velocity, stack)
end
for _, vect in ipairs(can_go) do
local npos = vector.add(pos, vect)
- minetest.load_position(npos)
+ pipeworks.load_position(npos)
local node = minetest.get_node(npos)
local reg_node = minetest.registered_nodes[node.name]
if reg_node then
@@ -75,6 +81,21 @@ local function go_next(pos, velocity, stack)
end
end
+ local gt = minetest.get_gametime()
+ local h = minetest.hash_node_position(pos)
+ if tube_last_times[h] == gt then
+ local k = tube_item_count[h] or 0
+ if k > max_tube_limit then
+ -- Kill tube
+ minetest.swap_node(pos, {name = "pipeworks:broken_tube_1"})
+ pipeworks.scan_for_tube_objects(pos)
+ end
+ tube_item_count[h] = k + 1
+ else
+ tube_last_times[h] = gt
+ tube_item_count[h] = 1
+ end
+
if not next_positions[1] then
return false, nil
end
@@ -225,7 +246,7 @@ luaentity.register_entity("pipeworks:tubed_item", {
moved = true
end
- minetest.load_position(self.start_pos)
+ pipeworks.load_position(self.start_pos)
local node = minetest.get_node(self.start_pos)
if moved and minetest.get_item_group(node.name, "tubedevice_receiver") == 1 then
local leftover