Ir para conteúdo
  • 0

[Dúvida] Scoreboard e substring


LuizB

Pergunta

Olá, estou com problemas ao criar uma scoreboard.

Código:

 

  if (text.length() >= 16 && text.length() < 32) {
        	   Map.Entry<Team, String> team2 = makeTeam(text.substring(0,16));
               OfflinePlayerv2 player = new OfflinePlayerv2(team2.getValue());
               team2.getKey().addPlayer(player);
               resetScore(score);
               obj.getScore(player).setScore(score);

Quando o texto inserido na scoreboard é maior que 16, da erro, isso porque só suporta 16 caracteres.

Então estou usando Team + offline player

Porque o suffix do team é 16 o prefix também e offline é 16, totalizando 48.

Eu queria saber se tem como pegar o resto de uma string depois que eu chamei o metodo substring();

Porque eu pegava o resto e botava em um Team.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

Sim, tem o tamanho normal da scoreboard que é 16, Se tu usar teams tu consegue adicionar mais 32, 32 + 16 = 48;

 

Eu consigo usar até 48 caracteres, só que está encolhendo :(

 

 

@EDIT

 

 Ai tipo, eu terei pegar a string e setar ela no prefix, score_normal, e suffix. usando substring só que não sei o calculo

 

@Edit

String texto = "um texto grandkakssdad asd asdsad";
List<String> parts = new ArrayList<>();

if (texto.length() >= 16 && texto.length() < 48) {
    int idx = 0;
    for (int i = 0; i < 4; i++) {
        int end = (i + 1) * 15;
        boolean done = false;

        if (end >= texto.length()) {
            end = texto.length() - 1;
            done = true;
        }
        parts.add(texto.substring(idx, end));
        if (done) {
            break;
        }
        idx = end;
         
    }
}

Fiz essa gambiarra ai e funcionou, vlw flw.

 

ele divide o texto em pedaços de 15 caracteres e adiciona na lista 'parts', é só tu pegar cada um e setar...,

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

"Porque o suffix do team é 16 o prefix também e offline é 16, totalizando 48." ?! '-'

 

?!

String texto = "Um texto bem grande grande xx2";

if (texto.length() >= 16 && texto.length() < 32) {
    String parte1 = texto.substring(0, 15);
    String parte2 = texto.substring(15);
}
Link para o comentário
Compartilhar em outros sites

Creio que tu esteja falando de usar um Team com prefix e suffix pra conseguir colocar até 48 caracteres no scoreboard. Eu fiz esse tutorial há muito tempo: http://gamersboard.com.br/topic/5335-inserindo-mais-de-16-caracteres-no-scoreboard/

Sabe me dizer porque está encolhendo ?, usei o seu código como exemplo.

 

 

Print da scoreboard: http://prntscr.com/dt0txs

 

 

Print da scoreboard 2: http://prnt.sc/dt0txs

Código:

 

 

 @SuppressWarnings("deprecation")
	public void update(String text, int score) {
    
        if (teams.containsKey(score)) {
    		text = ChatColor.translateAlternateColorCodes('&', text);
    		Team team = teams.get(score);
    		
           if (text.length() <= 16 ) {
        	   Map.Entry<Team, String> team2 = makeTeam(text);
               OfflinePlayerv2 player = new OfflinePlayerv2(team2.getValue());
               team2.getKey().addPlayer(player);
               resetScore(score);
               obj.getScore(player).setScore(score);
           }else if (text.length() > 16 && text.length()< 32) {
        	   team.setPrefix(text.substring(0, 16));
        	   String nome = text.substring(16);
        	   Map.Entry<Team, String> team2 = makeTeam(nome);
               OfflinePlayerv2 player = new OfflinePlayerv2(team2.getValue());
               team2.getKey().addPlayer(player);
               resetScore(score);
               obj.getScore(player).setScore(score);
              
               
           }else if (text.length() > 32) {
        	   team.setPrefix(text.substring(0,16));
        	   team.setSuffix(text.substring(32));
        	   String nome = text.substring(16, 32);
        	   Map.Entry<Team, String> team2 = makeTeam(nome);
               OfflinePlayerv2 player = new OfflinePlayerv2(team2.getValue());
               team2.getKey().addPlayer(player);
               resetScore(score);
               obj.getScore(player).setScore(score);
               
           }
        }
    }

Player p = e.getPlayer();
		ScoreboardAPI sb = new ScoreboardAPI("Titulo", "pistola");
		sb.add("Teste "+ Double.toString(economy.getBalance(p)), 0);
Editado por Cuthmf
Link para o comentário
Compartilhar em outros sites

 

"Porque o suffix do team é 16 o prefix também e offline é 16, totalizando 48." ?! '-'

 

?!

String texto = "Um texto bem grande grande xx2";

if (texto.length() >= 16 && texto.length() < 32) {
    String parte1 = texto.substring(0, 15);
    String parte2 = texto.substring(15);
}

Sim, tem o tamanho normal da scoreboard que é 16, Se tu usar teams tu consegue adicionar mais 32, 32 + 16 = 48;

 

Eu consigo usar até 48 caracteres, só que está encolhendo :(

 

@EDIT

 

Um exemplo: Se a scoreboard tiver 38 linhas, eu tenho que dividir ela em 3, e colocar um no prefixo, score_normal, e sufixo, usando substring.

 

@EDIT 2

 

 Ai tipo, eu terei pegar a string e setar ela no prefix, score_normal, e suffix. usando substring só que não sei o calculo

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

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