Advertisement
SnowyCoder

CenterMessage opt and fix

Jul 2nd, 2016
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.47 KB | None | 0 0
  1. public static String centerMessage(String message){
  2.         if(message == null || message.equals("")) return "";
  3.         message = ChatColor.translateAlternateColorCodes('&', message);
  4.  
  5.         int messagePxSize = 0;
  6.         boolean previousCode = false;
  7.         boolean isBold = false;
  8.  
  9.         for(char c : message.toCharArray()){
  10.             if(c == ChatColor.COLOR_CHAR){//much safer
  11.                 previousCode = true;
  12.             }else if(previousCode){
  13.                 previousCode = false;
  14.                 char nc = Character.toLowerCase(c);
  15.                 if(!isBold)
  16.                     if(nc == ChatColor.BOLD.getChar())
  17.                         isBold = true;
  18.                 else
  19.                     if(nc == ChatColor.RESET.getChar())
  20.                         isBold = false;
  21.             }else{
  22.                 DefaultFontInfo dFI = DefaultFontInfo.getDefaultFontInfo(c);
  23.                 messagePxSize += isBold ? dFI.getBoldLength() : dFI.getLength();
  24.                 messagePxSize++;
  25.             }
  26.         }
  27.  
  28.         int halvedMessageSize = messagePxSize / 2;
  29.         int toCompensate = CENTER_PX - halvedMessageSize;
  30.         int spaceLength = DefaultFontInfo.SPACE.getLength() + 1;
  31.  
  32.         StringBuilder sb = new StringBuilder((int) (Math.ceil((float)toCompensate/spaceLength) + message.length()));//some optimization
  33.         for(int i = 0; i < toCompensate; i += spaceLength)
  34.             sb.append(" ");
  35.         return  sb.append(message).toString();
  36.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement