Fix showing chat colors in newer PaperSpigot versions (Fixes #4)
This commit is contained in:
parent
62ec40cc53
commit
8cfe9343a1
2
pom.xml
2
pom.xml
|
@ -8,7 +8,7 @@
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>ColorConsole</name>
|
<name>ColorConsole</name>
|
||||||
<version>2.3.2</version>
|
<version>2.3.3</version>
|
||||||
<inceptionYear>2016</inceptionYear>
|
<inceptionYear>2016</inceptionYear>
|
||||||
<url>https://dev.bukkit.org/bukkit-plugins/colorconsole/</url>
|
<url>https://dev.bukkit.org/bukkit-plugins/colorconsole/</url>
|
||||||
<description>
|
<description>
|
||||||
|
|
|
@ -7,6 +7,7 @@ import java.io.Serializable;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.core.Appender;
|
import org.apache.logging.log4j.core.Appender;
|
||||||
import org.apache.logging.log4j.core.Layout;
|
import org.apache.logging.log4j.core.Layout;
|
||||||
|
@ -22,8 +23,6 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
saveDefaultConfig();
|
|
||||||
|
|
||||||
Map<String, String> levelColors = Maps.newHashMap();
|
Map<String, String> levelColors = Maps.newHashMap();
|
||||||
levelColors.put("FATAL", getConfig().getString("FATAL"));
|
levelColors.put("FATAL", getConfig().getString("FATAL"));
|
||||||
levelColors.put("ERROR", getConfig().getString("ERROR"));
|
levelColors.put("ERROR", getConfig().getString("ERROR"));
|
||||||
|
@ -71,7 +70,8 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
||||||
|
|
||||||
oldLayout = terminalAppender.getLayout();
|
oldLayout = terminalAppender.getLayout();
|
||||||
String logFormat = getConfig().getString("logFormat");
|
String logFormat = getConfig().getString("logFormat");
|
||||||
if (oldLayout.toString().contains("minecraftFormatting")) {
|
String appenderClass = terminalAppender.getClass().getName();
|
||||||
|
if (oldLayout.toString().contains("minecraftFormatting") || appenderClass.contains("minecrell")) {
|
||||||
logFormat = logFormat.replace("%msg", "%minecraftFormatting{%msg}");
|
logFormat = logFormat.replace("%msg", "%minecraftFormatting{%msg}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,25 @@ import org.apache.logging.log4j.message.Message;
|
||||||
|
|
||||||
public abstract class ColorAppender extends AbstractAppender {
|
public abstract class ColorAppender extends AbstractAppender {
|
||||||
|
|
||||||
|
private static final Method loggerClassGetter;
|
||||||
|
private boolean disabled = loggerClassGetter == null;
|
||||||
|
|
||||||
|
static {
|
||||||
|
Method classGetter = null;
|
||||||
|
for (Method method : LogEvent.class.getDeclaredMethods()) {
|
||||||
|
String methodName = method.getName();
|
||||||
|
if ("getLoggerFqcn".equalsIgnoreCase(methodName)
|
||||||
|
|| "getFQCN".equalsIgnoreCase(methodName)) {
|
||||||
|
classGetter = method;
|
||||||
|
method.setAccessible(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loggerClassGetter = classGetter;
|
||||||
|
}
|
||||||
|
|
||||||
private final Appender oldAppender;
|
private final Appender oldAppender;
|
||||||
private Method loggerClassGetter;
|
|
||||||
|
|
||||||
protected final CommonFormatter formatter;
|
protected final CommonFormatter formatter;
|
||||||
|
|
||||||
|
@ -24,14 +41,6 @@ public abstract class ColorAppender extends AbstractAppender {
|
||||||
this.oldAppender = oldAppender;
|
this.oldAppender = oldAppender;
|
||||||
this.formatter = new CommonFormatter(hideMessages, colorizeTag, truncateColor, levelColors);
|
this.formatter = new CommonFormatter(hideMessages, colorizeTag, truncateColor, levelColors);
|
||||||
|
|
||||||
for (Method method : LogEvent.class.getDeclaredMethods()) {
|
|
||||||
String methodName = method.getName();
|
|
||||||
if ("getLoggerFqcn".equalsIgnoreCase(methodName)
|
|
||||||
|| "getFQCN".equalsIgnoreCase(methodName)) {
|
|
||||||
loggerClassGetter = method;
|
|
||||||
method.setAccessible(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initPluginColors(Map<String, String> configColors, String def) {
|
public void initPluginColors(Map<String, String> configColors, String def) {
|
||||||
|
@ -56,12 +65,12 @@ public abstract class ColorAppender extends AbstractAppender {
|
||||||
|
|
||||||
protected LogEvent clone(LogEvent oldEvent, String loggerName, Message message) {
|
protected LogEvent clone(LogEvent oldEvent, String loggerName, Message message) {
|
||||||
String className = null;
|
String className = null;
|
||||||
if (loggerClassGetter != null) {
|
if (!disabled) {
|
||||||
try {
|
try {
|
||||||
className = (String) loggerClassGetter.invoke(oldEvent);
|
className = (String) loggerClassGetter.invoke(oldEvent);
|
||||||
} catch (ReflectiveOperationException refEx) {
|
} catch (ReflectiveOperationException refEx) {
|
||||||
//if this method cannot be found then the other methods wouldn't work neither
|
//if this method cannot be found then the other methods wouldn't work neither
|
||||||
loggerClassGetter = null;
|
disabled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,6 @@ import org.spongepowered.api.plugin.Plugin;
|
||||||
, url = PomData.URL, description = PomData.DESCRIPTION)
|
, url = PomData.URL, description = PomData.DESCRIPTION)
|
||||||
public class ColorConsoleSponge {
|
public class ColorConsoleSponge {
|
||||||
|
|
||||||
// private static String TERMINAL_NAME = "FmlConsole";
|
|
||||||
// private static String TERMINAL_NAME = "Console";
|
|
||||||
private static final String TERMINAL_NAME = "MinecraftConsole";
|
private static final String TERMINAL_NAME = "MinecraftConsole";
|
||||||
|
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
|
@ -82,7 +80,8 @@ public class ColorConsoleSponge {
|
||||||
|
|
||||||
Layout<? extends Serializable> oldLayout = terminalAppender.getLayout();
|
Layout<? extends Serializable> oldLayout = terminalAppender.getLayout();
|
||||||
String logFormat = configMapper.getInstance().getLogFormat();
|
String logFormat = configMapper.getInstance().getLogFormat();
|
||||||
if (oldLayout.toString().contains("%minecraftFormatting")) {
|
String appenderClass = terminalAppender.getClass().getName();
|
||||||
|
if (oldLayout.toString().contains("minecraftFormatting") || appenderClass.contains("minecrell")) {
|
||||||
logFormat = logFormat.replace("%msg", "%minecraftFormatting{%msg}");
|
logFormat = logFormat.replace("%msg", "%minecraftFormatting{%msg}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue