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

@ -3,7 +3,15 @@ minetest.register_chatcommand("armor", {
description = "Display your armor values",
privs = {},
func = function(player_name, param)
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
return
end
local player = minetest.get_player_by_name(player_name)
if not player then
return
end
local armor = player:get_armor_groups()
if armor then
minetest.chat_send_player(player_name, "Armor:")
@ -13,7 +21,12 @@ minetest.register_chatcommand("armor", {
if fun_caves.db.status[player_name].armor_elixir then
local armor_time = fun_caves.db.status[player_name].armor_elixir.remove
local min = math.floor(math.max(0, armor_time - minetest.get_gametime()) / 60)
local game_time = minetest.get_gametime()
if not (armor_time and type(armor_time) == 'number' and game_time and type(game_time) == 'number') then
return
end
local min = math.floor(math.max(0, armor_time - game_time) / 60)
minetest.chat_send_player(player_name, "Your armor elixir will expire in "..min..' minutes.')
end
end
@ -25,11 +38,19 @@ minetest.register_chatcommand("setspawn", {
params = "",
description = "change your spawn position",
privs = {},
func = function(name, param)
local player = minetest.get_player_by_name(name)
func = function(player_name, param)
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
return
end
local player = minetest.get_player_by_name(player_name)
if not player then
return
end
local pos = player:getpos()
beds.spawn[name] = pos
minetest.chat_send_player(name, 'Your spawn position has been changed.')
beds.spawn[player_name] = pos
minetest.chat_send_player(player_name, 'Your spawn position has been changed.')
end,
})
@ -38,21 +59,38 @@ minetest.register_chatcommand("fixlight", {
params = "<radius>",
description = "attempt to fix light bugs",
privs = {},
func = function(name, param)
local privs = minetest.check_player_privs(name, {server=true})
func = function(player_name, param)
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
return
end
local privs = minetest.check_player_privs(player_name, {server=true})
if not privs then
return
end
print('Fun Caves: '..name..' used the fixlight command')
local player = minetest.get_player_by_name(name)
local pos = vector.round(player:getpos())
print('Fun Caves: '..player_name..' used the fixlight command')
local player = minetest.get_player_by_name(player_name)
if not player then
return
end
local pos = player:getpos()
if not pos then
return
end
pos = vector.round(pos)
local radius = tonumber(param) or 50
radius = math.floor(radius)
local minp = vector.subtract(pos, radius)
local maxp = vector.add(pos, radius)
local vm = minetest.get_voxel_manip(minp, maxp)
if not vm then
return
end
--vm:set_lighting({day = 0, night = 0}, minp, maxp)
vm:calc_lighting(minp, maxp)
vm:update_liquids()
@ -66,24 +104,39 @@ minetest.register_chatcommand("flatten", {
params = "<radius>",
description = "flatten terrain",
privs = {},
func = function(name, param)
local privs = minetest.check_player_privs(name, {server=true})
func = function(player_name, param)
if not (player_name and type(player_name) == 'string' and player_name ~= '') then
return
end
local privs = minetest.check_player_privs(player_name, {server=true})
if not privs then
return
end
print('Fun Caves: '..name..' used the flatten command')
local player = minetest.get_player_by_name(name)
local pos = vector.round(player:getpos())
print('Fun Caves: '..player_name..' used the flatten command')
local player = minetest.get_player_by_name(player_name)
if not player then
return
end
local pos = player:getpos()
if not pos then
return
end
pos = vector.round(pos)
local radius = tonumber(param) or 50
radius = math.floor(radius)
local minp = vector.subtract(pos, radius)
minp.y = minp.y - math.ceil(radius / 2)
local maxp = vector.add(pos, radius)
maxp.y = maxp.y + math.ceil(radius / 2)
local air = minetest.get_content_id('air')
local stone = minetest.get_content_id('default:stone')
local water = minetest.get_content_id('default:water_source')
local waters = {}
waters[minetest.get_content_id('default:water_source')] = true
waters[minetest.get_content_id('default:river_water_source')] = true
@ -94,6 +147,10 @@ minetest.register_chatcommand("flatten", {
end
local vm = minetest.get_voxel_manip(minp, maxp)
if not vm then
return
end
local emin, emax = vm:read_from_map(minp, maxp)
local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax})
local data = vm:get_data()
@ -107,7 +164,7 @@ minetest.register_chatcommand("flatten", {
for y = maxp.y, minp.y, -1 do
if stones[data[ivm]] then
if y >= maxp.y then
print('Terrain altitude exceeds the radius.')
minetest.chat_send_player(player_name, 'Terrain altitude exceeds the given radius.')
return
end
heightmap[index] = y
@ -119,7 +176,7 @@ minetest.register_chatcommand("flatten", {
end
if not heightmap[index] then
print('Terrain altitude exceeds the radius.')
minetest.chat_send_player(player_name, 'Terrain altitude exceeds the given radius.')
return
end