core.spawn_falling_node: Keep metadata (#7476)

This commit is contained in:
SmallJoker 2018-07-09 23:33:21 +02:00 committed by Loïc Blot
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