Add pointed_thing to minetest.register_on_placenode

As suggested by qwrwed.
stable-0.4
ShadowNinja 2014-01-21 22:05:29 -05:00
parent 057858ddda
commit 1b5b6fe692
2 changed files with 14 additions and 3 deletions

View File

@ -292,11 +292,22 @@ function minetest.item_place_node(itemstack, placer, pointed_thing, param2)
-- Run script hook -- Run script hook
local _, callback local _, callback
for _, callback in ipairs(minetest.registered_on_placenodes) do for _, callback in ipairs(minetest.registered_on_placenodes) do
-- Copy pos and node because callback can modify them -- Deepcopy pos, node and poined_thing because callback can modify them
local place_to_copy = {x=place_to.x, y=place_to.y, z=place_to.z} 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 newnode_copy = {name=newnode.name, param1=newnode.param1, param2=newnode.param2}
local oldnode_copy = {name=oldnode.name, param1=oldnode.param1, param2=oldnode.param2} local oldnode_copy = {name=oldnode.name, param1=oldnode.param1, param2=oldnode.param2}
if callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack) then local pointed_thing_copy = {
type = pointed_thing.type,
under = {
x = pointed_thing.under.x,
y = pointed_thing.under.y,
z = pointed_thing.under.z},
above = {
x = pointed_thing.above.x,
y = pointed_thing.above.y,
z = pointed_thing.above.z}
}
if callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack, poined_thing_copy) then
take_item = false take_item = false
end end
end end

View File

@ -1202,7 +1202,7 @@ minetest.register_on_shutdown(func())
^ WARNING: If the server terminates abnormally (i.e. crashes), the registered ^ WARNING: If the server terminates abnormally (i.e. crashes), the registered
callbacks WILL LIKELY NOT BE RUN. Data should be saved at callbacks WILL LIKELY NOT BE RUN. Data should be saved at
semi-frequent intervals as well as on server shutdown. semi-frequent intervals as well as on server shutdown.
minetest.register_on_placenode(func(pos, newnode, placer, oldnode, itemstack)) minetest.register_on_placenode(func(pos, newnode, placer, oldnode, itemstack, pointed_thing))
^ Called when a node has been placed ^ Called when a node has been placed
^ If return true no item is taken from itemstack ^ If return true no item is taken from itemstack
^ Not recommended; use on_construct or after_place_node in node definition ^ Not recommended; use on_construct or after_place_node in node definition