MENSAGENS CENTRALIZADAS!

 

Olá! hoje irei ensinar como enviar uma mensagem centralizada para algum player no chat!

 

OBS:Não fui eu que criei este code!

OBS²: Não sei quem foi, então não tem como por créditos.. (se alguém souber, me avise)

 Créditos: Lucca..


Bom, basta você adicionar o seguinte método a sua class:

private final static int CENTER_PX = 154;
 
public static void sendCenteredMessage(Player player, String message){
        if(message == null || message.equals("")) player.sendMessage("");
                message = ChatColor.translateAlternateColorCodes('&', message);
               
                int messagePxSize = 0;
                boolean previousCode = false;
                boolean isBold = false;
               
                for(char c : message.toCharArray()){
                        if(c == '§'){
                                previousCode = true;
                                continue;
                        }else if(previousCode == true){
                                previousCode = false;
                                if(c == 'l' || c == 'L'){
                                        isBold = true;
                                        continue;
                                }else isBold = false;
                        }else{
                                DefaultFontInfo dFI = DefaultFontInfo.getDefaultFontInfo(c);
                                messagePxSize += isBold ? dFI.getBoldLength() : dFI.getLength();
                                messagePxSize++;
                        }
                }
               
                int halvedMessageSize = messagePxSize / 2;
                int toCompensate = CENTER_PX - halvedMessageSize;
                int spaceLength = DefaultFontInfo.SPACE.getLength() + 1;
                int compensated = 0;
                StringBuilder sb = new StringBuilder();
                while(compensated < toCompensate){
                        sb.append(" ");
                        compensated += spaceLength;
                }
                player.sendMessage(sb.toString() + message);
        }

Após isso, basta fazer apenas isto:

sendCenteredMessage(p, "Teste gamersboard");

E sua mensagem será enviada ao player p, totalmente centralizada! ;)

 

@EDIT

Você também precisará criar uma class de nome DefaultFontInfo, contendo o seguinte code: CLIQUE AQUI PARA VER O CODE

E lembrando, este code suporta totalmente o uso de cores (§).

ESTE SITE FOI CRIADO USANDO