From 2cc6640edffd96fcef16fe76901a1de7ab3326f0 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 13 Feb 2016 20:27:03 -0800 Subject: [PATCH] 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. --- mods/doors/init.lua | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/mods/doors/init.lua b/mods/doors/init.lua index b1a04cc..f680897 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -185,16 +185,26 @@ 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 - return itemstack + 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 }