summaryrefslogtreecommitdiff
path: root/builtin/item.lua
diff options
context:
space:
mode:
authorShadowNinja <shadowninja@minetest.net>2014-01-21 22:05:29 -0500
committerShadowNinja <shadowninja@minetest.net>2014-01-21 22:06:40 -0500
commit1b5b6fe6929404ae416ac33c31df7d795d444614 (patch)
tree5f308b52ccfadaefada887c3f16dfdf7635a2f79 /builtin/item.lua
parent057858ddda76d1f674667e024f388c56ae2e11a2 (diff)
downloadminetest-1b5b6fe6929404ae416ac33c31df7d795d444614.tar.gz
minetest-1b5b6fe6929404ae416ac33c31df7d795d444614.tar.bz2
minetest-1b5b6fe6929404ae416ac33c31df7d795d444614.zip
Add pointed_thing to minetest.register_on_placenode
As suggested by qwrwed.
Diffstat (limited to 'builtin/item.lua')
-rw-r--r--builtin/item.lua15
1 files changed, 13 insertions, 2 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