]> git.lizzy.rs Git - skycraft.git/blob - src/main/lobby.lua
Bugfix, Cleanup
[skycraft.git] / src / main / lobby.lua
1 skycraft.lobby_pos = {x = 0, y = 10000, z = 0}
2
3 function skycraft.join_lobby(name)
4         local player = minetest.get_player_by_name(name)
5         if not player then return false, "You have to be online to use this command" end
6         minetest.chat_send_all(skycraft.get_player_name(name) .. " joined the Lobby")
7         local pos = player:get_pos()
8         if pos.y < 5000 and (pos.y > 1000 or pos.y < -100) then player:get_meta():set_string("skycraft:skyblock_pos", minetest.pos_to_string(pos)) end
9         player:set_pos(skycraft.lobby_pos)
10 end
11
12 function skycraft.join_skyblock(name)
13         local player = minetest.get_player_by_name(name)
14         if not player then return false, "You have to be online to use this command" end
15         local old_pos = player:get_pos()
16         if old_pos.y < 5000 then return false, "You are already on the Skyblock map." end
17         minetest.chat_send_all(skycraft.get_player_name(name) .. " joined Skyblock")
18         local pos = minetest.string_to_pos(player:get_meta():get_string("skycraft:skyblock_pos"))
19         if pos then
20                 player:set_pos(pos)
21         else
22                 skycraft.spawn_player(player)
23         end
24 end
25
26 minetest.register_chatcommand("lobby", {
27         description = "Warp to the Lobby",
28         func = skycraft.join_lobby
29 })
30
31 minetest.register_chatcommand("skyblock", {
32         description = "Join Skyblock",
33         func = skycraft.join_skyblock
34 })
35
36 minetest.register_chatcommand("shop", {
37         description = "Join Skyblock",
38         func = function(name)
39                 skycraft.join_lobby(name)
40                 local player = minetest.get_player_by_name(name)
41                 if player then 
42                         player:set_pos({x = 25, y = 10000, z = 25})
43                 end
44         end
45 })
46
47 minetest.register_on_joinplayer(function(player)
48         minetest.after(0.5, skycraft.join_lobby, player:get_player_name())
49 end)
50
51 minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
52         if player:get_pos().y > 5000 then
53                 minetest.chat_send_player(hitter:get_player_name(), minetest.colorize("#FF6737", "You can not do PvP here!"))
54                 return true
55         end
56 end)
57
58 minetest.register_on_player_hpchange(function(player, hp_change)
59         return (player:get_pos().y > 5000) and 0 or hp_change
60 end, true)
61
62 minetest.register_globalstep(function()
63         local players = minetest.get_connected_players()
64         for _, player in pairs(players) do
65                 local name = player:get_player_name()
66                 local privs = minetest.get_player_privs(name)
67                 local pos = player:get_pos()
68                 privs.skycraft = (pos.y < 5000 or privs.protection_bypass) and true or nil
69                 minetest.set_player_privs(name, privs)
70     end
71 end)