Extra error checking.

This commit is contained in:
Duane 2016-07-15 02:58:33 -05:00
parent aa999e2ed5
commit bf26b8bee1
25 changed files with 897 additions and 314 deletions

View file

@ -1,12 +1,15 @@
local max_depth = 31000
local function teleporter(user, area, power)
if not user then
if not (user and area and power and type(power) == 'number') then
return
end
local name = user:get_player_name()
local pos = user:getpos()
if not (name and pos and name ~= '' and type(name) == 'string') then
return
end
if not fun_caves.db.teleport_data[name] then
fun_caves.db.teleport_data[name] = {}
@ -84,10 +87,18 @@ local function teleporter(user, area, power)
c1 = minetest.get_perlin(fun_caves.cave_noise_1):get3d(newpos)
c2 = minetest.get_perlin(fun_caves.cave_noise_2):get3d(newpos)
if not (c1 and c2 and type(c1) == 'number' and type(c2) == 'number') then
return
end
if c1 * c2 > fun_caves.cave_width then
newpos.y = newpos.y - 1
c1 = minetest.get_perlin(fun_caves.cave_noise_1):get3d(newpos)
c2 = minetest.get_perlin(fun_caves.cave_noise_2):get3d(newpos)
if not (c1 and c2 and type(c1) == 'number' and type(c2) == 'number') then
return
end
if c1 * c2 > fun_caves.cave_width then
good = true
break
@ -312,7 +323,15 @@ minetest.register_craft({
local function translocate(pos, node, clicker, itemstack, pointed_thing)
if not (pos and clicker) then
return
end
local meta = minetest.get_meta(pos)
if not meta then
return
end
local id = meta:get_string('id')
local owner = meta:get_string('owner')
if not (id and tonumber(id)) then
@ -348,6 +367,10 @@ local function translocate(pos, node, clicker, itemstack, pointed_thing)
minetest.set_node(pos2, {name = 'fun_caves:translocator'})
local meta = minetest.get_meta(pos2)
if not meta then
return
end
meta:set_string('id', id)
meta:set_string('owner', owner)
@ -357,19 +380,21 @@ local function translocate(pos, node, clicker, itemstack, pointed_thing)
end
local function trans_use(itemstack, user, pointed_thing)
if not itemstack then
if not (itemstack and user) then
return
end
local data = minetest.deserialize(itemstack:get_metadata())
if not (data and data.id) then
return
end
local player_name = user:get_player_name()
minetest.chat_send_player(player_name, "You see a serial number: "..data.id)
end
local function trans_place(itemstack, placer, pointed_thing)
if not (itemstack and pointed_thing) then
if not (itemstack and placer and pointed_thing) then
return
end
@ -395,6 +420,10 @@ local function trans_place(itemstack, placer, pointed_thing)
if place_good then
pair[#pair+1] = pos
local meta = minetest.get_meta(pos)
if not meta then
return
end
meta:set_string('id', data.id)
meta:set_string('owner', data.owner)
end
@ -402,7 +431,7 @@ local function trans_place(itemstack, placer, pointed_thing)
end
local function trans_dig(pos, node, digger)
if not (pos and digger) then
if not (pos and node and digger) then
return
end
@ -412,6 +441,10 @@ local function trans_dig(pos, node, digger)
end
local meta = minetest.get_meta(pos)
if not meta then
return
end
local id = meta:get_string('id')
local owner = meta:get_string('owner')
if owner == '' then
@ -452,7 +485,15 @@ local function trans_dig(pos, node, digger)
end
local function trans_dest(pos)
if not pos then
return
end
local meta = minetest.get_meta(pos)
if not meta then
return
end
local id = meta:get_string('id')
local owner = meta:get_string('owner')
if not (id and owner) then
@ -470,6 +511,10 @@ local function trans_dest(pos)
end
minetest.set_node(pos, {name = 'fun_caves:translocator'})
local meta = minetest.get_meta(pos)
if not meta then
return
end
meta:set_string('id', id)
meta:set_string('owner', owner)
@ -515,7 +560,7 @@ for _, gem in pairs(gems) do
end
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if itemstack:get_name() ~= "fun_caves:translocator" then
if not (itemstack and player and itemstack:get_name() == "fun_caves:translocator") then
return
end