diff options
author | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-06-07 18:34:21 +0200 |
---|---|---|
committer | Elias Fleckenstein <eliasfleckenstein@web.de> | 2020-06-07 18:34:21 +0200 |
commit | 20b8961640b6c22d4149f7268d403cb4609a03fb (patch) | |
tree | 0acdb70090ee8db3e77b5a5ad4573cdd13503e8f /src/main/spawns.lua | |
parent | cc84f066b001f4ea875b115ace6d533d1bc8b4f3 (diff) | |
download | skycraft-20b8961640b6c22d4149f7268d403cb4609a03fb.tar.xz |
New file Structure
Diffstat (limited to 'src/main/spawns.lua')
-rw-r--r-- | src/main/spawns.lua | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main/spawns.lua b/src/main/spawns.lua new file mode 100644 index 0000000..b389160 --- /dev/null +++ b/src/main/spawns.lua @@ -0,0 +1,49 @@ +skycraft.spawn_offset = {x = 3, y = 2, z = 0} + +skycraft.starter_mobs = {"mobs_mc:cow", "mobs_mc:sheep", "mobs_mc:pig"} + +do + local file = io.open(minetest.get_modpath("skycraft") .. "/schems/island.we", "r") + skycraft.island_schem = file:read() + file:close() +end + +skycraft.savedata.spawns = skycraft.savedata.spawns or {} + +function skycraft.get_spawn(player) + local strpos = player:get_meta():get_string("skycraft:spawn") + if not strpos == "" then return end + return minetest.string_to_pos(strpos) +end + +function skycraft.set_spawn(player, pos) + player:get_meta():set_string("skycraft:spawn", minetest.pos_to_string(pos)) +end + +function skycraft.spawn_player(player) + local spawn = skycraft.get_spawn(player) + local name = player:get_player_name() + if not spawn then + local plot = skycraft.claim_plot(name) + spawn = {x = plot.x * 62 + 31, z = plot.z * 62 + 31, y = math.random(1600, 2000)} + minetest.chat_send_player(name, "Creating Island ...") + skycraft.set_spawn(player, spawn) + local physics = player:get_physics_override() + player:set_physics_override({gravity = 0}) + minetest.after(5, function() + worldedit.deserialize(vector.add(spawn, {x = -6, y = -6, z = -4}), skycraft.island_schem) + local nametag = name .. "'s Friend" + local entity = minetest.add_entity(vector.add(spawn, {x = -4.5, y = 1, z = 1.5}), skycraft.starter_mobs[math.random(#skycraft.starter_mobs)]) + entity:get_luaentity().nametag = nametag + entity:set_properties({nametag = nametag}) + player:set_physics_override(physics) + end) + end + player:set_pos(vector.add(spawn, skycraft.spawn_offset)) +end + +minetest.register_on_respawnplayer(function(player) + local spawn = mcl_spawn.get_spawn_pos(player) + player:set_pos(spawn) + return true +end) |