diff options
author | rmichela <deltahat@gmail.com> | 2012-03-16 00:40:47 -0400 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-03-16 02:48:54 -0400 |
commit | 606f33903c245615fe9906778741ccfcf6677ac7 (patch) | |
tree | 49ff83eb02826934f171fdd9ff34a4aa532355a4 | |
parent | 776745c3352de7c11539e5417e5d9288cf7e670c (diff) | |
download | bukkit-606f33903c245615fe9906778741ccfcf6677ac7.tar bukkit-606f33903c245615fe9906778741ccfcf6677ac7.tar.gz bukkit-606f33903c245615fe9906778741ccfcf6677ac7.tar.lz bukkit-606f33903c245615fe9906778741ccfcf6677ac7.tar.xz bukkit-606f33903c245615fe9906778741ccfcf6677ac7.zip |
[Bleeding] Added ChatColor.translateAlternateColorCodes(). Addresses BUKKIT-1191
-rw-r--r-- | src/main/java/org/bukkit/ChatColor.java | 20 | ||||
-rw-r--r-- | src/test/java/org/bukkit/ChatColorTest.java | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/main/java/org/bukkit/ChatColor.java b/src/main/java/org/bukkit/ChatColor.java index 67909c90..5864d1cf 100644 --- a/src/main/java/org/bukkit/ChatColor.java +++ b/src/main/java/org/bukkit/ChatColor.java @@ -150,6 +150,26 @@ public enum ChatColor { return STRIP_COLOR_PATTERN.matcher(input).replaceAll(""); } + /** + * Translates a string using an alternate color code character into a string that uses the internal + * ChatColor.COLOR_CODE color code character. The alternate color code character will only be replaced + * if it is immediately followed by 0-9, A-F, or a-f. + * + * @param altColorChar The alternate color code character to replace. Ex: & + * @param textToTranslate Text containing the alternate color code character. + * @return Text containing the ChatColor.COLOR_CODE color code character. + */ + public static String translateAlternateColorCodes(char altColorChar, String textToTranslate) { + char[] b = textToTranslate.toCharArray(); + for (int i = 0; i < b.length - 1; i++) { + if (b[i] == altColorChar && "0123456789AaBbCcDdEeFfKk".indexOf(b[i+1]) > -1) { + b[i] = ChatColor.COLOR_CHAR; + b[i+1] = Character.toLowerCase(b[i+1]); + } + } + return new String(b); + } + static { for (ChatColor color : values()) { BY_ID.put(color.intCode, color); diff --git a/src/test/java/org/bukkit/ChatColorTest.java b/src/test/java/org/bukkit/ChatColorTest.java index d721c4f1..ed700020 100644 --- a/src/test/java/org/bukkit/ChatColorTest.java +++ b/src/test/java/org/bukkit/ChatColorTest.java @@ -62,4 +62,12 @@ public class ChatColorTest { assertThat(String.format("%c%c", ChatColor.COLOR_CHAR, color.getChar()), is(color.toString())); } } + + @Test + public void translateAlternateColorCodes() { + String s = "&0&1&2&3&4&5&6&7&8&9&A&a&B&b&C&c&D&d&E&e&F&f&K&k & more"; + String t = ChatColor.translateAlternateColorCodes('&', s); + String u = ChatColor.BLACK.toString() + ChatColor.DARK_BLUE + ChatColor.DARK_GREEN + ChatColor.DARK_AQUA + ChatColor.DARK_RED + ChatColor.DARK_PURPLE + ChatColor.GOLD + ChatColor.GRAY + ChatColor.DARK_GRAY + ChatColor.BLUE + ChatColor.GREEN + ChatColor.GREEN + ChatColor.AQUA + ChatColor.AQUA + ChatColor.RED + ChatColor.RED + ChatColor.LIGHT_PURPLE + ChatColor.LIGHT_PURPLE + ChatColor.YELLOW + ChatColor.YELLOW + ChatColor.WHITE + ChatColor.WHITE + ChatColor.MAGIC + ChatColor.MAGIC + " & more"; + assertThat(t, is(u)); + } } |