Skip to content

Commit 9d3a526

Browse files
octaciansofar
authored andcommittedFeb 28, 2017
Keys: Show owner in description
Utilizes several new features allowing the description of an item to be changed using the `description` meta key. This also moves keys from using the old single-value itemstack metadata system to the new node-like metadata system.
1 parent bb18eec commit 9d3a526

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed
 

‎mods/default/nodes.lua

+6-2
Original file line numberDiff line numberDiff line change
@@ -1727,9 +1727,13 @@ minetest.register_node("default:chest_locked", {
17271727
on_key_use = function(pos, player)
17281728
local secret = minetest.get_meta(pos):get_string("key_lock_secret")
17291729
local itemstack = player:get_wielded_item()
1730-
local key_meta = minetest.parse_json(itemstack:get_metadata())
1730+
local key_meta = itemstack:get_meta()
17311731

1732-
if secret ~= key_meta.secret then
1732+
if key_meta:get_string("secret") == "" then
1733+
key_meta:set_string("secret", minetest.parse_json(itemstack:get_metadata()).secret)
1734+
end
1735+
1736+
if secret ~= key_meta:get_string("secret") then
17331737
return
17341738
end
17351739

‎mods/default/tools.lua

+4-3
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,10 @@ minetest.register_tool("default:skeleton_key", {
410410
-- finish and return the new key
411411
itemstack:take_item()
412412
itemstack:add_item("default:key")
413-
itemstack:set_metadata(minetest.write_json({
414-
secret = secret
415-
}))
413+
local meta = itemstack:get_meta()
414+
meta:set_string("secret", secret)
415+
meta:set_string("description", "Key to "..placer:get_player_name().."'s "
416+
..minetest.registered_nodes[node.name].description)
416417
return itemstack
417418
end
418419
end

‎mods/doors/init.lua

+14-4
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,14 @@ function _doors.door_toggle(pos, node, clicker)
144144
local item = clicker:get_wielded_item()
145145
local owner = meta:get_string("doors_owner")
146146
if item:get_name() == "default:key" then
147-
local key_meta = minetest.parse_json(item:get_metadata())
147+
local key_meta = item:get_meta()
148148
local secret = meta:get_string("key_lock_secret")
149-
if secret ~= key_meta.secret then
149+
150+
if key_meta:get_string("secret") == "" then
151+
key_meta:set_string("secret", minetest.parse_json(item:get_metadata()).secret)
152+
end
153+
154+
if secret ~= key_meta:get_string("secret") then
150155
return false
151156
end
152157

@@ -532,9 +537,14 @@ function _doors.trapdoor_toggle(pos, node, clicker)
532537
local meta = minetest.get_meta(pos)
533538
local owner = meta:get_string("doors_owner")
534539
if item:get_name() == "default:key" then
535-
local key_meta = minetest.parse_json(item:get_metadata())
540+
local key_meta = item:get_meta()
536541
local secret = meta:get_string("key_lock_secret")
537-
if secret ~= key_meta.secret then
542+
543+
if key_meta:get_string("secret") == "" then
544+
key_meta:set_string("secret", minetest.parse_json(item:get_metadata()).secret)
545+
end
546+
547+
if secret ~= key_meta:get_string("secret") then
538548
return false
539549
end
540550

0 commit comments

Comments
 (0)
Please sign in to comment.