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

52 lines
1.8 KiB
Java

package com.github.games647.colorconsole.bungee;
import com.github.games647.colorconsole.common.ColorAppender;
import java.util.Collection;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.api.plugin.PluginDescription;
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 static java.util.stream.Collectors.toSet;
public class ColorPluginAppender extends ColorAppender {
private static final String PROXY_PREFIX = "BungeeCord";
public ColorPluginAppender(Appender oldAppender, Collection<String> hideMessages, boolean truncateCol) {
super(oldAppender, hideMessages, truncateCol);
}
@Override
public LogEvent onAppend(LogEvent logEvent) {
String message = logEvent.getMessage().getFormattedMessage();
String loggerName = logEvent.getLoggerName();
//old message + potential prefix and color codes
StringBuilder msgBuilder = new StringBuilder(message.length() + loggerName.length() + 10);
if (!PROXY_PREFIX.equals(loggerName)) {
msgBuilder.append('[')
.append(formatter.colorizePluginName(loggerName))
.append("] ");
message = msgBuilder.append(message).toString();
}
Message newMessage = new SimpleMessage(message);
return clone(logEvent, loggerName, newMessage);
}
@Override
protected Collection<String> loadPluginNames() {
return ProxyServer.getInstance().getPluginManager().getPlugins().stream()
.map(Plugin::getDescription)
.map(PluginDescription::getName)
.collect(toSet());
}
}