Skip to content

Commit 73e4666

Browse files
Thomas--Ssofar
authored andcommittedMar 16, 2017
Change doors to default.can_interact_with_node()
1 parent bd4d2df commit 73e4666

File tree

1 file changed

+23
-50
lines changed

1 file changed

+23
-50
lines changed
 

‎mods/doors/init.lua

+23-50
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ local _doors = {}
66
_doors.registered_doors = {}
77
_doors.registered_trapdoors = {}
88

9+
local function replace_old_owner_information(pos)
10+
local meta = minetest.get_meta(pos)
11+
local owner = meta:get_string("doors_owner")
12+
if owner and owner ~= "" then
13+
meta:set_string("owner", owner)
14+
meta:set_string("doors_owner", "")
15+
end
16+
end
17+
918
-- returns an object to a door object or nil
1019
function doors.get(pos)
1120
local node_name = minetest.get_node(pos).name
@@ -139,28 +148,10 @@ function _doors.door_toggle(pos, node, clicker)
139148
state = tonumber(state)
140149
end
141150

142-
if clicker and not minetest.check_player_privs(clicker, "protection_bypass") then
143-
-- is player wielding the right key?
144-
local item = clicker:get_wielded_item()
145-
local owner = meta:get_string("doors_owner")
146-
if item:get_name() == "default:key" then
147-
local key_meta = item:get_meta()
148-
local secret = meta:get_string("key_lock_secret")
149-
150-
if key_meta:get_string("secret") == "" then
151-
key_meta:set_string("secret", minetest.parse_json(item:get_metadata()).secret)
152-
item:set_metadata("")
153-
end
151+
replace_old_owner_information(pos)
154152

155-
if secret ~= key_meta:get_string("secret") then
156-
return false
157-
end
158-
159-
elseif owner ~= "" then
160-
if clicker:get_player_name() ~= owner then
161-
return false
162-
end
163-
end
153+
if not default.can_interact_with_node(clicker, pos) then
154+
return false
164155
end
165156

166157
-- until Lua-5.2 we have no bitwise operators :(
@@ -211,11 +202,8 @@ local function on_place_node(place_to, newnode,
211202
end
212203

213204
local function can_dig_door(pos, digger)
214-
local digger_name = digger and digger:get_player_name()
215-
if digger_name and minetest.get_player_privs(digger_name).protection_bypass then
216-
return true
217-
end
218-
return minetest.get_meta(pos):get_string("doors_owner") == digger_name
205+
replace_old_owner_information(pos)
206+
return default.can_interact_with_node(digger, pos)
219207
end
220208

221209
function doors.register(name, def)
@@ -330,7 +318,7 @@ function doors.register(name, def)
330318
meta:set_int("state", state)
331319

332320
if def.protected then
333-
meta:set_string("doors_owner", pn)
321+
meta:set_string("owner", pn)
334322
meta:set_string("infotext", "Owned by " .. pn)
335323
end
336324

@@ -394,8 +382,9 @@ function doors.register(name, def)
394382
door:toggle(player)
395383
end
396384
def.on_skeleton_key_use = function(pos, player, newsecret)
385+
replace_old_owner_information(pos)
397386
local meta = minetest.get_meta(pos)
398-
local owner = meta:get_string("doors_owner")
387+
local owner = meta:get_string("owner")
399388
local pname = player:get_player_name()
400389

401390
-- verify placer is owner of lockable door
@@ -532,28 +521,11 @@ end
532521

533522
function _doors.trapdoor_toggle(pos, node, clicker)
534523
node = node or minetest.get_node(pos)
535-
if clicker and not minetest.check_player_privs(clicker, "protection_bypass") then
536-
-- is player wielding the right key?
537-
local item = clicker:get_wielded_item()
538-
local meta = minetest.get_meta(pos)
539-
local owner = meta:get_string("doors_owner")
540-
if item:get_name() == "default:key" then
541-
local key_meta = item:get_meta()
542-
local secret = meta:get_string("key_lock_secret")
543-
544-
if key_meta:get_string("secret") == "" then
545-
key_meta:set_string("secret", minetest.parse_json(item:get_metadata()).secret)
546-
end
547524

548-
if secret ~= key_meta:get_string("secret") then
549-
return false
550-
end
525+
replace_old_owner_information(pos)
551526

552-
elseif owner ~= "" then
553-
if clicker:get_player_name() ~= owner then
554-
return false
555-
end
556-
end
527+
if not default.can_interact_with_node(clicker, pos) then
528+
return false
557529
end
558530

559531
local def = minetest.registered_nodes[node.name]
@@ -595,7 +567,7 @@ function doors.register_trapdoor(name, def)
595567
def.after_place_node = function(pos, placer, itemstack, pointed_thing)
596568
local pn = placer:get_player_name()
597569
local meta = minetest.get_meta(pos)
598-
meta:set_string("doors_owner", pn)
570+
meta:set_string("owner", pn)
599571
meta:set_string("infotext", "Owned by "..pn)
600572

601573
return minetest.setting_getbool("creative_mode")
@@ -607,8 +579,9 @@ function doors.register_trapdoor(name, def)
607579
door:toggle(player)
608580
end
609581
def.on_skeleton_key_use = function(pos, player, newsecret)
582+
replace_old_owner_information(pos)
610583
local meta = minetest.get_meta(pos)
611-
local owner = meta:get_string("doors_owner")
584+
local owner = meta:get_string("owner")
612585
local pname = player:get_player_name()
613586

614587
-- verify placer is owner of lockable door

0 commit comments

Comments
 (0)
Please sign in to comment.