forked from minetest/minetest_game
Open doors when right-clicking a door with a door.
And similarly, if we wield a door and right click any node that has an on_rightclick() handler, call the handler instead. Just to be on the safe side, assure that none of this code runs when right-clicking an entity or player, which would likely crash the server. Fold in PR #831 as well - prevent server crash on door place on unknown blocks, by @tenplus1.
This commit is contained in:
parent
bbf17c9eca
commit
2cc6640edf
@ -185,17 +185,27 @@ function doors.register(name, def)
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pos = nil
|
||||
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
local node = minetest.get_node(pointed_thing.under)
|
||||
if minetest.registered_nodes[node.name].buildable_to then
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
if def and def.on_rightclick then
|
||||
return def.on_rightclick(pointed_thing.under,
|
||||
node, placer, itemstack)
|
||||
end
|
||||
|
||||
if def and def.buildable_to then
|
||||
pos = pointed_thing.under
|
||||
else
|
||||
pos = pointed_thing.above
|
||||
node = minetest.get_node(pos)
|
||||
end
|
||||
|
||||
if not minetest.registered_nodes[node.name].buildable_to then
|
||||
def = minetest.registered_nodes[node.name]
|
||||
if not def or not def.buildable_to then
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
|
||||
local above = { x = pos.x, y = pos.y + 1, z = pos.z }
|
||||
if not minetest.registered_nodes[minetest.get_node(above).name].buildable_to then
|
||||
|
Loading…
Reference in New Issue
Block a user