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