1 skycraft.lobby_pos = {x = 0, y = 10000, z = 0}
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)
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"))
22 skycraft.spawn_player(player)
26 function skycraft.lobby_tick()
27 local players = minetest.get_connected_players()
28 for _, player in pairs(players) do
29 local name = player:get_player_name()
30 local privs = minetest.get_player_privs(name)
31 local pos = player:get_pos()
32 privs.skycraft = (pos.y < 5000 or privs.protection_bypass) and true or nil
33 minetest.set_player_privs(name, privs)
35 minetest.after(0.5, skycraft.lobby_tick)
38 minetest.register_chatcommand("lobby", {
39 description = "Warp to the Lobby",
40 func = skycraft.join_lobby
43 minetest.register_chatcommand("skyblock", {
44 description = "Join Skyblock",
45 func = skycraft.join_skyblock
48 minetest.register_chatcommand("shop", {
49 description = "Join Skyblock",
51 skycraft.join_lobby(name)
52 local player = minetest.get_player_by_name(name)
54 player:set_pos({x = 50, y = 10000, z = 50})
58 minetest.register_on_joinplayer(function(player)
59 minetest.after(0, skycraft.join_lobby, player:get_player_name())
62 minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
63 if player:get_pos().y > 5000 then
64 minetest.chat_send_player(hitter:get_player_name(), minetest.colorize("#FF6737", "You can not do PvP here!"))
69 minetest.register_on_player_hpchange(function(player, hp_change)
70 return (player:get_pos().y > 5000) and 0 or hp_change
73 minetest.register_on_mods_loaded(function()
74 function mcl_spawn.get_world_spawn_pos()
75 return skycraft.lobby_pos
79 minetest.after(0.5, skycraft.lobby_tick)