Ir para conteúdo
  • 0

[Duvida] [Java] Optimizar o uso de memoria do plugin?


Solitario

Pergunta

Alguém poderia me dizer como posso optimizar e saber que parte esta gerando muito gasto de memoria do servidor (Memoria ram)

Quero saber até por que tem um servidor que eu conheço o servidor fica 100/100 1 GB fica sem lagg e sem travar .... agora o meu fica 100% de uso de memoria e dando umas travadas .... (Personalizei um pouco o plugin (Não decompilei, é src) então quem sabe pode ser isso também ...)

Bom ... como já disse gostaria de saber como resolver isso ^^ desde já agradeço se alguém poder me ajudar ^^

Editado por Solitario
Link para o comentário
Compartilhar em outros sites

28 respostass a esta questão

Posts Recomendados

Recomendo você usar um profiler.

 

Os que eu já usei são esses:

 - jprofiler

 - yourkit

 

Da uma olhada.

jprofiler não entendi como selecionar um servidor '-' mais mesmo assim segui tipo os passos e deu nisso:

 

 

TN2apBR.png

 

 

O outro (yourkit não sei usar também '-' mais consegui ums resultados e.e)

MYuAHPC.png

Link para o comentário
Compartilhar em outros sites

jprofiler não entendi como selecionar um servidor '-' mais mesmo assim segui tipo os passos e deu nisso:

 

 

TN2apBR.png

 

 

O outro (yourkit não sei usar também '-' mais consegui ums resultados e.e)

MYuAHPC.png

 

Vai expandindo esse Thread.Run, vê se tu acha algo relacionado a algum plugin.

Link para o comentário
Compartilhar em outros sites

Vai expandindo esse Thread.Run, vê se tu acha algo relacionado a algum plugin.

nametagedit '-' o de baixo (laranja porém quando abre ta uma barrinha pequena)

E também agora que eu fechei o servidor também ... meio que sumiu '-'

Mais... apareceu esses 2 laranja

 

P4qEgal.png

 

@edit

e.e fiz do projeto (Acho que deu certo não sei ...)

fp5Py63.png

SwWqeJW.png

Editado por Solitario
Link para o comentário
Compartilhar em outros sites

@UP

;-; o servidor enteiro ta lagadão ;-;

Alguém pode ajudar ;-; já tentei até mudar o pl pra mysql e tal ... só que continua lagg '-' então é algo a ver com alguma coisa no pl ;-;

 

lagadão ou usando muita memoria?

Link para o comentário
Compartilhar em outros sites

lagadão ou usando muita memoria?

ambas coisas '-' fica tipo travando o tempo todo e a memoria fica entre 70-100% (Ele continua travando quando ta em 70%)

 

@edit

No meu pc isso não ocorre porém na hospedagem sim

Editado por Solitario
Link para o comentário
Compartilhar em outros sites

ambas coisas '-' fica tipo travando o tempo todo e a memoria fica entre 70-100% (Ele continua travando quando ta em 70%)

 

@edit

No meu pc isso não ocorre porém na hospedagem sim

 

Quantos jogadores tem online quando começa a "lagar" ?

Link para o comentário
Compartilhar em outros sites

Tem alguns plugins bem lagados eim...

 

Ali em "Event" mostra onde que esse código "lagado" tá, o formato é "Classe::método". Da uma olhada.

Mais como faço para optimizar ;-; ? Tipo esses task '-'

 

@edit:

Tipo isso aqui: (ScoreBoard ele ta lagando de mais (Eu acho))

public void atualizarscores(){
    	new BukkitRunnable()
    	{
          public void run() {
				if(Bukkit.getOnlinePlayers().length == 0){
					return;
				}
				for(Player p : Bukkit.getOnlinePlayers()){
      		if (Score.ntemscore.contains(p.getName())) {
      			if (p.getScoreboard() != null && p.getScoreboard().getObjective("scoreboardutils") != null) {
      				String cash = "Desligado";
      				if(UsandoCash){
      					cash = Main.instance.obterinfo.cash(p);
      				}
      				final Team a2 = p.getScoreboard().getTeam("a2");
                      final Team a3 = p.getScoreboard().getTeam("a3");
                      final Team a4 = p.getScoreboard().getTeam("a4");
                      final Team a6 = p.getScoreboard().getTeam("a6");
                      final Team a7 = p.getScoreboard().getTeam("a7");
                      final Team a9 = p.getScoreboard().getTeam("a9");
                      final Team a10 = p.getScoreboard().getTeam("a10");
                      final Team a11 = p.getScoreboard().getTeam("a11");
                      a11.setSuffix(KillsDeathsRankXp.getRank(p));
                      a10.setSuffix(Integer.valueOf(KillsDeathsRankXp.getXp(p)).toString());
                      a9.setSuffix(Integer.valueOf(KillsDeathsRankXp.getCaixa(p)).toString());
                      a7.setSuffix(API.getKit(p));
                      a6.setSuffix(CombatLog.statuscombat(p));
                      
                      a4.setSuffix(Integer.valueOf(KillsDeathsRankXp.getKills(p)).toString());
                      a3.setSuffix(Integer.valueOf(KillsDeathsRankXp.getDeaths(p)).toString());
                      a2.setSuffix(cash);
                      
                  }     
              }
			}
          }
    	 
    	}.runTaskLater(plugin, 100);
    }
Editado por Solitario
Link para o comentário
Compartilhar em outros sites

 

Mais como faço para optimizar ;-; ? Tipo esses task '-'

 

@edit:

Tipo isso aqui: (ScoreBoard ele ta lagando de mais (Eu acho))

public void atualizarscores(){
    	new BukkitRunnable()
    	{
          public void run() {
				if(Bukkit.getOnlinePlayers().length == 0){
					return;
				}
				for(Player p : Bukkit.getOnlinePlayers()){
      		if (Score.ntemscore.contains(p.getName())) {
      			if (p.getScoreboard() != null && p.getScoreboard().getObjective("scoreboardutils") != null) {
      				String cash = "Desligado";
      				if(UsandoCash){
      					cash = Main.instance.obterinfo.cash(p);
      				}
      				final Team a2 = p.getScoreboard().getTeam("a2");
                      final Team a3 = p.getScoreboard().getTeam("a3");
                      final Team a4 = p.getScoreboard().getTeam("a4");
                      final Team a6 = p.getScoreboard().getTeam("a6");
                      final Team a7 = p.getScoreboard().getTeam("a7");
                      final Team a9 = p.getScoreboard().getTeam("a9");
                      final Team a10 = p.getScoreboard().getTeam("a10");
                      final Team a11 = p.getScoreboard().getTeam("a11");
                      a11.setSuffix(KillsDeathsRankXp.getRank(p));
                      a10.setSuffix(Integer.valueOf(KillsDeathsRankXp.getXp(p)).toString());
                      a9.setSuffix(Integer.valueOf(KillsDeathsRankXp.getCaixa(p)).toString());
                      a7.setSuffix(API.getKit(p));
                      a6.setSuffix(CombatLog.statuscombat(p));
                      
                      a4.setSuffix(Integer.valueOf(KillsDeathsRankXp.getKills(p)).toString());
                      a3.setSuffix(Integer.valueOf(KillsDeathsRankXp.getDeaths(p)).toString());
                      a2.setSuffix(cash);
                      
                  }     
              }
			}
          }
    	 
    	}.runTaskLater(plugin, 100);
    }

 

Onde você ta chamando esse método "atualizarscores" ?

 

 

Tem alguma outra Task com 100 de intervalo na classe "Main" ?

Link para o comentário
Compartilhar em outros sites

Onde você ta chamando esse método "atualizarscores" ?

 

 

Tem alguma outra Task com 100 de intervalo na classe "Main" ?

Essa é a task (Tava em schedule mudei para bukkit runnable continuo o mesmo) estou usando ele para ficar no onenable

    public void onEnable() {
        new Thread(){
        	public void run(){
		        atualizarscores();
        	}
        }.start();
    }
Link para o comentário
Compartilhar em outros sites

 

Essa é a task (Tava em schedule mudei para bukkit runnable continuo o mesmo) estou usando ele para ficar no onenable

    public void onEnable() {
        new Thread(){
        	public void run(){
		        atualizarscores();
        	}
        }.start();
    }

 

Tira de dentro dessa Thread.

 

Como é a implementação desses métodos?

 

Main.instance.obterinfo.cash(p)

PI.getKit(p)

KillsDeathsRankXp.getCaixa(p)

KillsDeathsRankXp.getRank(p)

...

Link para o comentário
Compartilhar em outros sites

Tira de dentro dessa Thread.

 

Como é a implementação desses métodos?

 

Main.instance.obterinfo.cash(p)

PI.getKit(p)

KillsDeathsRankXp.getCaixa(p)

KillsDeathsRankXp.getRank(p)

...

Esses ai são para obter as info dos jogadores no caso pegadas por arquivos/mysql

Eles atualizam pelo metodo de atualizar a prefix de uma team '-' (Scoreboard é feito em team, segue a baixo como fiz)

 

 

	public static void FlameScore(final Player p) {
    	final ScoreboardManager manager = Bukkit.getScoreboardManager();
        final Scoreboard ftw = manager.getNewScoreboard();
        final Objective obj = ftw.registerNewObjective("scoreboardutils", "arthurdev");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName(API.NomeServer);
        final Team a0 = ftw.registerNewTeam("a0");
        final Team a1 = ftw.registerNewTeam("a1");
        final Team a2 = ftw.registerNewTeam("a2");
        final Team a3 = ftw.registerNewTeam("a3");
        final Team a4 = ftw.registerNewTeam("a4");
        final Team a5 = ftw.registerNewTeam("a5");
        final Team a6 = ftw.registerNewTeam("a6");
        final Team a7 = ftw.registerNewTeam("a7");
        final Team a8 = ftw.registerNewTeam("a8");
        final Team a9 = ftw.registerNewTeam("a9");
        final Team a10 = ftw.registerNewTeam("a10");
        final Team a11 = ftw.registerNewTeam("a11");
        final Team a12 = ftw.registerNewTeam("a12");
        final Team a13 = ftw.registerNewTeam("a13");
        final FastOfflinePlayer line12 = new FastOfflinePlayer("§3");
        final FastOfflinePlayer line11 = new FastOfflinePlayer("§b» §7Rank §b");
        final FastOfflinePlayer line10 = new FastOfflinePlayer("§b» §7XP §b");
        final FastOfflinePlayer line9 = new FastOfflinePlayer("§b» §7Caixas §b");
        final FastOfflinePlayer line8 = new FastOfflinePlayer("§e");
        final FastOfflinePlayer line7 = new FastOfflinePlayer("§b» §7Kit §b");
        final FastOfflinePlayer line6 = new FastOfflinePlayer("§b» §7Combate ");
        final FastOfflinePlayer line5 = new FastOfflinePlayer("§7");
        final FastOfflinePlayer line4 = new FastOfflinePlayer("§b» §7Matou §b");
        final FastOfflinePlayer line3 = new FastOfflinePlayer("§b» §7Morreu §b");
        final FastOfflinePlayer line2 = new FastOfflinePlayer("§b» §7Cash §b");
        final FastOfflinePlayer line1 = new FastOfflinePlayer("§f");
        final FastOfflinePlayer line0 = new FastOfflinePlayer("§b➥§7 /score");
        final FastOfflinePlayer line13 = new FastOfflinePlayer("§7    ");
        a0.addPlayer((OfflinePlayer) line0);
        a1.addPlayer((OfflinePlayer) line1);
        a2.addPlayer((OfflinePlayer) line2);
        a3.addPlayer((OfflinePlayer) line3);
        a4.addPlayer((OfflinePlayer) line4);
        a5.addPlayer((OfflinePlayer) line5);
        a6.addPlayer((OfflinePlayer) line6);
        a7.addPlayer((OfflinePlayer) line7);
        a8.addPlayer((OfflinePlayer) line8);
        a9.addPlayer((OfflinePlayer) line9);
        a10.addPlayer((OfflinePlayer) line10);
        a11.addPlayer((OfflinePlayer) line11);
        a12.addPlayer((OfflinePlayer) line12);
        a13.addPlayer((OfflinePlayer) line13);
        
        
        
        if(line0.getName().length() <= 16){
        	obj.getScore(line0.getName()).setScore(0);
        }else if(line0.getName().length() > 16 && line0.getName().length() < 32){
        	a0.setPrefix(line0.getName().substring(0, 16));
        	obj.getScore(line0.getName().substring(16)).setScore(0);
        }
        
        if(line1.getName().length() <= 16){
        	obj.getScore(line1.getName()).setScore(1);
        }else if(line1.getName().length() > 16 && line1.getName().length() < 32){
        	a1.setPrefix(line1.getName().substring(0, 16));
        	obj.getScore(line1.getName().substring(16)).setScore(1);
        }
        
        if(line2.getName().length() <= 16){
        	obj.getScore(line2.getName()).setScore(2);
        }else if(line2.getName().length() > 16 && line2.getName().length() < 32){
        	a2.setPrefix(line2.getName().substring(0, 16));
        	obj.getScore(line2.getName().substring(16)).setScore(2);
        }
        
        if(line3.getName().length() <= 16){
        	obj.getScore(line3.getName()).setScore(3);
        }else if(line3.getName().length() > 16 && line3.getName().length() < 32){
        	a3.setPrefix(line3.getName().substring(0, 16));
        	obj.getScore(line3.getName().substring(16)).setScore(3);
        }
        if(line4.getName().length() <= 16){
        	obj.getScore(line4.getName()).setScore(4);
        }else if(line4.getName().length() > 16 && line4.getName().length() < 32){
        	a4.setPrefix(line4.getName().substring(0, 16));
        	obj.getScore(line4.getName().substring(16)).setScore(4);
        }
        if(line5.getName().length() <= 16){
        	obj.getScore(line5.getName()).setScore(5);
        }else if(line5.getName().length() > 16 && line5.getName().length() < 32){
        	a5.setPrefix(line5.getName().substring(0, 16));
        	obj.getScore(line5.getName().substring(16)).setScore(5);
        }
        if(line6.getName().length() <= 16){
        	obj.getScore(line6.getName()).setScore(6);
        }else if(line6.getName().length() > 16 && line6.getName().length() < 32){
        	a6.setPrefix(line6.getName().substring(0, 16));
        	obj.getScore(line6.getName().substring(16)).setScore(6);
        }
        if(line7.getName().length() <= 16){
        	obj.getScore(line7.getName()).setScore(7);
        }else if(line7.getName().length() > 16 && line7.getName().length() < 32){
        	a7.setPrefix(line7.getName().substring(0, 16));
        	obj.getScore(line7.getName().substring(16)).setScore(7);
        }
        if(line8.getName().length() <= 16){
        	obj.getScore(line8.getName()).setScore(8);
        }else if(line8.getName().length() > 16 && line8.getName().length() < 32){
        	a8.setPrefix(line8.getName().substring(0, 16));
        	obj.getScore(line8.getName().substring(16)).setScore(8);
        }
        if(line9.getName().length() <= 16){
        	obj.getScore(line9.getName()).setScore(9);
        }else if(line9.getName().length() > 16 && line9.getName().length() < 32){
        	a9.setPrefix(line9.getName().substring(0, 16));
        	obj.getScore(line9.getName().substring(16)).setScore(9);
        }
        if(line10.getName().length() <= 16){
        	obj.getScore(line10.getName()).setScore(10);
        }else if(line10.getName().length() > 16 && line10.getName().length() < 32){
        	a10.setPrefix(line10.getName().substring(0, 16));
        	obj.getScore(line10.getName().substring(16)).setScore(10);
        }
        if(line11.getName().length() <= 16){
        	obj.getScore(line11.getName()).setScore(11);
        }else if(line11.getName().length() > 16 && line11.getName().length() < 32){
        	a11.setPrefix(line11.getName().substring(0, 16));
        	obj.getScore(line11.getName().substring(16)).setScore(11);
        }
        if(line12.getName().length() <= 16){
        	obj.getScore(line12.getName()).setScore(12);
        }else if(line12.getName().length() > 16 && line12.getName().length() < 32){
        	a12.setPrefix(line12.getName().substring(0, 16));
        	obj.getScore(line12.getName().substring(16)).setScore(12);
        }
        if(line13.getName().length() <= 16){
        	obj.getScore(line13.getName()).setScore(13);
        }else if(line13.getName().length() > 16 && line13.getName().length() < 32){
        	a13.setPrefix(line13.getName().substring(0, 16));
        	obj.getScore(line13.getName().substring(16)).setScore(13);
        }
        a13.setSuffix("meuip  ");
        p.setScoreboard(ftw);
        final Objective o = p.getScoreboard().registerNewObjective("health", "health");
        o.setDisplayName(ChatColor.GREEN + "\u2764");
        o.setDisplaySlot(DisplaySlot.BELOW_NAME);
    }

 

 

 

O metodo  de implementação se tiver falando do import é apenas de class exceto o de cash que é de outro pl

import net.iz44kpvp.kitpvp.Sistemas.API;
import net.iz44kpvp.kitpvp.Sistemas.KillsDeathsRankXp;

se quiser dizer sobre como eles pegam os dados:

 

 

public class KillsDeathsRankXp
{
    public static String getRankPequeno(final Player p) {
        final double a = getKills(p);
        if (a <= 0.0) {
            return ChatColor.DARK_GRAY + "\u2717";
        }
        if (a <= 75.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 130.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 150.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 180.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 200.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 215.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 230.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 250.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 280.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 300.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 315.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 330.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 350.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 380.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 400.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 415.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 430.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 450.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 480.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 500.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 515.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 530.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 550.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 580.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 600.0) {
            return ChatColor.RED + "\u273e";
        }
        return ChatColor.RED + "\u273e";
    }
    
    public static String getRank(final Player p) {
        final double a = getKills(p);
        if (a <= 0.0) {
            return ChatColor.DARK_GRAY + "Sem Rank";
        }
        if (a <= 75.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 130.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 150.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 180.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 200.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 215.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 230.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 250.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 280.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 300.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 315.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 330.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 350.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 380.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 400.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 415.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 430.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 450.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 480.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 500.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 515.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 530.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 550.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 580.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 600.0) {
            return ChatColor.RED + "\u273e Ruby";
        }
        return ChatColor.RED + "\u273e Ruby";
    }
    public static int getKills(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getKills(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".Matou");
        }
    }
    
    public static int getDeaths(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getDeaths(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".Morreu");
        }
    }
    
    public static int getXp(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getXP(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".XP");
        }
    }
    
    public static int getCaixa(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getCaixas(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".Caixa");
        }
    }

 

 

Editado por Solitario
Link para o comentário
Compartilhar em outros sites

Esses ai são para obter as info dos jogadores no caso pegadas por arquivos/mysql

Eles atualizam pelo metodo de atualizar a prefix de uma team '-' (Scoreboard é feito em team, segue a baixo como fiz)

 

 

	public static void FlameScore(final Player p) {
    	final ScoreboardManager manager = Bukkit.getScoreboardManager();
        final Scoreboard ftw = manager.getNewScoreboard();
        final Objective obj = ftw.registerNewObjective("scoreboardutils", "arthurdev");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName(API.NomeServer);
        final Team a0 = ftw.registerNewTeam("a0");
        final Team a1 = ftw.registerNewTeam("a1");
        final Team a2 = ftw.registerNewTeam("a2");
        final Team a3 = ftw.registerNewTeam("a3");
        final Team a4 = ftw.registerNewTeam("a4");
        final Team a5 = ftw.registerNewTeam("a5");
        final Team a6 = ftw.registerNewTeam("a6");
        final Team a7 = ftw.registerNewTeam("a7");
        final Team a8 = ftw.registerNewTeam("a8");
        final Team a9 = ftw.registerNewTeam("a9");
        final Team a10 = ftw.registerNewTeam("a10");
        final Team a11 = ftw.registerNewTeam("a11");
        final Team a12 = ftw.registerNewTeam("a12");
        final Team a13 = ftw.registerNewTeam("a13");
        final FastOfflinePlayer line12 = new FastOfflinePlayer("§3");
        final FastOfflinePlayer line11 = new FastOfflinePlayer("§b» §7Rank §b");
        final FastOfflinePlayer line10 = new FastOfflinePlayer("§b» §7XP §b");
        final FastOfflinePlayer line9 = new FastOfflinePlayer("§b» §7Caixas §b");
        final FastOfflinePlayer line8 = new FastOfflinePlayer("§e");
        final FastOfflinePlayer line7 = new FastOfflinePlayer("§b» §7Kit §b");
        final FastOfflinePlayer line6 = new FastOfflinePlayer("§b» §7Combate ");
        final FastOfflinePlayer line5 = new FastOfflinePlayer("§7");
        final FastOfflinePlayer line4 = new FastOfflinePlayer("§b» §7Matou §b");
        final FastOfflinePlayer line3 = new FastOfflinePlayer("§b» §7Morreu §b");
        final FastOfflinePlayer line2 = new FastOfflinePlayer("§b» §7Cash §b");
        final FastOfflinePlayer line1 = new FastOfflinePlayer("§f");
        final FastOfflinePlayer line0 = new FastOfflinePlayer("§b➥§7 /score");
        final FastOfflinePlayer line13 = new FastOfflinePlayer("§7    ");
        a0.addPlayer((OfflinePlayer) line0);
        a1.addPlayer((OfflinePlayer) line1);
        a2.addPlayer((OfflinePlayer) line2);
        a3.addPlayer((OfflinePlayer) line3);
        a4.addPlayer((OfflinePlayer) line4);
        a5.addPlayer((OfflinePlayer) line5);
        a6.addPlayer((OfflinePlayer) line6);
        a7.addPlayer((OfflinePlayer) line7);
        a8.addPlayer((OfflinePlayer) line8);
        a9.addPlayer((OfflinePlayer) line9);
        a10.addPlayer((OfflinePlayer) line10);
        a11.addPlayer((OfflinePlayer) line11);
        a12.addPlayer((OfflinePlayer) line12);
        a13.addPlayer((OfflinePlayer) line13);
        
        
        
        if(line0.getName().length() <= 16){
        	obj.getScore(line0.getName()).setScore(0);
        }else if(line0.getName().length() > 16 && line0.getName().length() < 32){
        	a0.setPrefix(line0.getName().substring(0, 16));
        	obj.getScore(line0.getName().substring(16)).setScore(0);
        }
        
        if(line1.getName().length() <= 16){
        	obj.getScore(line1.getName()).setScore(1);
        }else if(line1.getName().length() > 16 && line1.getName().length() < 32){
        	a1.setPrefix(line1.getName().substring(0, 16));
        	obj.getScore(line1.getName().substring(16)).setScore(1);
        }
        
        if(line2.getName().length() <= 16){
        	obj.getScore(line2.getName()).setScore(2);
        }else if(line2.getName().length() > 16 && line2.getName().length() < 32){
        	a2.setPrefix(line2.getName().substring(0, 16));
        	obj.getScore(line2.getName().substring(16)).setScore(2);
        }
        
        if(line3.getName().length() <= 16){
        	obj.getScore(line3.getName()).setScore(3);
        }else if(line3.getName().length() > 16 && line3.getName().length() < 32){
        	a3.setPrefix(line3.getName().substring(0, 16));
        	obj.getScore(line3.getName().substring(16)).setScore(3);
        }
        if(line4.getName().length() <= 16){
        	obj.getScore(line4.getName()).setScore(4);
        }else if(line4.getName().length() > 16 && line4.getName().length() < 32){
        	a4.setPrefix(line4.getName().substring(0, 16));
        	obj.getScore(line4.getName().substring(16)).setScore(4);
        }
        if(line5.getName().length() <= 16){
        	obj.getScore(line5.getName()).setScore(5);
        }else if(line5.getName().length() > 16 && line5.getName().length() < 32){
        	a5.setPrefix(line5.getName().substring(0, 16));
        	obj.getScore(line5.getName().substring(16)).setScore(5);
        }
        if(line6.getName().length() <= 16){
        	obj.getScore(line6.getName()).setScore(6);
        }else if(line6.getName().length() > 16 && line6.getName().length() < 32){
        	a6.setPrefix(line6.getName().substring(0, 16));
        	obj.getScore(line6.getName().substring(16)).setScore(6);
        }
        if(line7.getName().length() <= 16){
        	obj.getScore(line7.getName()).setScore(7);
        }else if(line7.getName().length() > 16 && line7.getName().length() < 32){
        	a7.setPrefix(line7.getName().substring(0, 16));
        	obj.getScore(line7.getName().substring(16)).setScore(7);
        }
        if(line8.getName().length() <= 16){
        	obj.getScore(line8.getName()).setScore(8);
        }else if(line8.getName().length() > 16 && line8.getName().length() < 32){
        	a8.setPrefix(line8.getName().substring(0, 16));
        	obj.getScore(line8.getName().substring(16)).setScore(8);
        }
        if(line9.getName().length() <= 16){
        	obj.getScore(line9.getName()).setScore(9);
        }else if(line9.getName().length() > 16 && line9.getName().length() < 32){
        	a9.setPrefix(line9.getName().substring(0, 16));
        	obj.getScore(line9.getName().substring(16)).setScore(9);
        }
        if(line10.getName().length() <= 16){
        	obj.getScore(line10.getName()).setScore(10);
        }else if(line10.getName().length() > 16 && line10.getName().length() < 32){
        	a10.setPrefix(line10.getName().substring(0, 16));
        	obj.getScore(line10.getName().substring(16)).setScore(10);
        }
        if(line11.getName().length() <= 16){
        	obj.getScore(line11.getName()).setScore(11);
        }else if(line11.getName().length() > 16 && line11.getName().length() < 32){
        	a11.setPrefix(line11.getName().substring(0, 16));
        	obj.getScore(line11.getName().substring(16)).setScore(11);
        }
        if(line12.getName().length() <= 16){
        	obj.getScore(line12.getName()).setScore(12);
        }else if(line12.getName().length() > 16 && line12.getName().length() < 32){
        	a12.setPrefix(line12.getName().substring(0, 16));
        	obj.getScore(line12.getName().substring(16)).setScore(12);
        }
        if(line13.getName().length() <= 16){
        	obj.getScore(line13.getName()).setScore(13);
        }else if(line13.getName().length() > 16 && line13.getName().length() < 32){
        	a13.setPrefix(line13.getName().substring(0, 16));
        	obj.getScore(line13.getName().substring(16)).setScore(13);
        }
        a13.setSuffix("meuip  ");
        p.setScoreboard(ftw);
        final Objective o = p.getScoreboard().registerNewObjective("health", "health");
        o.setDisplayName(ChatColor.GREEN + "\u2764");
        o.setDisplaySlot(DisplaySlot.BELOW_NAME);
    }

 

 

 

O metodo  de implementação se tiver falando do import é apenas de class exceto o de cash que é de outro pl

import net.iz44kpvp.kitpvp.Sistemas.API;
import net.iz44kpvp.kitpvp.Sistemas.KillsDeathsRankXp;

se quiser dizer sobre como eles pegam os dados:

 

 

public class KillsDeathsRankXp
{
    public static String getRankPequeno(final Player p) {
        final double a = getKills(p);
        if (a <= 0.0) {
            return ChatColor.DARK_GRAY + "\u2717";
        }
        if (a <= 75.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 130.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 150.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 180.0) {
            return ChatColor.GREEN + "\u2725";
        }
        if (a <= 200.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 215.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 230.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 250.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 280.0) {
            return ChatColor.GRAY + "\u2723";
        }
        if (a <= 300.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 315.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 330.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 350.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 380.0) {
            return ChatColor.YELLOW + "\u2724";
        }
        if (a <= 400.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 415.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 430.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 450.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 480.0) {
            return ChatColor.AQUA + "\u272a";
        }
        if (a <= 500.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 515.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 530.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 550.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 580.0) {
            return ChatColor.GOLD + "\u2742";
        }
        if (a <= 600.0) {
            return ChatColor.RED + "\u273e";
        }
        return ChatColor.RED + "\u273e";
    }
    
    public static String getRank(final Player p) {
        final double a = getKills(p);
        if (a <= 0.0) {
            return ChatColor.DARK_GRAY + "Sem Rank";
        }
        if (a <= 75.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 130.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 150.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 180.0) {
            return ChatColor.GREEN + "\u2725 Bronze";
        }
        if (a <= 200.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 215.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 230.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 250.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 280.0) {
            return ChatColor.GRAY + "\u2723 Silver";
        }
        if (a <= 300.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 315.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 330.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 350.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 380.0) {
            return ChatColor.YELLOW + "\u2724 Gold";
        }
        if (a <= 400.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 415.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 430.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 450.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 480.0) {
            return ChatColor.AQUA + "\u272a Diamond";
        }
        if (a <= 500.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 515.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 530.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 550.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 580.0) {
            return ChatColor.GOLD + "\u2742 Emerald";
        }
        if (a <= 600.0) {
            return ChatColor.RED + "\u273e Ruby";
        }
        return ChatColor.RED + "\u273e Ruby";
    }
    public static int getKills(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getKills(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".Matou");
        }
    }
    
    public static int getDeaths(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getDeaths(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".Morreu");
        }
    }
    
    public static int getXp(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getXP(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".XP");
        }
    }
    
    public static int getCaixa(final Player p) {
        if(Main.UsandoMYSQL){
            return Main.mysql.getCaixas(p.getName());
        }else{
            return Main.getInstance().status.getInt(String.valueOf(p.getName()) + ".Caixa");
        }
    }

 

 

 

"return Main.mysql.getKills(p.getName());"

 

Se você tiver usando Mysql talvez seja o problema, você está fazendo várias queries a cada 5 segundos...

 

Você deve "cachear" esses valores. Por exemplo, quando o jogador entrar no servidor você pega os dados dele da database e salva na memória, quando ele sair você salva de volta no database.

Link para o comentário
Compartilhar em outros sites

"return Main.mysql.getKills(p.getName());"

 

Se você tiver usando Mysql talvez seja o problema, você está fazendo várias queries a cada 5 segundos...

 

Você deve "cachear" esses valores. Por exemplo, quando o jogador entrar no servidor você pega os dados dele da database e salva na memória, quando ele sair você salva de volta no database.

mesmo em flatfile ele ocorre isso '-' deveria salvar todos os dados de kills em variaveis e ao deslogar colocar os dados a salvar?

Link para o comentário
Compartilhar em outros sites

Sim, é melhor que ficar lendo arquivos várias vezes a cada 5 segundos.

Como faço para em caso de crash/stop ele conseguir salvar os dados ? (Tentei e quando dei /stop simplesmente não salvou nada (Com os players on))

Link para o comentário
Compartilhar em outros sites

Como faço para em caso de crash/stop ele conseguir salvar os dados ? (Tentei e quando dei /stop simplesmente não salvou nada (Com os players on))

 

Salva no onDisable...

 

Você pode salvar a cada X minutos, pra que caso o server "crashe" não perca tudo

Link para o comentário
Compartilhar em outros sites

Salva no onDisable...

 

Você pode salvar a cada X minutos, pra que caso o server "crashe" não perca tudo

se eu fizer um for e tiver muitos players pode crashar sem um thread né '-'?

Vou colocar tmb pra salvar a cada X minutos '-'

 

@Edit

Tentei no onDisable assim:

    public void onDisable() {
    	new Thread(){
			public void run(){
	    		for(Player p : Bukkit.getOnlinePlayers()){
	    			StatusAtuais.Salvardados(p);
	    		}
	    		Bukkit.getConsoleSender().sendMessage("§aPlayer's data salvo!");  	
	    	}
		}.start();
        Bukkit.getConsoleSender().sendMessage("§cPLUGIN DESATIVADO");
    }

e a cada 5 minutos assim: (Ta ao atualizar o scoreboard para reaproveitar o timer de update)

				if(tempo >= 6000){
					tempo = 0;
		    		new Thread(){
		    			public void run(){
				    		for(Player p : Bukkit.getOnlinePlayers()){
				    			StatusAtuais.Salvardados(p);
				    		}
				    		Bukkit.getConsoleSender().sendMessage("§aPlayer's data salvo!");  	
				    	}
		    		}.start();
				}

Porém não estão funcional .-.

Editado por Solitario
Link para o comentário
Compartilhar em outros sites

Salva no onDisable...

 

Você pode salvar a cada X minutos, pra que caso o server "crashe" não perca tudo

.-. não deu certo como ta ali em cima .-.

 

 

    public void onDisable() {
    	new Thread(){
			public void run(){
	    		for(Player p : Bukkit.getOnlinePlayers()){
	    			StatusAtuais.Salvardados(p);
	    		}
	    		Bukkit.getConsoleSender().sendMessage("§aPlayer's data salvo!");  	
	    	}
		}.start();
        Bukkit.getConsoleSender().sendMessage("§cPLUGIN DESATIVADO");
    }

e a cada 5 minutos assim: (Ta ao atualizar o scoreboard para reaproveitar o timer de update)

				if(tempo >= 6000){
					tempo = 0;
		    		new Thread(){
		    			public void run(){
				    		for(Player p : Bukkit.getOnlinePlayers()){
				    			StatusAtuais.Salvardados(p);
				    		}
				    		Bukkit.getConsoleSender().sendMessage("§aPlayer's data salvo!");  	
				    	}
		    		}.start();
				}
Link para o comentário
Compartilhar em outros sites

Como assim não deu certo?

 

E no onDisable não precisa colocar em uma Thread.

'-' esperei o tempo e não deu em nada ... dei stop no servidor e voltei nem tinha mandado mensagem de player's data salvos ... voltei ao servidor ele não tinha salvado os novos dados

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...