Update dig_container. Now support locked containers.

master
None 2014-09-30 22:07:08 +04:00
parent 3d2293a11e
commit fe25ae37b0
1 changed files with 24 additions and 1 deletions

View File

@ -81,9 +81,30 @@ local function dig_container(pos, oldnode, oldmeta, digger)
-- If character dig the chest with bare hands,
-- than he is just lift it (or something like that)
if digger:get_wielded_item():get_name() == "" then
digger:set_wielded_item(oldnode.name)
-- If this was a locked container,
-- than we need to save lock password
if oldmeta.fields.lock_pass ~= nil then
local container = ItemStack({
name = oldnode.name,
count = 1,
wear = 0,
metadata = oldmeta.fields.lock_pass
})
digger:set_wielded_item(container)
else
digger:set_wielded_item(oldnode.name)
end
end
end
local function place_locked_container(pos, placer, itemstack)
-- When we place a locked container,
-- we must restore it's lock password
local meta = minetest.get_meta(pos)
local password = itemstack:get_metadata()
meta:set_string("lock_pass", password)
end
--}}}
--{{{ Chest
@ -147,6 +168,8 @@ minetest.register_node("containers:chest_locked", {
local inv = meta:get_inventory()
inv:set_size("main", 8*4)
end,
after_place_node = place_locked_container,
after_dig_node = dig_container,
on_rightclick = handle_locked_container,
--{{{ Logging
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)