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>
|
||||
|
||||
<name>ColorConsole</name>
|
||||
<version>2.3.2</version>
|
||||
<version>2.3.3</version>
|
||||
<inceptionYear>2016</inceptionYear>
|
||||
<url>https://dev.bukkit.org/bukkit-plugins/colorconsole/</url>
|
||||
<description>
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.io.Serializable;
|
|||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.core.Appender;
|
||||
import org.apache.logging.log4j.core.Layout;
|
||||
|
@ -22,8 +23,6 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
|||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
saveDefaultConfig();
|
||||
|
||||
Map<String, String> levelColors = Maps.newHashMap();
|
||||
levelColors.put("FATAL", getConfig().getString("FATAL"));
|
||||
levelColors.put("ERROR", getConfig().getString("ERROR"));
|
||||
|
@ -71,7 +70,8 @@ public class ColorConsoleBukkit extends JavaPlugin {
|
|||
|
||||
oldLayout = terminalAppender.getLayout();
|
||||
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}");
|
||||
}
|
||||
|
||||
|
|
|
@ -12,8 +12,25 @@ import org.apache.logging.log4j.message.Message;
|
|||
|
||||
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 Method loggerClassGetter;
|
||||
|
||||
protected final CommonFormatter formatter;
|
||||
|
||||
|
@ -24,14 +41,6 @@ public abstract class ColorAppender extends AbstractAppender {
|
|||
this.oldAppender = oldAppender;
|
||||
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) {
|
||||
|
@ -56,12 +65,12 @@ public abstract class ColorAppender extends AbstractAppender {
|
|||
|
||||
protected LogEvent clone(LogEvent oldEvent, String loggerName, Message message) {
|
||||
String className = null;
|
||||
if (loggerClassGetter != null) {
|
||||
if (!disabled) {
|
||||
try {
|
||||
className = (String) loggerClassGetter.invoke(oldEvent);
|
||||
} catch (ReflectiveOperationException refEx) {
|
||||
//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)
|
||||
public class ColorConsoleSponge {
|
||||
|
||||
// private static String TERMINAL_NAME = "FmlConsole";
|
||||
// private static String TERMINAL_NAME = "Console";
|
||||
private static final String TERMINAL_NAME = "MinecraftConsole";
|
||||
|
||||
private final Logger logger;
|
||||
|
@ -82,7 +80,8 @@ public class ColorConsoleSponge {
|
|||
|
||||
Layout<? extends Serializable> oldLayout = terminalAppender.getLayout();
|
||||
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}");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue