From 1b5b6fe6929404ae416ac33c31df7d795d444614 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Tue, 21 Jan 2014 22:05:29 -0500 Subject: [PATCH] Add pointed_thing to minetest.register_on_placenode As suggested by qwrwed. --- builtin/item.lua | 15 +++++++++++++-- doc/lua_api.txt | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/builtin/item.lua b/builtin/item.lua index 8c0c0ed31..7a6bb6cf5 100644 --- a/builtin/item.lua +++ b/builtin/item.lua @@ -292,11 +292,22 @@ function minetest.item_place_node(itemstack, placer, pointed_thing, param2) -- Run script hook local _, callback 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 newnode_copy = {name=newnode.name, param1=newnode.param1, param2=newnode.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 end end diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 5552b3a31..4614ca062 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1202,7 +1202,7 @@ minetest.register_on_shutdown(func()) ^ WARNING: If the server terminates abnormally (i.e. crashes), the registered callbacks WILL LIKELY NOT BE RUN. Data should be saved at 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 ^ If return true no item is taken from itemstack ^ Not recommended; use on_construct or after_place_node in node definition