1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package info.ronjenkins.slf4bukkit;
18
19 import java.util.Map;
20
21 import org.bukkit.ChatColor;
22 import org.fusesource.jansi.Ansi;
23 import org.fusesource.jansi.Ansi.Attribute;
24
25 import com.google.common.collect.ImmutableMap;
26
27
28
29
30
31
32
33 public final class ColorMapper {
34
35
36 private static final Map<ChatColor, String> MAP = ImmutableMap.<ChatColor, String>builder()
37 .put(ChatColor.BLACK, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).boldOff().toString())
38 .put(ChatColor.DARK_BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).boldOff().toString())
39 .put(ChatColor.DARK_GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).boldOff().toString())
40 .put(ChatColor.DARK_AQUA, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.CYAN).boldOff().toString())
41 .put(ChatColor.DARK_RED, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.RED).boldOff().toString())
42 .put(ChatColor.DARK_PURPLE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.MAGENTA).boldOff().toString())
43 .put(ChatColor.GOLD, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.YELLOW).boldOff().toString())
44 .put(ChatColor.GRAY, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.WHITE).boldOff().toString())
45 .put(ChatColor.DARK_GRAY, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).bold().toString())
46 .put(ChatColor.BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).bold().toString())
47 .put(ChatColor.GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).bold().toString())
48 .put(ChatColor.AQUA, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.CYAN).bold().toString())
49 .put(ChatColor.RED, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.RED).bold().toString())
50 .put(ChatColor.LIGHT_PURPLE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.MAGENTA).bold().toString())
51 .put(ChatColor.YELLOW, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.YELLOW).bold().toString())
52 .put(ChatColor.WHITE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.WHITE).bold().toString())
53 .put(ChatColor.MAGIC, Ansi.ansi().a(Attribute.BLINK_SLOW).toString())
54 .put(ChatColor.BOLD, Ansi.ansi().a(Attribute.UNDERLINE_DOUBLE).toString())
55 .put(ChatColor.STRIKETHROUGH, Ansi.ansi().a(Attribute.STRIKETHROUGH_ON).toString())
56 .put(ChatColor.UNDERLINE, Ansi.ansi().a(Attribute.UNDERLINE).toString())
57 .put(ChatColor.ITALIC, Ansi.ansi().a(Attribute.ITALIC).toString())
58 .put(ChatColor.RESET, Ansi.ansi().a(Attribute.RESET).toString())
59 .build();
60
61
62
63
64
65
66
67
68
69 public static String map(final String input) {
70 if (input == null) { return ""; }
71 String output = input;
72 for (final Map.Entry<ChatColor, String> mapping : ColorMapper.MAP.entrySet()) {
73 output = output.replace(mapping.getKey().toString(), mapping.getValue());
74 }
75 return output;
76 }
77
78 }