|
|
|
|
@@ -2,8 +2,9 @@ package org.bukkit.craftbukkit.command;
|
|
|
|
|
|
|
|
|
|
import java.util.EnumMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import jline.ANSIBuffer.ANSICodes;
|
|
|
|
|
import jline.ConsoleReader;
|
|
|
|
|
import org.fusesource.jansi.Ansi;
|
|
|
|
|
import org.fusesource.jansi.Ansi.Attribute;
|
|
|
|
|
import jline.console.ConsoleReader;
|
|
|
|
|
import jline.Terminal;
|
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
|
@@ -21,37 +22,43 @@ public class ColouredConsoleSender extends CraftConsoleCommandSender {
|
|
|
|
|
this.reader = ((CraftServer) getServer()).getReader();
|
|
|
|
|
this.terminal = reader.getTerminal();
|
|
|
|
|
|
|
|
|
|
replacements.put(ChatColor.BLACK, ANSICodes.attrib(0));
|
|
|
|
|
replacements.put(ChatColor.DARK_BLUE, ANSICodes.attrib(34));
|
|
|
|
|
replacements.put(ChatColor.DARK_GREEN, ANSICodes.attrib(32));
|
|
|
|
|
replacements.put(ChatColor.DARK_AQUA, ANSICodes.attrib(36));
|
|
|
|
|
replacements.put(ChatColor.DARK_RED, ANSICodes.attrib(31));
|
|
|
|
|
replacements.put(ChatColor.DARK_PURPLE, ANSICodes.attrib(35));
|
|
|
|
|
replacements.put(ChatColor.GOLD, ANSICodes.attrib(33));
|
|
|
|
|
replacements.put(ChatColor.GRAY, ANSICodes.attrib(37));
|
|
|
|
|
replacements.put(ChatColor.DARK_GRAY, ANSICodes.attrib(0));
|
|
|
|
|
replacements.put(ChatColor.BLUE, ANSICodes.attrib(34));
|
|
|
|
|
replacements.put(ChatColor.GREEN, ANSICodes.attrib(32));
|
|
|
|
|
replacements.put(ChatColor.AQUA, ANSICodes.attrib(36));
|
|
|
|
|
replacements.put(ChatColor.RED, ANSICodes.attrib(31));
|
|
|
|
|
replacements.put(ChatColor.LIGHT_PURPLE, ANSICodes.attrib(35));
|
|
|
|
|
replacements.put(ChatColor.YELLOW, ANSICodes.attrib(33));
|
|
|
|
|
replacements.put(ChatColor.WHITE, ANSICodes.attrib(37));
|
|
|
|
|
replacements.put(ChatColor.BLACK, Ansi.ansi().fg(Ansi.Color.BLACK).toString());
|
|
|
|
|
replacements.put(ChatColor.DARK_BLUE, Ansi.ansi().fg(Ansi.Color.BLUE).toString());
|
|
|
|
|
replacements.put(ChatColor.DARK_GREEN, Ansi.ansi().fg(Ansi.Color.GREEN).toString());
|
|
|
|
|
replacements.put(ChatColor.DARK_AQUA, Ansi.ansi().fg(Ansi.Color.CYAN).toString());
|
|
|
|
|
replacements.put(ChatColor.DARK_RED, Ansi.ansi().fg(Ansi.Color.RED).toString());
|
|
|
|
|
replacements.put(ChatColor.DARK_PURPLE, Ansi.ansi().fg(Ansi.Color.MAGENTA).toString());
|
|
|
|
|
replacements.put(ChatColor.GOLD, Ansi.ansi().fg(Ansi.Color.YELLOW).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.GRAY, Ansi.ansi().fg(Ansi.Color.WHITE).toString());
|
|
|
|
|
replacements.put(ChatColor.DARK_GRAY, Ansi.ansi().fg(Ansi.Color.BLACK).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.BLUE, Ansi.ansi().fg(Ansi.Color.BLUE).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.GREEN, Ansi.ansi().fg(Ansi.Color.GREEN).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.AQUA, Ansi.ansi().fg(Ansi.Color.CYAN).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.RED, Ansi.ansi().fg(Ansi.Color.RED).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.LIGHT_PURPLE, Ansi.ansi().fg(Ansi.Color.MAGENTA).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.YELLOW, Ansi.ansi().fg(Ansi.Color.YELLOW).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.WHITE, Ansi.ansi().fg(Ansi.Color.WHITE).bold().toString());
|
|
|
|
|
replacements.put(ChatColor.MAGIC, Ansi.ansi().a(Attribute.BLINK_SLOW).toString());
|
|
|
|
|
replacements.put(ChatColor.BOLD, Ansi.ansi().a(Attribute.UNDERLINE_DOUBLE).toString());
|
|
|
|
|
replacements.put(ChatColor.STRIKETHROUGH, Ansi.ansi().a(Attribute.STRIKETHROUGH_ON).toString());
|
|
|
|
|
replacements.put(ChatColor.UNDERLINE, Ansi.ansi().a(Attribute.UNDERLINE).toString());
|
|
|
|
|
replacements.put(ChatColor.ITALIC, Ansi.ansi().a(Attribute.ITALIC).toString());
|
|
|
|
|
replacements.put(ChatColor.RESET, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.DEFAULT).toString());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void sendMessage(String message) {
|
|
|
|
|
if (terminal.isANSISupported()) {
|
|
|
|
|
if (terminal.isAnsiSupported()) {
|
|
|
|
|
if (!conversationTracker.isConversingModaly()) {
|
|
|
|
|
String result = message;
|
|
|
|
|
for (ChatColor color : colors) {
|
|
|
|
|
if (replacements.containsKey(color)) {
|
|
|
|
|
result = result.replaceAll(color.toString(), replacements.get(color));
|
|
|
|
|
result = result.replaceAll("(?i)" + color.toString(), replacements.get(color));
|
|
|
|
|
} else {
|
|
|
|
|
result = result.replaceAll(color.toString(), "");
|
|
|
|
|
result = result.replaceAll("(?i)" + color.toString(), "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
System.out.println(result + ANSICodes.attrib(0));
|
|
|
|
|
System.out.println(result + Ansi.ansi().reset().toString());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
super.sendMessage(message);
|
|
|
|
|
|