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/onload/spawn.lua | |
parent | cc84f066b001f4ea875b115ace6d533d1bc8b4f3 (diff) | |
download | skycraft-20b8961640b6c22d4149f7268d403cb4609a03fb.tar.xz |
New file Structure
Diffstat (limited to 'src/onload/spawn.lua')
-rw-r--r-- | src/onload/spawn.lua | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/onload/spawn.lua b/src/onload/spawn.lua new file mode 100644 index 0000000..547b331 --- /dev/null +++ b/src/onload/spawn.lua @@ -0,0 +1,34 @@ +function mcl_spawn.get_world_spawn_pos() + return skycraft.lobby_pos +end +function mcl_spawn.get_spawn_pos(player) + local name = player:get_player_name() + local spawn, custom_spawn + local bed_spawn = player:get_meta():get_string("mcl_beds:spawn") + if bed_spawn and bed_spawn ~= "" then + spawn, custom_spawn = minetest.string_to_pos(bed_spawn), true + end + if spawn and custom_spawn then + local node_bed = skycraft.get_far_node(spawn) + local node_up1 = skycraft.get_far_node(vector.add(spawn, {x = 0, y = 1, z = 0})) + local node_up2 = skycraft.get_far_node(vector.add(spawn, {x = 0, y = 2, z = 0})) + local bgroup = minetest.get_item_group(node_bed.name, "bed") + local def1 = minetest.registered_nodes[node_up1.name] + local def2 = minetest.registered_nodes[node_up2.name] + if bgroup ~= 1 and bgroup ~= 2 or def1.walkable or def2.walkable or def1.damage_per_second and def1.damage_per_second > 0 or def2.damage_per_second and def2.damage_per_second > 0 then + if bgroup ~= 1 and bgroup ~= 2 then + mcl_spawn.set_spawn_pos(player, nil) + end + spawn, custom_spawn = nil, false + minetest.chat_send_player(name, minetest.get_translator("mcl_beds")("Your spawn bed was missing or blocked.")) + end + end + if not spawn then + spawn = mcl_spawn.get_world_spawn_pos(), false + end + local island_spawn = skycraft.get_spawn(player) + if not custom_spawn and island_spawn then + spawn = vector.add(island_spawn, skycraft.spawn_offset) + end + return spawn, custom_spawn +end |