Deepcopy pointed_thing for after_place_node, give it to on_rightclick too.
parent
3bbd280336
commit
e21b29f422
|
@ -270,12 +270,18 @@ function minetest.item_place_node(itemstack, placer, pointed_thing, param2)
|
||||||
|
|
||||||
-- Run callback
|
-- Run callback
|
||||||
if def.after_place_node then
|
if def.after_place_node then
|
||||||
-- Copy place_to because callback can modify it
|
-- Deepcopy place_to and pointed_thing because callback can modify it
|
||||||
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 pointed_thing_copy = {
|
local pointed_thing_copy = {
|
||||||
type = pointed_thing.type,
|
type = pointed_thing.type,
|
||||||
under = pointed_thing.under,
|
under = {
|
||||||
above = pointed_thing.above
|
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 def.after_place_node(place_to_copy, placer, itemstack,
|
if def.after_place_node(place_to_copy, placer, itemstack,
|
||||||
pointed_thing_copy) then
|
pointed_thing_copy) then
|
||||||
|
@ -317,7 +323,8 @@ function minetest.item_place(itemstack, placer, pointed_thing, param2)
|
||||||
local n = minetest.get_node(pointed_thing.under)
|
local n = minetest.get_node(pointed_thing.under)
|
||||||
local nn = n.name
|
local nn = n.name
|
||||||
if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
|
if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
|
||||||
return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n, placer, itemstack) or itemstack, false
|
return minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n,
|
||||||
|
placer, itemstack, pointed_thing) or itemstack, false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -278,7 +278,7 @@ if minetest then
|
||||||
local undef = minetest.registered_nodes[unode.name]
|
local undef = minetest.registered_nodes[unode.name]
|
||||||
if undef and undef.on_rightclick then
|
if undef and undef.on_rightclick then
|
||||||
undef.on_rightclick(pointed_thing.under, node, placer,
|
undef.on_rightclick(pointed_thing.under, node, placer,
|
||||||
itemstack)
|
itemstack, pointed_thing)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local pitch = placer:get_look_pitch()
|
local pitch = placer:get_look_pitch()
|
||||||
|
|
|
@ -2205,10 +2205,12 @@ Node definition (register_node)
|
||||||
on_punch = func(pos, node, puncher),
|
on_punch = func(pos, node, puncher),
|
||||||
^ default: minetest.node_punch
|
^ default: minetest.node_punch
|
||||||
^ By default: does nothing
|
^ By default: does nothing
|
||||||
on_rightclick = func(pos, node, clicker, itemstack),
|
on_rightclick = func(pos, node, clicker, itemstack, pointed_thing),
|
||||||
^ default: nil
|
^ default: nil
|
||||||
^ if defined, itemstack will hold clicker's wielded item
|
^ if defined, itemstack will hold clicker's wielded item
|
||||||
Shall return the leftover itemstack
|
^ Shall return the leftover itemstack
|
||||||
|
^ Note: pointed_thing can be nil, if a mod calls this function
|
||||||
|
|
||||||
on_dig = func(pos, node, digger),
|
on_dig = func(pos, node, digger),
|
||||||
^ default: minetest.node_dig
|
^ default: minetest.node_dig
|
||||||
^ By default: checks privileges, wears out tool and removes node
|
^ By default: checks privileges, wears out tool and removes node
|
||||||
|
|
Loading…
Reference in New Issue