Ir para conteúdo
  • 0

Top 5 comando


mikept

Pergunta

Estou criando um comando de top 5, mas estou com uma dúvida...


Está tudo funcionando certinho, mas em vez de me dar o nome do jogador da-me um numero...


Alguem me ajuda?


 


Agradeço pela ajuda :)


 


KqpFejr.png


 


 


PlayerData File:


 


6cxlw1c.png


 


 


Código:


 


eBqaOtj.png

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

	private void sortPlayers(List<String> uuids) {
	        try {
                        Collections.sort(uuids, new Comparator<String>() {
                                @Override
                                public int compare(String a1, String a2) {
                                        Integer o1 = base.get(a1);
                                        Integer o2 = base.get(a2);
                                        return o2.compareTo(o1);
        	                }
                        });
		} catch (NullPointerException e) {}
	}
	
	public void usar(Player p) {
		List<String> uuids = new ArrayList<String>(); 
		for(String st : base.keySet()) {
			uuids.add(st);
		}
		sortPlayers(uuids);
		int rank = 1;
		for(String player : uuids) {
			p.sendMessage("§e" + rank + "º: " + player + " - " + base.get(player));
                        rank++;
		}
	}

Eu creio que assim dê.

 

Desculpe pelos espaços, ficou meio estranho quando copiei para aqui ._.

Link para o comentário
Compartilhar em outros sites

  • 0

	public int compare(String a, String b) {
		if (base.get(a) >= base.get(b)) {
			return 1;
		}else {
			return -1;
		}
	}

Basta trocar o retorno da comparação de -1 para 1

e vice versa

:D

 

Ficou na mesma... :(

	private void sortPlayers(List<String> uuids) {
	        try {
                        Collections.sort(uuids, new Comparator<String>() {
                                @Override
                                public int compare(String a1, String a2) {
                                        Integer o1 = base.get(a1);
                                        Integer o2 = base.get(a2);
                                        return o2.compareTo(o1);
        	                }
                        });
		} catch (NullPointerException e) {}
	}
	
	public void usar(Player p) {
		List<String> uuids = new ArrayList<String>(); 
		for(String st : base.keySet()) {
			uuids.add(st);
		}
		sortPlayers(uuids);
		int rank = 1;
		for(String player : uuids) {
			p.sendMessage("§e" + rank + "º: " + player + " - " + base.get(player));
                        rank++;
		}
	}

Eu creio que assim dê.

 

Desculpe pelos espaços, ficou meio estranho quando copiei para aqui ._.

 

Nao percebo esse codigo... não percebo onde tenho de colocar isso. 

Poderá dar uma ajudinha?

Link para o comentário
Compartilhar em outros sites

  • 0

Óbvio. Ali na linha 35 você está adicionando os minutos como chave e valor na hashmap. Muda o primeiro argumento do data.put pra key, e lá na linha 62 você coloca String pname = Bukkit.getOfflinePlayer(UUID.fromString(e.getKey())).getName();

Link para o comentário
Compartilhar em outros sites

  • 0

Você também pode estar alterando como 


a mensagem é exibida:


 


antes:




for (int i = 1; i < 6; i++) {
Entry<String, Integer> e = sorted_map.pollFirstEntry();
String pname = e.getKey();
int score = e.getValue();
p.sendMenssage(i + ". §6" + pname + ": §f" + score);
}

depois:




for (int i = 6; i > 1; i--) {
Entry<String, Integer> e = sorted_map.pollFirstEntry();
String pname = e.getKey();
int score = e.getValue();
p.sendMenssage(i + ". §6" + pname + ": §f" + score);
}
Link para o comentário
Compartilhar em outros sites

  • 0

Óbvio. Ali na linha 35 você está adicionando os minutos como chave e valor na hashmap. Muda o primeiro argumento do data.put pra key, e lá na linha 62 você coloca String pname = Bukkit.getOfflinePlayer(UUID.fromString(e.getKey()).getName();

Assim?

 

http://prntscr.com/k15nm1

Link para o comentário
Compartilhar em outros sites

  • 0

 

Ficou na mesma... :(

Nao percebo esse codigo... não percebo onde tenho de colocar isso. 

Poderá dar uma ajudinha?

 

Em vez do comparador que você está usando, pode usar esse. Para pôr a lista de UUIDs ordenada por tempo, você apenas precisa de colocar o método no código. Depois, você exibe a lista com um simples for. Espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

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