summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deployer.lua20
-rw-r--r--node_breaker.lua24
2 files changed, 20 insertions, 24 deletions
diff --git a/deployer.lua b/deployer.lua
index f5f8171..e67250c 100644
--- a/deployer.lua
+++ b/deployer.lua
@@ -66,33 +66,29 @@ minetest.register_craft({
}
})
-local function hacky_swap_node(pos,name)
- local node=minetest.get_node(pos)
- local meta=minetest.get_meta(pos)
- local meta0=meta:to_table()
+local function swap_node(pos, name)
+ local node = minetest.get_node(pos)
if node.name == name then
return
end
- node.name=name
- minetest.add_node(pos, node)
- local meta=minetest.get_meta(pos)
- meta:from_table(meta0)
+ node.name = name
+ minetest.swap_node(pos, node)
end
local function delay(x)
return (function() return x end)
end
-local deployer_on = function(pos, node)
+local function deployer_on(pos, node)
if node.name ~= "pipeworks:deployer_off" then
return
end
--locate the above and under positions
local dir = minetest.facedir_to_dir(node.param2)
- local pos_under, pos_above = {x=pos.x - dir.x, y=pos.y - dir.y, z=pos.z - dir.z}, {x=pos.x - 2*dir.x, y=pos.y - 2*dir.y, z=pos.z - 2*dir.z}
+ local pos_under, pos_above = {x = pos.x - dir.x, y = pos.y - dir.y, z = pos.z - dir.z}, {x = pos.x - 2*dir.x, y = pos.y - 2*dir.y, z = pos.z - 2*dir.z}
- hacky_swap_node(pos,"pipeworks:deployer_on")
+ swap_node(pos, "pipeworks:deployer_on")
nodeupdate(pos)
local meta = minetest.get_meta(pos)
@@ -163,7 +159,7 @@ end
local deployer_off = function(pos, node)
if node.name == "pipeworks:deployer_on" then
- hacky_swap_node(pos,"pipeworks:deployer_off")
+ swap_node(pos, "pipeworks:deployer_off")
nodeupdate(pos)
end
end
diff --git a/node_breaker.lua b/node_breaker.lua
index 077c413..17e0475 100644
--- a/node_breaker.lua
+++ b/node_breaker.lua
@@ -14,17 +14,13 @@ minetest.register_craft({
}
})
-local function hacky_swap_node(pos,name)
- local node=minetest.get_node(pos)
- local meta=minetest.get_meta(pos)
- local meta0=meta:to_table()
+local function swap_node(pos, name)
+ local node = minetest.get_node(pos)
if node.name == name then
return
end
- node.name=name
- minetest.add_node(pos, node)
- local meta=minetest.get_meta(pos)
- meta:from_table(meta0)
+ node.name = name
+ minetest.swap_node(pos, node)
end
--define the functions from https://github.com/minetest/minetest/pull/834 while waiting for the devs to notice it
@@ -91,7 +87,6 @@ local function break_node (pos, facedir)
local vel = minetest.facedir_to_dir(facedir);
local front = {x=pos.x - vel.x, y=pos.y - vel.y, z=pos.z - vel.z}
- local back = {x=pos.x + vel.x, y=pos.y + vel.y, z=pos.z + vel.z}
local node = minetest.get_node(front)
if node.name == "air" or node.name == "ignore" then
@@ -168,6 +163,11 @@ local function break_node (pos, facedir)
item1:setacceleration({x=0, y=0, z=0})
end
+ local oldmetadata = nil
+ if def.after_dig_node then
+ oldmetadata = minetest.get_meta(front):to_table()
+ end
+
minetest.remove_node(front)
--handle post-digging callback
@@ -189,15 +189,15 @@ end
local node_breaker_on = function(pos, node)
if node.name == "pipeworks:nodebreaker_off" then
- hacky_swap_node(pos,"pipeworks:nodebreaker_on")
- break_node(pos,node.param2)
+ swap_node(pos, "pipeworks:nodebreaker_on")
+ break_node(pos, node.param2)
nodeupdate(pos)
end
end
local node_breaker_off = function(pos, node)
if node.name == "pipeworks:nodebreaker_on" then
- hacky_swap_node(pos,"pipeworks:nodebreaker_off")
+ swap_node(pos, "pipeworks:nodebreaker_off")
nodeupdate(pos)
end
end