Force-call on_place callbacks when placing door
This commit is contained in:
parent
22fe1945ef
commit
54bb6b707a
|
@ -1,3 +1,25 @@
|
||||||
|
-- This helper function calls on_place_node callbacks.
|
||||||
|
local function on_place_node(place_to, newnode,
|
||||||
|
placer, oldnode, itemstack, pointed_thing)
|
||||||
|
-- Run script hook
|
||||||
|
for _, callback in ipairs(minetest.registered_on_placenodes) do
|
||||||
|
-- Deep-copy 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
|
||||||
|
|
||||||
-- Registers a door
|
-- Registers a door
|
||||||
-- name: The name of the door
|
-- name: The name of the door
|
||||||
-- def: a table with the folowing fields:
|
-- def: a table with the folowing fields:
|
||||||
|
@ -138,6 +160,10 @@ function mcl_doors:register_door(name, def)
|
||||||
if not minetest.settings:get_bool("creative_mode") then
|
if not minetest.settings:get_bool("creative_mode") then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
on_place_node(pt, minetest.get_node(pt), placer, nu, itemstack, pointed_thing)
|
||||||
|
on_place_node(pt2, minetest.get_node(pt2), placer, minetest.get_node({x=ptu.x,y=ptu.y+1,z=ptu.z}), itemstack, pointed_thing)
|
||||||
|
|
||||||
return itemstack
|
return itemstack
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user