Войти или зарегистрироваться

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

  • Автор темы Автор темы 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; 
	}
}
При он работает но сервер ужасно лагает (пинг огромный хотя сервер у меня на компе).
Помогите плиз. Что я не так зделал ?
 
Ну тут всё в целом норм, если ты во время лагов по факту никого не кикаешь.
А когда кикаешь, ну как бы сервер приостанавливается на время соединения до твоего скрипта, да.

Ещё, тут кривая мысль: проверять сессию игрока в onJoin и кикать его. Проще сделать проверку в асинхронном обработчике AsyncPlayerPreLoginEvent и в нём же запрещать вход, делая disallow.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх