Extra error checking.
This commit is contained in:
parent
aa999e2ed5
commit
bf26b8bee1
25 changed files with 897 additions and 314 deletions
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue