Add on_rightclick(pos, node, clicker) callback for nodes

This commit is contained in:
PilzAdam 2013-01-04 00:05:56 +01:00 committed by Nils Dagsson Moskopp
parent f264cf9833
commit 42e67c79c1
Signed by: erle
GPG Key ID: A3BC671C35191080
1 changed files with 13 additions and 2 deletions

View File

@ -231,9 +231,19 @@ function minetest.item_place_object(itemstack, placer, pointed_thing)
end end
function minetest.item_place(itemstack, placer, pointed_thing) function minetest.item_place(itemstack, placer, pointed_thing)
-- Call on_rightclick if the pointed node defines it
if pointed_thing.type == "node" then
local n = minetest.env:get_node(pointed_thing.under)
local nn = n.name
if minetest.registered_nodes[nn] and minetest.registered_nodes[nn].on_rightclick then
minetest.registered_nodes[nn].on_rightclick(pointed_thing.under, n, placer)
return
end
end
if itemstack:get_definition().type == "node" then if itemstack:get_definition().type == "node" then
return minetest.item_place_node(itemstack, placer, pointed_thing) return minetest.item_place_node(itemstack, placer, pointed_thing)
else elseif itemstack:get_definition().type ~= "none" then
return minetest.item_place_object(itemstack, placer, pointed_thing) return minetest.item_place_object(itemstack, placer, pointed_thing)
end end
end end
@ -375,6 +385,7 @@ minetest.nodedef_default = {
can_dig = nil, can_dig = nil,
on_punch = redef_wrapper(minetest, 'node_punch'), -- minetest.node_punch on_punch = redef_wrapper(minetest, 'node_punch'), -- minetest.node_punch
on_rightclick = nil,
on_dig = redef_wrapper(minetest, 'node_dig'), -- minetest.node_dig on_dig = redef_wrapper(minetest, 'node_dig'), -- minetest.node_dig
on_receive_fields = nil, on_receive_fields = nil,
@ -464,7 +475,7 @@ minetest.noneitemdef_default = { -- This is used for the hand and unknown items
tool_capabilities = nil, tool_capabilities = nil,
-- Interaction callbacks -- Interaction callbacks
on_place = nil, on_place = redef_wrapper(minetest, 'item_place'),
on_drop = nil, on_drop = nil,
on_use = nil, on_use = nil,
} }