diff --git a/README.md b/README.md index c16ee10..9242827 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A spawn command for Minetest without needing a fixed point -If no static spawning point is defined, each player is given a spawn location somewhere near 0,0,0. +If no `static_spawnpoint` is defined in `minetest.conf`, each player is given a spawn location somewhere near 0,0,0. If static spawn point is defined, that point is used as origin instead. @@ -10,6 +10,10 @@ Players will not spawn in spaces that are protected by any other player than the Players can request a new spawn point by typing `/newspawn` if they have the `newspawn` privilege. +Player will respawn at ths spawnpoint if they die. + +TODO - integrate with beds API to allow bed to override the spawn. + ## License (C) 2017 Tai "DuCake" Kedzierski diff --git a/init.lua b/init.lua index 55ddb64..84760cc 100644 --- a/init.lua +++ b/init.lua @@ -26,11 +26,10 @@ local function newspawn(radius) if not radius then radius = 32 end - if radius > 200 then - minetest.debug("No valid spawnable location") + if radius > 256 then + minetest.log("error", "No valid spawnable location") return end - minetest.debug("Re-spawn: Trying radius "..tostring(radius)) local pos1 = {x=origin.x-radius, y=origin.y, z=origin.z-radius} local pos2 = {x=origin.x+radius, y=origin.y+(radius/2), z=origin.z+radius} @@ -51,6 +50,7 @@ local function newspawn(radius) end if #validnodes > 0 then + minetest.log("info", "New spawn point found with radius "..tostring(radius)) return validnodes[math.random(1,#validnodes)] end @@ -119,3 +119,9 @@ minetest.register_on_joinplayer(function(player) end end) end) + +minetest.register_on_respawnplayer(function(player) + local name = player:get_player_name() + player:setpos(playerspawns[name]) + return true +end)