forked from minetest-mods/mesecons
39 lines
920 B
Lua
39 lines
920 B
Lua
function mesecon:swap_node(pos, name)
|
|
local node = minetest.env:get_node(pos)
|
|
local data = minetest.env:get_meta(pos):to_table()
|
|
node.name = name
|
|
minetest.env:add_node(pos, node)
|
|
minetest.env:get_meta(pos):from_table(data)
|
|
end
|
|
|
|
function mesecon:move_node(pos, newpos)
|
|
local node = minetest.env:get_node(pos)
|
|
local meta = minetest.env:get_meta(pos):to_table()
|
|
minetest.env:remove_node(pos)
|
|
minetest.env:add_node(newpos, node)
|
|
minetest.env:get_meta(pos):from_table(meta)
|
|
end
|
|
|
|
|
|
function mesecon:addPosRule(p, r)
|
|
return {x = p.x + r.x, y = p.y + r.y, z = p.z + r.z}
|
|
end
|
|
|
|
function mesecon:cmpPos(p1, p2)
|
|
return (p1.x == p2.x and p1.y == p2.y and p1.z == p2.z)
|
|
end
|
|
|
|
function mesecon:tablecopy(table) -- deep table copy
|
|
local newtable = {}
|
|
|
|
for idx, item in pairs(table) do
|
|
if type(item) == "table" then
|
|
newtable[idx] = mesecon:tablecopy(item)
|
|
else
|
|
newtable[idx] = item
|
|
end
|
|
end
|
|
|
|
return newtable
|
|
end
|