Make sure to erase signs, if creator removes them.

This works without needing to depend on `signs` here since
we call the embedded on_destruct. We leave other on_destruct
calls alone for now since we may want to retain the current
behavior where no triggers happen if you use this method of
replacing nodes in a puzzle, which is needed for several
puzzles I've made so far.
This commit is contained in:
Auke Kok 2017-12-22 22:23:10 -08:00
parent a62dded02d
commit bcbfe20bc2
2 changed files with 8 additions and 2 deletions

View File

@ -1053,6 +1053,12 @@ minetest.register_node("mech:node_creator", {
return return
end end
-- if erasing signs, we have to remove entities
local d2 = minetest.registered_nodes[minetest.get_node(p2).name]
if d2.groups and d2.groups.sign then
d2.on_destruct(p2)
end
local n2 = minetest.deserialize(meta:get_string("node")) local n2 = minetest.deserialize(meta:get_string("node"))
minetest.swap_node(p2, n2) minetest.swap_node(p2, n2)

View File

@ -122,7 +122,7 @@ minetest.register_node("signs:sign", {
inventory_image = "sign.png", inventory_image = "sign.png",
walkable = false, walkable = false,
tiles = {"itb_blank.png"}, tiles = {"itb_blank.png"},
groups = { node = 1 }, groups = { node = 1, sign = 1 },
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -211,7 +211,7 @@ minetest.register_node("signs:sign_wall", {
inventory_image = "sign.png", inventory_image = "sign.png",
walkable = false, walkable = false,
tiles = {"sign.png"}, tiles = {"sign.png"},
groups = { node = 1 }, groups = { node = 1, sign = 1 },
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {