summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas--S <Thomas--S@users.noreply.github.com>2017-03-06 21:09:44 +0100
committerThomas--S <Thomas--S@users.noreply.github.com>2017-03-06 21:09:44 +0100
commitec6354b6a5f5fcb5a974c1c687f4c4b9ba603f27 (patch)
treecf6ddb299a109bc0a5ab6c7df20b8c7b86974c16
parent35da22fcd292a04fdd1bee7026c1288d8a771a90 (diff)
Update chests protection to current minetest_game
-rw-r--r--technic_chests/common.lua47
-rw-r--r--technic_chests/register.lua20
2 files changed, 12 insertions, 55 deletions
diff --git a/technic_chests/common.lua b/technic_chests/common.lua
index b8e30a4..32b34eb 100644
--- a/technic_chests/common.lua
+++ b/technic_chests/common.lua
@@ -26,12 +26,7 @@ technic.chests.can_dig = function(pos, player)
end
local function inv_change(pos, count, player)
- local meta = minetest.get_meta(pos)
- if not has_locked_chest_privilege(meta, player) then
- minetest.log("action", player:get_player_name()..
- " tried to access a locked chest belonging to "..
- meta:get_string("owner").." at "..
- minetest.pos_to_string(pos))
+ if not default.can_interact_with_node(player, pos) then
return 0
end
return count
@@ -54,42 +49,14 @@ function technic.chests.on_inv_move(pos, from_list, from_index, to_list, to_inde
end
function technic.chests.on_inv_put(pos, listname, index, stack, player)
- minetest.log("action", player:get_player_name()..
- " puts stuff in to chest at "
- ..minetest.pos_to_string(pos))
+ minetest.log("action", player:get_player_name() ..
+ " moves " .. stack:get_name() ..
+ " to chest at " .. minetest.pos_to_string(pos))
end
function technic.chests.on_inv_take(pos, listname, index, stack, player)
- minetest.log("action", player:get_player_name()..
- " takes stuff from chest at "
- ..minetest.pos_to_string(pos))
-end
-
-local function has_locked_chest_privilege(meta, player)
- if player then
- if minetest.check_player_privs(player, "protection_bypass") then
- return true
- end
- else
- return false
- end
-
- -- is player wielding the right key?
- local item = player:get_wielded_item()
- if item:get_name() == "default:key" then
- local key_meta = minetest.parse_json(item:get_metadata())
- local secret = meta:get_string("key_lock_secret")
- if secret ~= key_meta.secret then
- return false
- end
-
- return true
- end
-
- if player:get_player_name() ~= meta:get_string("owner") then
- return false
- end
-
- return true
+ minetest.log("action", player:get_player_name() ..
+ " takes " .. stack:get_name() ..
+ " from chest at " .. minetest.pos_to_string(pos))
end
diff --git a/technic_chests/register.lua b/technic_chests/register.lua
index 8e72aec..6a5b8db 100644
--- a/technic_chests/register.lua
+++ b/technic_chests/register.lua
@@ -267,7 +267,7 @@ function technic.chests:definition(name, data)
on_blast = function(pos)
local drops = {}
default.get_inventory_drops(pos, "main", drops)
- drops[#drops+1] = "default:chest"
+ drops[#drops+1] = "technic:"..name:lower()..(data.locked and "_locked" or "").."_chest"
minetest.remove_node(pos)
return drops
end,
@@ -277,20 +277,10 @@ function technic.chests:definition(name, data)
def.allow_metadata_inventory_put = self.inv_put
def.allow_metadata_inventory_take = self.inv_take
def.on_blast = function() end
- def.on_key_use = function(pos, player)
- local secret = minetest.get_meta(pos):get_string("key_lock_secret")
- local itemstack = player:get_wielded_item()
- local key_meta = minetest.parse_json(itemstack:get_metadata())
-
- if secret ~= key_meta.secret then
- return
- end
-
- minetest.show_formspec(
- player:get_player_name(),
- "default:chest_locked",
- get_locked_chest_formspec(pos)
- )
+ def.can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main") and default.can_interact_with_node(player, pos)
end
def.on_skeleton_key_use = function(pos, player, newsecret)
local meta = minetest.get_meta(pos)