summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeija <jeija@mesecons.net>2014-11-22 16:00:49 +0100
committerJeija <jeija@mesecons.net>2014-11-22 16:00:49 +0100
commit29dc50057c5f82d018c52df6250a0097ccb50e43 (patch)
tree7e05bb8784dc8937778cb919f68461eefc70b639
parent5be179bf110b44bdc06df6dbfde4e61487cf0635 (diff)
downloadmesecons-29dc50057c5f82d018c52df6250a0097ccb50e43.tar
mesecons-29dc50057c5f82d018c52df6250a0097ccb50e43.tar.gz
mesecons-29dc50057c5f82d018c52df6250a0097ccb50e43.tar.bz2
mesecons-29dc50057c5f82d018c52df6250a0097ccb50e43.tar.xz
mesecons-29dc50057c5f82d018c52df6250a0097ccb50e43.zip
Fix bug in mesecon.mergetable that caused false rules
-rw-r--r--mesecons/util.lua5
-rw-r--r--mesecons_receiver/init.lua16
2 files changed, 10 insertions, 11 deletions
diff --git a/mesecons/util.lua b/mesecons/util.lua
index 281997a..5549325 100644
--- a/mesecons/util.lua
+++ b/mesecons/util.lua
@@ -194,13 +194,14 @@ function mesecon.cmpAny(t1, t2)
return true
end
--- does not overwrite values
+-- does not overwrite values; number keys (ipairs) are appended, not overwritten
mesecon.mergetable = function(source, dest)
for k, v in pairs(source) do
dest[k] = dest[k] or v
end
+
for i, v in ipairs(source) do
- dest[i] = dest[i] or v
+ table.insert(dest, v)
end
end
diff --git a/mesecons_receiver/init.lua b/mesecons_receiver/init.lua
index c2d973e..b06baa5 100644
--- a/mesecons_receiver/init.lua
+++ b/mesecons_receiver/init.lua
@@ -91,10 +91,9 @@ function mesecon.receiver_get_pos_from_rcpt(pos, param2)
elseif param2 == 0 then
rules = mesecon.rotate_rules_right(rules)
end
- np = {
- x = pos.x + rules[1].x,
- y = pos.y + rules[1].y,
- z = pos.z + rules[1].z}
+ local np = { x = pos.x + rules[1].x,
+ y = pos.y + rules[1].y,
+ z = pos.z + rules[1].z}
return np
end
@@ -141,16 +140,15 @@ end)
minetest.register_on_placenode(function (pos, node)
if string.find(node.name, "mesecons:wire_") ~=nil then
- rules = { {x = 2, y = 0, z = 0},
+ local rules = { {x = 2, y = 0, z = 0},
{x =-2, y = 0, z = 0},
{x = 0, y = 0, z = 2},
{x = 0, y = 0, z =-2}}
local i = 1
while rules[i] ~= nil do
- np = {
- x = pos.x + rules[i].x,
- y = pos.y + rules[i].y,
- z = pos.z + rules[i].z}
+ local np = { x = pos.x + rules[i].x,
+ y = pos.y + rules[i].y,
+ z = pos.z + rules[i].z}
if minetest.get_item_group(minetest.get_node(np).name, "mesecon_needs_receiver") == 1 then
mesecon.receiver_place(np)
end