Skip to content
Permalink
Browse files

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
  • Loading branch information...
sofar authored and paramat committed Mar 14, 2017
1 parent 780f991 commit 61d7c43c83bda9c88b9cc257432fb5133c06ee87
Showing with 4 additions and 13 deletions.
  1. +4 −13 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,15 +404,15 @@ 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
itemstack:take_item()
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

0 comments on commit 61d7c43

Please sign in to comment.
You can’t perform that action at this time.