mirror of
https://github.com/minetest-mods/technic.git
synced 2024-12-24 01:40:29 +01:00
update wrench (#359)
This commit is contained in:
parent
844e2fad47
commit
9167d4fc6f
@ -39,9 +39,10 @@ local function restore(pos, placer, itemstack)
|
|||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
local data = minetest.deserialize(itemstack:get_metadata())
|
local data = itemstack:get_meta():get_string("data")
|
||||||
|
data = (data ~= "" and data) or itemstack:get_metadata()
|
||||||
|
data = minetest.deserialize(data)
|
||||||
minetest.set_node(pos, {name = data.name, param2 = node.param2})
|
minetest.set_node(pos, {name = data.name, param2 = node.param2})
|
||||||
local lists = data.lists
|
|
||||||
for name, value in pairs(data.metas) do
|
for name, value in pairs(data.metas) do
|
||||||
local meta_type = get_meta_type(data.name, name)
|
local meta_type = get_meta_type(data.name, name)
|
||||||
if meta_type == wrench.META_TYPE_INT then
|
if meta_type == wrench.META_TYPE_INT then
|
||||||
@ -52,6 +53,7 @@ local function restore(pos, placer, itemstack)
|
|||||||
meta:set_string(name, value)
|
meta:set_string(name, value)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local lists = data.lists
|
||||||
for listname, list in pairs(lists) do
|
for listname, list in pairs(lists) do
|
||||||
inv:set_list(listname, list)
|
inv:set_list(listname, list)
|
||||||
end
|
end
|
||||||
@ -96,8 +98,9 @@ minetest.register_tool("wrench:wrench", {
|
|||||||
if not placer or not pos then
|
if not placer or not pos then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if minetest.is_protected(pos, placer:get_player_name()) then
|
local player_name = placer:get_player_name()
|
||||||
minetest.record_protection_violation(pos, placer:get_player_name())
|
if minetest.is_protected(pos, player_name) then
|
||||||
|
minetest.record_protection_violation(pos, player_name)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local name = minetest.get_node(pos).name
|
local name = minetest.get_node(pos).name
|
||||||
@ -114,9 +117,9 @@ minetest.register_tool("wrench:wrench", {
|
|||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if def.owned then
|
if def.owned then
|
||||||
local owner = meta:get_string("owner")
|
local owner = meta:get_string("owner")
|
||||||
if owner and owner ~= placer:get_player_name() then
|
if owner and owner ~= player_name then
|
||||||
minetest.log("action", placer:get_player_name()..
|
minetest.log("action", player_name..
|
||||||
" tried to pick up a owned node belonging to "..
|
" tried to pick up an owned node belonging to "..
|
||||||
owner.." at "..
|
owner.." at "..
|
||||||
minetest.pos_to_string(pos))
|
minetest.pos_to_string(pos))
|
||||||
return
|
return
|
||||||
@ -130,9 +133,6 @@ minetest.register_tool("wrench:wrench", {
|
|||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
local lists = {}
|
local lists = {}
|
||||||
for _, listname in pairs(def.lists or {}) do
|
for _, listname in pairs(def.lists or {}) do
|
||||||
if not inv:is_empty(listname) then
|
|
||||||
empty = false
|
|
||||||
end
|
|
||||||
local list = inv:get_list(listname)
|
local list = inv:get_list(listname)
|
||||||
for i, stack in pairs(list) do
|
for i, stack in pairs(list) do
|
||||||
list[i] = stack:to_string()
|
list[i] = stack:to_string()
|
||||||
@ -140,20 +140,20 @@ minetest.register_tool("wrench:wrench", {
|
|||||||
lists[listname] = list
|
lists[listname] = list
|
||||||
end
|
end
|
||||||
metadata.lists = lists
|
metadata.lists = lists
|
||||||
|
|
||||||
local metas = {}
|
local item_meta = stack:get_meta()
|
||||||
|
metadata.metas = {}
|
||||||
for name, meta_type in pairs(def.metas or {}) do
|
for name, meta_type in pairs(def.metas or {}) do
|
||||||
if meta_type == wrench.META_TYPE_INT then
|
if meta_type == wrench.META_TYPE_INT then
|
||||||
metas[name] = meta:get_int(name)
|
metadata.metas[name] = meta:get_int(name)
|
||||||
elseif meta_type == wrench.META_TYPE_FLOAT then
|
elseif meta_type == wrench.META_TYPE_FLOAT then
|
||||||
metas[name] = meta:get_float(name)
|
metadata.metas[name] = meta:get_float(name)
|
||||||
elseif meta_type == wrench.META_TYPE_STRING then
|
elseif meta_type == wrench.META_TYPE_STRING then
|
||||||
metas[name] = meta:get_string(name)
|
metadata.metas[name] = meta:get_string(name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
metadata.metas = metas
|
|
||||||
|
item_meta:set_string("data", minetest.serialize(metadata))
|
||||||
stack:set_metadata(minetest.serialize(metadata))
|
|
||||||
minetest.remove_node(pos)
|
minetest.remove_node(pos)
|
||||||
itemstack:add_wear(65535 / 20)
|
itemstack:add_wear(65535 / 20)
|
||||||
player_inv:add_item("main", stack)
|
player_inv:add_item("main", stack)
|
||||||
|
Loading…
Reference in New Issue
Block a user