]> git.lizzy.rs Git - skycraft.git/blob - src/main/spawns.lua
Island uses now the Schem API
[skycraft.git] / src / main / spawns.lua
1 skycraft.spawn_offset = {x = 3, y = 2, z = 0}
2
3 skycraft.starter_mobs = {"mobs_mc:cow", "mobs_mc:sheep", "mobs_mc:pig"}
4
5 skycraft.load_schem("island")
6
7 skycraft.savedata.spawns = skycraft.savedata.spawns or {} 
8
9 function skycraft.get_spawn(player)
10         local strpos = player:get_meta():get_string("skycraft:spawn")
11         if not strpos == "" then return end
12         return minetest.string_to_pos(strpos)
13 end
14
15 function skycraft.set_spawn(player, pos)
16         player:get_meta():set_string("skycraft:spawn", minetest.pos_to_string(pos))
17 end
18
19 function skycraft.spawn_player(player)
20         local spawn = skycraft.get_spawn(player)
21         local name = player:get_player_name()
22         if not spawn then
23                 local plot = skycraft.claim_plot(name)
24                 spawn = {x = plot.x * 62 + 31, z = plot.z * 62 + 31, y = math.random(1600, 2000)}
25                 minetest.chat_send_player(name, "Creating Island ...")
26                 skycraft.set_spawn(player, spawn)
27                 local physics = player:get_physics_override()
28                 player:set_physics_override({gravity = 0})
29                 minetest.after(5, function()
30                         skycraft.add_schem(vector.add(spawn, {x = -6, y = -6, z = -4}), "island")
31                         local nametag = name .. "'s Friend"
32                         local entity = minetest.add_entity(vector.add(spawn, {x = -4.5, y = 1, z = 1.5}), skycraft.starter_mobs[math.random(#skycraft.starter_mobs)])
33                         entity:get_luaentity().nametag = nametag
34                         entity:set_properties({nametag = nametag})
35                         player:set_physics_override(physics)
36                 end)
37         end
38         player:set_pos(vector.add(spawn, skycraft.spawn_offset))
39 end
40
41 minetest.register_on_respawnplayer(function(player)
42         local spawn = mcl_spawn.get_spawn_pos(player)
43         player:set_pos(spawn)
44         return true
45 end)