minetest-mods/real_locks/init.lua

98 lines
2.4 KiB
Lua

real_locks = {}
--{{{ Default can_open() for locked object
real_locks.can_open_locked = function (pos, wield)
if wield:get_name() == "real_locks:key" then
local lock_pass = minetest.get_meta(pos):get_string("lock_pass")
local key_pass = wield:get_metadata()
return lock_pass == key_pass
else
return false
end
end
--}}}
--{{{Set metadata
--{{{Crutch!!!
minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname == "real_locks:keyform" then
inv = player:get_inventory()
for i, itemname in ipairs({"real_locks:lock", "real_locks:key"}) do
local item = ItemStack({
name = itemname,
count = 1,
wear = 0,
metadata = fields.keymeta
})
inv:add_item("main", item)
minetest.log("action",
"player " ..player:get_player_name()..
" crafts " ..item:to_string()
)
end
end
end)
minetest.register_on_craft(function(result, player, old_craft_grid, inv)
local name = result:get_name()
if name == "real_locks:key" then
minetest.show_formspec(player:get_player_name(), "real_locks:keyform", [[
field[keymeta;Choose key form (password):;]
]])
return ItemStack(nil)
end
end)
--}}}
--}}}
--{{{Register keys and locks
minetest.register_craftitem("real_locks:key", {
description = "Key",
groups = {},
inventory_image = "real_locks_key.png",
wield_image = "real_locks_key.png",
stack_max = 1,
range = 2,
})
minetest.register_craftitem("real_locks:lock", {
description = "Lock",
groups = {},
inventory_image = "real_locks_lock.png",
wield_image = "real_locks_lock.png",
stack_max = 1,
range = 2,
})
minetest.register_craftitem("real_locks:bolt", {
description = "Bolt",
groups = {},
inventory_image = "real_locks_bolt.png",
wield_image = "real_locks_bolt.png",
stack_max = 1,
range = 2,
})
--}}}
--{{{Craft recipes
minetest.register_craft({
type = "shapeless",
output = "real_locks:key",
recipe = {
"default:steel_ingot",
"default:steel_ingot",
},
})
minetest.register_craft({
type = "shapeless",
output = "real_locks:door_wood",
recipe = {
"doors:door_wood",
"real_locks:lock",
},
})
--}}}