Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 59 lines 2.4 kB view raw
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}