Skip to content

Commit c54a7e8

Browse files
octacianparamat
authored andcommittedApr 20, 2017
Keys: Move skeleton key to craftitems.lua
Commit 73d61cb makes skeleton keys craftitems rather than tools, warranting the move from tools.lua to craftitems.lua.
1 parent 701abc2 commit c54a7e8

File tree

2 files changed

+56
-54
lines changed

2 files changed

+56
-54
lines changed
 

‎mods/default/craftitems.lua

+56
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,62 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv
186186
craft_inv:set_stack("craft", index, original)
187187
end)
188188

189+
minetest.register_craftitem("default:skeleton_key", {
190+
description = "Skeleton Key",
191+
inventory_image = "default_key_skeleton.png",
192+
groups = {key = 1},
193+
on_use = function(itemstack, user, pointed_thing)
194+
if pointed_thing.type ~= "node" then
195+
return itemstack
196+
end
197+
198+
local pos = pointed_thing.under
199+
local node = minetest.get_node(pos)
200+
201+
if not node then
202+
return itemstack
203+
end
204+
205+
local on_skeleton_key_use = minetest.registered_nodes[node.name].on_skeleton_key_use
206+
if not on_skeleton_key_use then
207+
return itemstack
208+
end
209+
210+
-- make a new key secret in case the node callback needs it
211+
local random = math.random
212+
local newsecret = string.format(
213+
"%04x%04x%04x%04x",
214+
random(2^16) - 1, random(2^16) - 1,
215+
random(2^16) - 1, random(2^16) - 1)
216+
217+
local secret, _, _ = on_skeleton_key_use(pos, user, newsecret)
218+
219+
if secret then
220+
local inv = minetest.get_inventory({type="player", name=user:get_player_name()})
221+
222+
-- update original itemstack
223+
itemstack:take_item()
224+
225+
-- finish and return the new key
226+
local new_stack = ItemStack("default:key")
227+
local meta = new_stack:get_meta()
228+
meta:set_string("secret", secret)
229+
meta:set_string("description", "Key to "..user:get_player_name().."'s "
230+
..minetest.registered_nodes[node.name].description)
231+
232+
if itemstack:get_count() == 0 then
233+
itemstack = new_stack
234+
else
235+
if inv:add_item("main", new_stack):get_count() > 0 then
236+
minetest.add_item(user:getpos(), new_stack)
237+
end -- else: added to inventory successfully
238+
end
239+
240+
return itemstack
241+
end
242+
end
243+
})
244+
189245
minetest.register_craftitem("default:coal_lump", {
190246
description = "Coal Lump",
191247
inventory_image = "default_coal_lump.png",

‎mods/default/tools.lua

-54
Original file line numberDiff line numberDiff line change
@@ -379,60 +379,6 @@ minetest.register_tool("default:sword_diamond", {
379379
sound = {breaks = "default_tool_breaks"},
380380
})
381381

382-
minetest.register_craftitem("default:skeleton_key", {
383-
description = "Skeleton Key",
384-
inventory_image = "default_key_skeleton.png",
385-
groups = {key = 1},
386-
on_use = function(itemstack, user, pointed_thing)
387-
if pointed_thing.type ~= "node" then
388-
return itemstack
389-
end
390-
391-
local pos = pointed_thing.under
392-
local node = minetest.get_node(pos)
393-
394-
if not node then
395-
return itemstack
396-
end
397-
398-
local on_skeleton_key_use = minetest.registered_nodes[node.name].on_skeleton_key_use
399-
if on_skeleton_key_use then
400-
-- make a new key secret in case the node callback needs it
401-
local random = math.random
402-
local newsecret = string.format(
403-
"%04x%04x%04x%04x",
404-
random(2^16) - 1, random(2^16) - 1,
405-
random(2^16) - 1, random(2^16) - 1)
406-
407-
local secret, _, _ = on_skeleton_key_use(pos, user, newsecret)
408-
409-
if secret then
410-
-- update original itemstack
411-
itemstack:take_item()
412-
413-
-- finish and return the new key
414-
local new_stack = ItemStack("default:key")
415-
local meta = new_stack:get_meta()
416-
local inv = minetest.get_inventory({type="player", name=user:get_player_name()})
417-
meta:set_string("secret", secret)
418-
meta:set_string("description", "Key to "..user:get_player_name().."'s "
419-
..minetest.registered_nodes[node.name].description)
420-
421-
if itemstack:get_count() == 0 then
422-
itemstack = new_stack
423-
else
424-
if inv:add_item("main", new_stack):get_count() > 0 then
425-
minetest.add_item(user:getpos(), new_stack)
426-
end
427-
end
428-
429-
return itemstack
430-
end
431-
end
432-
return nil
433-
end
434-
})
435-
436382
minetest.register_tool("default:key", {
437383
description = "Key",
438384
inventory_image = "default_key.png",

0 commit comments

Comments
 (0)