add warning information to notify of problems, fix respawn with no spawn
parent
0a25c615ea
commit
9d2998d9dd
17
init.lua
17
init.lua
|
@ -17,6 +17,7 @@ local radial_step = 16
|
||||||
|
|
||||||
-- Setting with no namespace for interoperability
|
-- Setting with no namespace for interoperability
|
||||||
local static_spawnpoint = minetest.setting_get_pos("static_spawnpoint") or {x=0, y=0, z=0}
|
local static_spawnpoint = minetest.setting_get_pos("static_spawnpoint") or {x=0, y=0, z=0}
|
||||||
|
local rspawn.admin = minetest.setting_get_pos("name") or "" -- For messagin only
|
||||||
|
|
||||||
-- Setting from beds mod
|
-- Setting from beds mod
|
||||||
rspawn.bedspawn = minetest.setting_getbool("enable_bed_respawn", true) -- from beds mod
|
rspawn.bedspawn = minetest.setting_getbool("enable_bed_respawn", true) -- from beds mod
|
||||||
|
@ -153,8 +154,12 @@ end
|
||||||
|
|
||||||
function rspawn:set_newplayer_spawn(player)
|
function rspawn:set_newplayer_spawn(player)
|
||||||
-- only use for new players / players who have never had a randomized spawn
|
-- only use for new players / players who have never had a randomized spawn
|
||||||
|
if not player then return end
|
||||||
|
|
||||||
local playername = player:get_player_name()
|
local playername = player:get_player_name()
|
||||||
|
|
||||||
|
if playername == "" then return end
|
||||||
|
|
||||||
if not rspawn.playerspawns[playername] then
|
if not rspawn.playerspawns[playername] then
|
||||||
local newpos = rspawn:get_next_spawn()
|
local newpos = rspawn:get_next_spawn()
|
||||||
|
|
||||||
|
@ -170,6 +175,8 @@ function rspawn:set_newplayer_spawn(player)
|
||||||
|
|
||||||
else
|
else
|
||||||
minetest.chat_send_player(playername, "Could not get custom spawn! Retrying in "..rspawn.gen_frequency.." seconds")
|
minetest.chat_send_player(playername, "Could not get custom spawn! Retrying in "..rspawn.gen_frequency.." seconds")
|
||||||
|
minetest.chat_send_player(rspawn.admin, "Exhausted spawns! Could not spawn "..playername)
|
||||||
|
minetest.log("warning", "rspawn -- Exhausted spawns! Could not spawn "..playername)
|
||||||
|
|
||||||
minetest.after(rspawn.gen_frequency, function()
|
minetest.after(rspawn.gen_frequency, function()
|
||||||
rspawn:set_newplayer_spawn(player)
|
rspawn:set_newplayer_spawn(player)
|
||||||
|
@ -210,8 +217,16 @@ minetest.register_on_respawnplayer(function(player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
minetest.debug("Respawning "..name)
|
||||||
|
local pos = rspawn.playerspawns[name]
|
||||||
|
|
||||||
-- And if no bed, nor bed spwawning not active:
|
-- And if no bed, nor bed spwawning not active:
|
||||||
player:setpos(rspawn.playerspawns[name])
|
if pos then
|
||||||
|
player:setpos(pos)
|
||||||
|
else
|
||||||
|
minetest.chat_send_player(name, "Failed to find your spawn point!")
|
||||||
|
minetest.log("warning", "rspawn --Could not find spawn point for "..name)
|
||||||
|
end
|
||||||
return true
|
return true
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,9 @@ end
|
||||||
|
|
||||||
function rspawn:forceload_free_blocks_in(pos1, pos2)
|
function rspawn:forceload_free_blocks_in(pos1, pos2)
|
||||||
rspawn:debug("Freeing forceloaded blocks ____/", {pos1=minetest.pos_to_string(pos1),pos2=minetest.pos_to_string(pos2)})
|
rspawn:debug("Freeing forceloaded blocks ____/", {pos1=minetest.pos_to_string(pos1),pos2=minetest.pos_to_string(pos2)})
|
||||||
forceload_operate(pos1, pos2, minetest.forceload_free_block, true)
|
-- free both cases - take no chances
|
||||||
|
forceload_operate(pos1, pos2, minetest.forceload_free_block) -- free if persistent
|
||||||
|
forceload_operate(pos1, pos2, minetest.forceload_free_block, true) -- free if transient
|
||||||
forceloading_happening = false
|
forceloading_happening = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@ local function push_new_spawn()
|
||||||
set_pgen(len_pgen()+1, newpos )
|
set_pgen(len_pgen()+1, newpos )
|
||||||
else
|
else
|
||||||
rspawn:debug("Failed to generate new spawn point to push")
|
rspawn:debug("Failed to generate new spawn point to push")
|
||||||
|
minetest.chat_send_player(rspawn.admin, "Failed to generate new spawn")
|
||||||
end
|
end
|
||||||
|
|
||||||
rspawn:forceload_free_blocks_in(pos1, pos2)
|
rspawn:forceload_free_blocks_in(pos1, pos2)
|
||||||
|
|
Loading…
Reference in New Issue