Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Лаги после установки моего плагина. (там где пинг иногда крестик)

Тема в разделе "Разработка плагинов для новичков", создана пользователем Ari, 22 фев 2016.

Статус темы:
Закрыта.
  1. Автор темы
    Ari

    Ari Участник

    Баллы:
    31
    Вот есть код:
    Код:
    package ajs;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class main extends JavaPlugin implements Listener
    {
    	public void onEnable(){
    		getLogger().info("AJS enabled!");
    		Bukkit.getPluginManager().registerEvents(this, this);
    	}
    	public String nologin = "NoGod";
    	public String login = "OK";
    	public String log = "";
    	public void onDisable(){
    		getLogger().info("AJS disabled.");
    	}
    	@EventHandler
        public void onJoin(PlayerJoinEvent event) throws Exception
    	{
    		Kick(event);
    	}
    
    	public static String getHTML(String urlToRead) throws Exception 
    	{
    		StringBuilder result = new StringBuilder();
    		URL url = new URL(urlToRead);
    		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    		conn.setRequestMethod("GET");
    		BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    		String line;
    		while ((line = rd.readLine()) != null) {
    			result.append(line);
    		}
    		rd.close();
    		return result.toString();
    	}
    	public void Kick(PlayerJoinEvent event) throws Exception
    	{
    			log = getHTML("http://localhost/getToken.php?login="+event.getPlayer().getName() +"&ip="+ event.getPlayer().getAddress().getHostName());
    			getLogger().info(log);
    			if(log.equals(login))
    			{
    				getLogger().info("Join");
    			}
    			else if(log.equals(nologin))
    			{
    				getLogger().info(event.getPlayer().getName() +" Bad Login!");
    				Player p = event.getPlayer();
    		        p.kickPlayer("Время сессии истекло. Перезайдите в игру ");
    			}
    	}
    	@Override
    	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    		if (cmd.getName().equalsIgnoreCase("basic")) { // If the player typed /basic then do the following...
    			//Player p = (Player)sender;
    	        //p.kickPlayer("Время сессии истекло. Перезайдите в игру");
    			return true;
    		} //If this has happened the function will return true. 
    	        // If this hasn't happened the value of false will be returned.
    		return false; 
    	}
    }
    
    
    При он работает но сервер ужасно лагает (пинг огромный хотя сервер у меня на компе).
    Помогите плиз. Что я не так зделал ?
     
  2. Хостинг MineCraft
    <
  3. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Ну тут всё в целом норм, если ты во время лагов по факту никого не кикаешь.
    А когда кикаешь, ну как бы сервер приостанавливается на время соединения до твоего скрипта, да.

    Ещё, тут кривая мысль: проверять сессию игрока в onJoin и кикать его. Проще сделать проверку в асинхронном обработчике AsyncPlayerPreLoginEvent и в нём же запрещать вход, делая disallow.
     
  4. Автор темы
    Ari

    Ari Участник

    Баллы:
    31
Статус темы:
Закрыта.

Поделиться этой страницей