- Баллы
- 76
Здравствуйте, у меня самописный плагин на открытие небольшой менюшки при заходе на сервер, все что задумывал работает ,только вот встала проблема, я использую @EventHandler "join" (как именно смотрите в коде ниже) и у меня выскакивает ошибка что удаленный хост разорвал соединение , методом подбора длительности таймера я понял что "менюшка" запускаеться самая первая а потом уже игрок появляеться в мире.Узнал я это заметив закономерность что если я ставлю таймер на 30 секунд то мир грузиться 30 секунд, ставлю 8 секунд и загрузка тоже 8 секунд. Вообщем нужна помощь как сделать так чтоб менюшка открывалась после появления игрока?
код таймера :
Код:
public class GUI implements Listener{
@EventHandler
public void join (PlayerJoinEvent j){
Player p = (Player) j.getPlayer();
GUI.openGUI(p);
}
public static void openGUI(Player p){
Inventory inv = Bukkit.createInventory(null, 9, "Начальное меню");
inv.setItem(0, ItemUtils.create(Material.REDSTONE_BLOCK, "Обнулить счет"));
inv.setItem(1, ItemUtils.create(Material.LAPIS_BLOCK, "Получить креатив"));
inv.setItem(8, ItemUtils.create(Material.WOOD_DOOR, ChatColor.RED + "Выход"));
p.openInventory(inv);
}
@EventHandler
public void onInventoryClick (InventoryClickEvent e){
Player p = (Player) e.getWhoClicked();
if (e.getInventory().getName().equalsIgnoreCase("Начальное меню")){
e.setCancelled(true);
if(e.getCurrentItem().getType() == Material.WOOD_DOOR){
e.setCancelled(true);
p.closeInventory();
} else if (e.getCurrentItem().getType() == Material.REDSTONE_BLOCK){
double allm = Main.econ.getBalance(p);
Main.econ.withdrawPlayer(p, allm);
e.setCancelled(true);
p.sendMessage("Выш счет обнулен");
p.closeInventory();
} else if (e.getCurrentItem().getType() == Material.LAPIS_BLOCK){
e.setCancelled(true);
if(p.getGameMode() != GameMode.CREATIVE){
p.setGameMode(GameMode.CREATIVE);
p.sendMessage("Вы получили Креатив");
} else { p.sendMessage("У вас уже есть Креатив");}
p.closeInventory();
}
}
}
}
код таймера :
Код:
int i =1;
int b =0;
while(i<61)
{
System.out.println("Количество секунд: "+ i);
Thread.sleep(1000);
i++;
}
if (i >= 60) {
Player p = (Player) j.getPlayer();
GUI.openGUI(p);
}