Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package org.bukkit.craftbukkit.command;
2
3import jline.ANSIBuffer.ANSICodes;
4import jline.ConsoleReader;
5import jline.Terminal;
6import org.bukkit.ChatColor;
7import org.bukkit.command.ConsoleCommandSender;
8import org.bukkit.craftbukkit.CraftServer;
9
10import java.util.EnumMap;
11import java.util.Map;
12
13public class ColouredConsoleSender extends ConsoleCommandSender {
14 private final ConsoleReader reader;
15 private final Terminal terminal;
16 private final Map<ChatColor, String> replacements = new EnumMap<ChatColor, String>(ChatColor.class);
17 private final ChatColor[] colors = ChatColor.values();
18
19 public ColouredConsoleSender(CraftServer server) {
20 super(server);
21 this.reader = server.getReader();
22 this.terminal = reader.getTerminal();
23
24 replacements.put(ChatColor.BLACK, ANSICodes.attrib(0));
25 replacements.put(ChatColor.DARK_BLUE, ANSICodes.attrib(34));
26 replacements.put(ChatColor.DARK_GREEN, ANSICodes.attrib(32));
27 replacements.put(ChatColor.DARK_AQUA, ANSICodes.attrib(36));
28 replacements.put(ChatColor.DARK_RED, ANSICodes.attrib(31));
29 replacements.put(ChatColor.DARK_PURPLE, ANSICodes.attrib(35));
30 replacements.put(ChatColor.GOLD, ANSICodes.attrib(33));
31 replacements.put(ChatColor.GRAY, ANSICodes.attrib(37));
32 replacements.put(ChatColor.DARK_GRAY, ANSICodes.attrib(0));
33 replacements.put(ChatColor.BLUE, ANSICodes.attrib(34));
34 replacements.put(ChatColor.GREEN, ANSICodes.attrib(32));
35 replacements.put(ChatColor.AQUA, ANSICodes.attrib(36));
36 replacements.put(ChatColor.RED, ANSICodes.attrib(31));
37 replacements.put(ChatColor.LIGHT_PURPLE, ANSICodes.attrib(35));
38 replacements.put(ChatColor.YELLOW, ANSICodes.attrib(33));
39 replacements.put(ChatColor.WHITE, ANSICodes.attrib(37));
40 }
41
42 @Override
43 public void sendMessage(String message) {
44 if (terminal.isANSISupported()) {
45 String result = message;
46
47 for (ChatColor color : colors) {
48 if (replacements.containsKey(color)) {
49 result = result.replaceAll(color.toString(), replacements.get(color));
50 } else {
51 result = result.replaceAll(color.toString(), "");
52 }
53 }
54 System.out.println(result + ANSICodes.attrib(0));
55 } else {
56 super.sendMessage(message);
57 }
58 }
59}