summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrmichela <deltahat@gmail.com>2012-03-16 00:40:47 -0400
committerEvilSeph <evilseph@gmail.com>2012-03-16 02:48:54 -0400
commit606f33903c245615fe9906778741ccfcf6677ac7 (patch)
tree49ff83eb02826934f171fdd9ff34a4aa532355a4
parent776745c3352de7c11539e5417e5d9288cf7e670c (diff)
downloadbukkit-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.java20
-rw-r--r--src/test/java/org/bukkit/ChatColorTest.java8
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));
+ }
}