Clean up translocator code.
This commit is contained in:
parent
ad330c2f9e
commit
2e1a49cd6e
1 changed files with 13 additions and 5 deletions
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue