From: Auke Kok Date: Sun, 14 Feb 2016 04:27:03 +0000 (-0800) Subject: Open doors when right-clicking a door with a door. X-Git-Tag: 0.4.14~130 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2cc6640edffd96fcef16fe76901a1de7ab3326f0;p=oweals%2Fminetest_game.git 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. --- diff --git a/mods/doors/init.lua b/mods/doors/init.lua index b1a04cc7..f6808974 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 }