92 lines
6.6 KiB
Diff
92 lines
6.6 KiB
Diff
From 45cd8d3b26d64220cfb86dac4a07416b2919c5f1 Mon Sep 17 00:00:00 2001
|
|
From: James Clarke <jamesrtclarke@me.com>
|
|
Date: Sat, 26 Jan 2013 10:39:45 +0000
|
|
Subject: [PATCH] ANSI color codes now reset text attributes. Fixes BUKKIT-3508
|
|
|
|
The client resets all formatting after a color code is received, but currently the ANSI codes do not, and so the console does not accurately reflect the appearance of the formatted text. Instead, the ANSI color codes are now set to reset all text attributes.
|
|
---
|
|
.../net/minecraft/server/ConsoleLogFormatter.java | 9 ++++--
|
|
.../craftbukkit/command/ColouredConsoleSender.java | 34 +++++++++++-----------
|
|
2 files changed, 24 insertions(+), 19 deletions(-)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/ConsoleLogFormatter.java b/src/main/java/net/minecraft/server/ConsoleLogFormatter.java
|
|
index 6a58493..e945f7a 100644
|
|
--- a/src/main/java/net/minecraft/server/ConsoleLogFormatter.java
|
|
+++ b/src/main/java/net/minecraft/server/ConsoleLogFormatter.java
|
|
@@ -13,7 +13,6 @@ final class ConsoleLogFormatter extends Formatter {
|
|
|
|
private SimpleDateFormat a = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
// CraftBukkit start - add color stripping, change constructor to take it
|
|
- private Pattern pattern = Pattern.compile("\\x1B\\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]");
|
|
private boolean strip = false;
|
|
|
|
ConsoleLogFormatter(boolean strip) {
|
|
@@ -56,7 +55,13 @@ final class ConsoleLogFormatter extends Formatter {
|
|
|
|
// CraftBukkit start - handle stripping color
|
|
if (this.strip) {
|
|
- return this.pattern.matcher(stringbuilder.toString()).replaceAll("");
|
|
+ StringBuilder line = new StringBuilder();
|
|
+ for (char c : stringbuilder.toString().toCharArray()) {
|
|
+ if (Character.isLetterOrDigit(c)) {
|
|
+ line.append(c);
|
|
+ }
|
|
+ }
|
|
+ return line.toString();
|
|
} else {
|
|
return stringbuilder.toString();
|
|
}
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java b/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java
|
|
index c86253c..3ab8f3b 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/command/ColouredConsoleSender.java
|
|
@@ -22,28 +22,28 @@ public class ColouredConsoleSender extends CraftConsoleCommandSender {
|
|
this.reader = ((CraftServer) getServer()).getReader();
|
|
this.terminal = reader.getTerminal();
|
|
|
|
- replacements.put(ChatColor.BLACK, Ansi.ansi().fg(Ansi.Color.BLACK).boldOff().toString());
|
|
- replacements.put(ChatColor.DARK_BLUE, Ansi.ansi().fg(Ansi.Color.BLUE).boldOff().toString());
|
|
- replacements.put(ChatColor.DARK_GREEN, Ansi.ansi().fg(Ansi.Color.GREEN).boldOff().toString());
|
|
- replacements.put(ChatColor.DARK_AQUA, Ansi.ansi().fg(Ansi.Color.CYAN).boldOff().toString());
|
|
- replacements.put(ChatColor.DARK_RED, Ansi.ansi().fg(Ansi.Color.RED).boldOff().toString());
|
|
- replacements.put(ChatColor.DARK_PURPLE, Ansi.ansi().fg(Ansi.Color.MAGENTA).boldOff().toString());
|
|
- replacements.put(ChatColor.GOLD, Ansi.ansi().fg(Ansi.Color.YELLOW).boldOff().toString());
|
|
- replacements.put(ChatColor.GRAY, Ansi.ansi().fg(Ansi.Color.WHITE).boldOff().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.BLACK, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).boldOff().toString());
|
|
+ replacements.put(ChatColor.DARK_BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).boldOff().toString());
|
|
+ replacements.put(ChatColor.DARK_GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).boldOff().toString());
|
|
+ replacements.put(ChatColor.DARK_AQUA, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.CYAN).boldOff().toString());
|
|
+ replacements.put(ChatColor.DARK_RED, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.RED).boldOff().toString());
|
|
+ replacements.put(ChatColor.DARK_PURPLE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.MAGENTA).boldOff().toString());
|
|
+ replacements.put(ChatColor.GOLD, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.YELLOW).boldOff().toString());
|
|
+ replacements.put(ChatColor.GRAY, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.WHITE).boldOff().toString());
|
|
+ replacements.put(ChatColor.DARK_GRAY, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).bold().toString());
|
|
+ replacements.put(ChatColor.BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).bold().toString());
|
|
+ replacements.put(ChatColor.GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).bold().toString());
|
|
+ replacements.put(ChatColor.AQUA, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.CYAN).bold().toString());
|
|
+ replacements.put(ChatColor.RED, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.RED).bold().toString());
|
|
+ replacements.put(ChatColor.LIGHT_PURPLE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.MAGENTA).bold().toString());
|
|
+ replacements.put(ChatColor.YELLOW, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.YELLOW).bold().toString());
|
|
+ replacements.put(ChatColor.WHITE, Ansi.ansi().a(Attribute.RESET).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());
|
|
+ replacements.put(ChatColor.RESET, Ansi.ansi().a(Attribute.RESET).toString());
|
|
}
|
|
|
|
@Override
|
|
--
|
|
1.8.1-rc2
|
|
|