ColorConsole/src/main/java/com/github/games647/colorconsole/bukkit/ColorPluginAppender.java

60 lines
2.0 KiB
Java

package com.github.games647.colorconsole.bukkit;
import com.github.games647.colorconsole.common.ColorAppender;
import com.google.common.collect.Sets;
import java.util.Collection;
import java.util.Set;
import java.util.stream.Stream;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.SimpleMessage;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import static java.util.stream.Collectors.toSet;
public class ColorPluginAppender extends ColorAppender {
private static final Set<String> disabledPrefix = Sets.newHashSet(
"net.minecraft",
"Minecraft",
"com.mojang",
"com.sk89q",
"ru.tehkode",
"Minecraft.AWE"
);
private final boolean isVanillaAppender;
public ColorPluginAppender(Appender oldAppender, Collection<String> hideMessage, boolean truncateColor) {
super(oldAppender, hideMessage, truncateColor);
this.isVanillaAppender = "QueueLogAppender".equals(oldAppender.getClass().getSimpleName());
}
@Override
public LogEvent onAppend(LogEvent logEvent) {
String oldMessage = logEvent.getMessage().getFormattedMessage();
String prefix = '[' + logEvent.getLoggerName() + "] ";
//PaperSpigot append prefix
if (!isVanillaAppender
&& disabledPrefix.stream().noneMatch(disabled -> logEvent.getLoggerName().startsWith(disabled))) {
oldMessage = prefix + oldMessage;
}
String message = formatter.colorizePluginTag(oldMessage);
Message newMessage = new SimpleMessage(message);
return clone(logEvent, logEvent.getLoggerName(), newMessage);
}
@Override
protected Collection<String> loadPluginNames() {
return Stream.of(Bukkit.getPluginManager().getPlugins())
.map(Plugin::getName)
.collect(toSet());
}
}