Skip to content

Commit

Permalink
Spawn: Avoid spawning outside small worlds
Browse files Browse the repository at this point in the history
Previously, the value of 'mapgen_limit' was not used to limit the
spawn position.
If a friendly-biome spawn point is not found within a small world,
spawn point falls back to the engine spawn point, which has a larger
chance of success.
  • Loading branch information
paramat committed Aug 28, 2019
1 parent 553b0f9 commit 5c3e4b1
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions mods/spawn/init.lua
Expand Up @@ -56,6 +56,15 @@ local success = false
local spawn_pos = {}


-- Get world 'mapgen_limit' and 'chunksize' to calculate 'spawn_limit'.
-- This accounts for how mapchunks are not generated if they or their shell exceed
-- 'mapgen_limit'.

local mapgen_limit = tonumber(minetest.get_mapgen_setting("mapgen_limit"))
local chunksize = tonumber(minetest.get_mapgen_setting("chunksize"))
local spawn_limit = math.max(mapgen_limit - (chunksize + 1) * 16, 0)


--Functions
-----------

Expand Down Expand Up @@ -100,6 +109,10 @@ local function search()
end

pos = next_pos()
-- Check for position being outside world edge
if math.abs(pos.x) > spawn_limit or math.abs(pos.z) > spawn_limit then
return false
end
end

return false
Expand Down

0 comments on commit 5c3e4b1

Please sign in to comment.