From 61d7c43c83bda9c88b9cc257432fb5133c06ee87 Mon Sep 17 00:00:00 2001
From: Auke Kok <sofar@foo-projects.org>
Date: Mon, 13 Mar 2017 19:56:08 -0700
Subject: [PATCH] Skeleton key: Change to use left-click (tool on_use)

Instead of right click, the skeleton key is now a true `tool`
in the sense that it's default left-click action is to create
a key for the locked object.

This is far better than the outcome of the patches we've done
where the only way to create a key for a locked item was to
use sneak+rightclick. Now keys are perhaps a bit more sensible,
left for making keys, right for opening stuff with keys.

Fixes #1625
---
 mods/default/tools.lua | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/mods/default/tools.lua b/mods/default/tools.lua
index 51854b93..1a08b918 100644
--- a/mods/default/tools.lua
+++ b/mods/default/tools.lua
@@ -383,22 +383,13 @@ minetest.register_tool("default:skeleton_key", {
 	description = "Skeleton Key",
 	inventory_image = "default_key_skeleton.png",
 	groups = {key = 1},
-	on_place = function(itemstack, placer, pointed_thing)
-		local under = pointed_thing.under
-		local node = minetest.get_node(under)
-		local def = minetest.registered_nodes[node.name]
-		if def and def.on_rightclick and
-				not (placer and placer:get_player_control().sneak) then
-			return def.on_rightclick(under, node, placer, itemstack,
-				pointed_thing) or itemstack
-		end
-
+	on_use = function(itemstack, user, pointed_thing)
 		if pointed_thing.type ~= "node" then
 			return itemstack
 		end
 
 		local pos = pointed_thing.under
-		node = minetest.get_node(pos)
+		local node = minetest.get_node(pos)
 
 		if not node then
 			return itemstack
@@ -413,7 +404,7 @@ minetest.register_tool("default:skeleton_key", {
 				random(2^16) - 1, random(2^16) - 1,
 				random(2^16) - 1, random(2^16) - 1)
 
-			local secret, _, _ = on_skeleton_key_use(pos, placer, newsecret)
+			local secret, _, _ = on_skeleton_key_use(pos, user, newsecret)
 
 			if secret then
 				-- finish and return the new key
@@ -421,7 +412,7 @@ minetest.register_tool("default:skeleton_key", {
 				itemstack:add_item("default:key")
 				local meta = itemstack:get_meta()
 				meta:set_string("secret", secret)
-				meta:set_string("description", "Key to "..placer:get_player_name().."'s "
+				meta:set_string("description", "Key to "..user:get_player_name().."'s "
 					..minetest.registered_nodes[node.name].description)
 				return itemstack
 			end