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

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

Discussion in 'Разработка плагинов для новичков' started by Ari, Feb 22, 2016.

Thread Status:
Not open for further replies.
  1. Автор темы
    Ari

    Ari Участник

    Trophy Points:
    31
    Вот есть код:
    Code:
    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 Старожил Пользователь

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

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

    Ari Участник

    Trophy Points:
    31
Thread Status:
Not open for further replies.

Share This Page