Clean up translocator code.

This commit is contained in:
Duane 2016-06-28 19:31:33 -05:00
parent ad330c2f9e
commit 2e1a49cd6e

View file

@ -327,10 +327,12 @@ local function translocate(pos, node, clicker, itemstack, pointed_thing)
if not (id and tonumber(id)) then if not (id and tonumber(id)) then
return return
end end
local pair = fun_caves.db.translocators[tonumber(id)] local pair = fun_caves.db.translocators[tonumber(id)]
if not pair or #pair < 2 then if not pair or #pair < 2 then
return return
end end
local pos2 local pos2
if minetest.serialize(pair[2]) == minetest.serialize(pos) then if minetest.serialize(pair[2]) == minetest.serialize(pos) then
pos2 = table.copy(pair[1]) pos2 = table.copy(pair[1])
@ -359,19 +361,22 @@ local function trans_place(itemstack, placer, pointed_thing)
end end
local data = minetest.deserialize(itemstack:get_metadata()) local data = minetest.deserialize(itemstack:get_metadata())
if not (data and data.id) then if not (data and data.id and tonumber(data.id)) then
return return
end end
local player_name = placer:get_player_name() local player_name = placer:get_player_name()
if not data.owner or data.owner == '' then if not data.owner or data.owner == '' then
data.owner = player_name data.owner = player_name
end end
local pos = pointed_thing.above local pos = pointed_thing.above
local pair = fun_caves.db.translocators[tonumber(data.id)] local pair = fun_caves.db.translocators[tonumber(data.id)]
if not pair or #pair > 1 then if not pair or #pair > 1 then
print('* Fun Caves: high error in translocator storage') print('* Fun Caves: high error in translocator storage')
return return
end end
local ret, place_good = minetest.item_place_node(itemstack, placer, pointed_thing) local ret, place_good = minetest.item_place_node(itemstack, placer, pointed_thing)
if place_good then if place_good then
pair[#pair+1] = pos pair[#pair+1] = pos
@ -395,23 +400,25 @@ local function trans_dig(pos, node, digger)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local id = meta:get_string('id') local id = meta:get_string('id')
local owner = meta:get_string('owner') local owner = meta:get_string('owner')
if owner == '' then
owner = player_name
end
local data = { id = id, owner = owner } local data = { id = id, owner = owner }
if not (data and data.id) or (data.owner ~= '' and data.owner ~= player_name) then if not (data and data.id and data.owner == player_name) then
local privs = minetest.check_player_privs(player_name, {server=true}) local privs = minetest.check_player_privs(player_name, {server=true})
if privs then if privs then
minetest.remove_node(pos) minetest.remove_node(pos)
end end
return return
end end
if data.owner == '' then
data.owner = player_name
end
local pair = fun_caves.db.translocators[tonumber(data.id)] local pair = fun_caves.db.translocators[tonumber(data.id)]
if not pair or #pair < 1 then if not pair or #pair < 1 then
print('* Fun Caves: low error in translocator storage') print('* Fun Caves: low error in translocator storage')
minetest.remove_node(pos) minetest.remove_node(pos)
return return
end end
local inv = digger:get_inventory() local inv = digger:get_inventory()
local item = ItemStack(node.name) local item = ItemStack(node.name)
local data_str = minetest.serialize(data) local data_str = minetest.serialize(data)
@ -419,6 +426,7 @@ local function trans_dig(pos, node, digger)
if not inv:add_item('main', item) then if not inv:add_item('main', item) then
return return
end end
minetest.remove_node(pos) minetest.remove_node(pos)
if #pair > 1 and minetest.serialize(pair[2]) == minetest.serialize(pos) then if #pair > 1 and minetest.serialize(pair[2]) == minetest.serialize(pos) then
table.remove(pair, 2) table.remove(pair, 2)