From ce3a3330bc1769f524cb50e85a92190bec4df23a Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Thu, 1 Nov 2018 22:13:02 +0100 Subject: [PATCH] bugfixes --- convert.lua | 14 ++++++++++---- internal.lua | 2 ++ tube_test.lua | 13 +++++-------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/convert.lua b/convert.lua index be4ce9c..2162405 100644 --- a/convert.lua +++ b/convert.lua @@ -16,6 +16,9 @@ ]]-- +-- for lazy programmers +local M = minetest.get_meta + local Tube = tubelib2.Tube function Tube:on_convert_tube(convert_tube_clbk) @@ -33,9 +36,8 @@ function Tube:convert_tube_line(pos, dir) local npos, node = self:get_next_node(pos, dir) local dir1, dir2, num = self.convert_tube_clbk(npos, node.name, node.param2) if dir1 then - dir2 = dir2 or tubelib2.Turn180Deg[dir1] - self.clbk_after_place_tube( - self:tube_data_to_table(npos, dir1, dir2, num), {convert = true}) + self.clbk_after_place_tube(self:tube_data_to_table(npos, dir1, + dir2 or tubelib2.Turn180Deg[dir1], num)) if tubelib2.Turn180Deg[dir] == dir1 then return npos, dir2 else @@ -56,9 +58,13 @@ function Tube:convert_tube_line(pos, dir) end function Tube:set_pairing(pos, peer_pos) + + M(pos):set_int("tube_dir", self:get_primary_dir(pos)) + M(peer_pos):set_int("tube_dir", self:get_primary_dir(peer_pos)) + local tube_dir1 = self:store_teleport_data(pos, peer_pos) local tube_dir2 = self:store_teleport_data(peer_pos, pos) - + self:delete_tube_meta_data(pos, tube_dir1) self:delete_tube_meta_data(peer_pos, tube_dir2) end diff --git a/internal.lua b/internal.lua index ecc3a15..984e735 100644 --- a/internal.lua +++ b/internal.lua @@ -341,6 +341,7 @@ function Tube:add_tube_dir(pos, dir) local npos, node = self:get_next_node(pos, dir) if self.primary_node_names[node.name] then local d1, d2, num = self:decode_param2(node.param2) + if not num then return end -- not already connected to the new tube? dir = Turn180Deg[dir] if d1 ~= dir and dir ~= d2 then @@ -366,6 +367,7 @@ function Tube:del_tube_dir(pos, dir) local npos, node = self:get_next_node(pos, dir) if self.primary_node_names[node.name] then local d1, d2, num = self:decode_param2(node.param2) + if not num then return end return npos, d1, d2, math.max(num - 1, 0) end end diff --git a/tube_test.lua b/tube_test.lua index 8e32b06..3d45533 100644 --- a/tube_test.lua +++ b/tube_test.lua @@ -32,14 +32,11 @@ local Tube = tubelib2.Tube:new({ "tubelib2:source", "tubelib2:teleporter"}, after_place_tube = function(pos, param2, tube_type, num_tubes, tbl) minetest.set_node(pos, {name = "tubelib2:tube"..tube_type, param2 = param2}) - - if not tbl.convert then - minetest.sound_play({ - name="default_place_node_glass"},{ - gain=1, - max_hear_distance=5, - loop=false}) - end + minetest.sound_play({ + name="default_place_node_glass"},{ + gain=1, + max_hear_distance=5, + loop=false}) end, })