diff --git a/mods/doors/init.lua b/mods/doors/init.lua index f6808974..5a27459c 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -154,6 +154,25 @@ function _doors.door_toggle(pos, clicker) return true end + +local function on_place_node(place_to, newnode, placer, oldnode, itemstack, pointed_thing) + -- Run script hook + local _, callback + for _, callback in ipairs(core.registered_on_placenodes) do + -- Deepcopy pos, node and pointed_thing because callback can modify them + local place_to_copy = {x = place_to.x, y = place_to.y, z = place_to.z} + local newnode_copy = {name = newnode.name, param1 = newnode.param1, param2 = newnode.param2} + local oldnode_copy = {name = oldnode.name, param1 = oldnode.param1, param2 = oldnode.param2} + local pointed_thing_copy = { + type = pointed_thing.type, + above = vector.new(pointed_thing.above), + under = vector.new(pointed_thing.under), + ref = pointed_thing.ref, + } + callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack, pointed_thing_copy) + end +end + function doors.register(name, def) -- replace old doors of this type automatically minetest.register_abm({ @@ -249,6 +268,8 @@ function doors.register(name, def) itemstack:take_item() end + on_place_node(pos, minetest.get_node(pos), placer, node, itemstack, pointed_thing) + return itemstack end })