12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- spawn = {}
- -- provide empty default implementations
- function spawn.get_default_pos()
- return nil
- end
- function spawn.add_suitable_biome(biome)
- end
- -- Callback registration
- spawn.registered_on_spawn = {}
- function spawn.register_on_spawn(func)
- table.insert(spawn.registered_on_spawn, func)
- end
- -- Logic run on spawn
- local use_engine_spawn = minetest.settings:get("static_spawnpoint") or
- minetest.settings:get_bool("engine_spawn")
- local function on_spawn(player, is_new)
- -- Ask all callbacks first
- for _, cb in ipairs(spawn.registered_on_spawn) do
- if cb(player, is_new) then
- return true
- end
- end
- -- Fall back to default spawn
- if not use_engine_spawn then
- local pos = spawn.get_default_pos()
- if pos then
- player:set_pos(pos)
- return true
- end
- end
- return false
- end
- minetest.register_on_newplayer(function(player)
- on_spawn(player, true)
- end)
- minetest.register_on_respawnplayer(function(player)
- return on_spawn(player, false)
- end)
|