forked from Mirrorlandia_minetest/minetest
core.spawn_falling_node: Keep metadata (#7476)
This commit is contained in:
parent
498078bfa0
commit
0cf36454d6
@ -132,11 +132,18 @@ core.register_entity(":__builtin:falling_node", {
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
local function spawn_falling_node(p, node, meta)
|
local function convert_to_falling_node(pos, node)
|
||||||
local obj = core.add_entity(p, "__builtin:falling_node")
|
local obj = core.add_entity(pos, "__builtin:falling_node")
|
||||||
if obj then
|
if not obj then
|
||||||
obj:get_luaentity():set_node(node, meta)
|
return false
|
||||||
end
|
end
|
||||||
|
node.level = core.get_node_level(pos)
|
||||||
|
local meta = core.get_meta(pos)
|
||||||
|
local metatable = meta and meta:to_table() or {}
|
||||||
|
|
||||||
|
obj:get_luaentity():set_node(node, metatable)
|
||||||
|
core.remove_node(pos)
|
||||||
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function core.spawn_falling_node(pos)
|
function core.spawn_falling_node(pos)
|
||||||
@ -144,13 +151,7 @@ function core.spawn_falling_node(pos)
|
|||||||
if node.name == "air" or node.name == "ignore" then
|
if node.name == "air" or node.name == "ignore" then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
local obj = core.add_entity(pos, "__builtin:falling_node")
|
return convert_to_falling_node(pos, node)
|
||||||
if obj then
|
|
||||||
obj:get_luaentity():set_node(node)
|
|
||||||
core.remove_node(pos)
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
return false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function drop_attached_node(p)
|
local function drop_attached_node(p)
|
||||||
@ -223,14 +224,7 @@ function core.check_single_for_falling(p)
|
|||||||
core.get_node_max_level(p_bottom))) and
|
core.get_node_max_level(p_bottom))) and
|
||||||
|
|
||||||
(not d_bottom.walkable or d_bottom.buildable_to) then
|
(not d_bottom.walkable or d_bottom.buildable_to) then
|
||||||
n.level = core.get_node_level(p)
|
convert_to_falling_node(p, n)
|
||||||
local meta = core.get_meta(p)
|
|
||||||
local metatable = {}
|
|
||||||
if meta ~= nil then
|
|
||||||
metatable = meta:to_table()
|
|
||||||
end
|
|
||||||
core.remove_node(p)
|
|
||||||
spawn_falling_node(p, n, metatable)
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user