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

102 lines
3.6 KiB
Java
Raw Normal View History

2016-05-07 15:07:33 +02:00
package com.github.games647.colorconsole.bukkit;
2016-05-03 21:20:11 +02:00
2019-05-02 11:27:55 +02:00
import com.github.games647.colorconsole.common.ColorAppender;
import com.github.games647.colorconsole.common.ConsoleConfig;
import com.github.games647.colorconsole.common.Log4JInstaller;
import com.github.games647.colorconsole.common.LoggingLevel;
import com.github.games647.colorconsole.common.PlatformPlugin;
2016-05-03 21:20:11 +02:00
import java.io.Serializable;
2019-05-02 11:27:55 +02:00
import java.nio.file.Path;
import java.util.Collection;
2016-05-03 21:20:11 +02:00
import java.util.logging.Level;
2016-05-03 21:20:11 +02:00
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.Layout;
2019-05-02 11:27:55 +02:00
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
2016-05-03 21:20:11 +02:00
import org.bukkit.plugin.java.JavaPlugin;
2019-05-02 11:27:55 +02:00
public class ColorConsoleBukkit extends JavaPlugin implements PlatformPlugin {
2016-05-03 21:20:11 +02:00
2017-09-23 13:55:42 +02:00
private static final String TERMINAL_NAME = "TerminalConsole";
2017-05-24 20:03:25 +02:00
2019-05-02 11:27:55 +02:00
private final Log4JInstaller installer = new Log4JInstaller();
2016-05-03 21:20:11 +02:00
private Layout<? extends Serializable> oldLayout;
@Override
public void onLoad() {
//try to run it as early as possible
2019-05-02 11:27:55 +02:00
saveDefaultConfig();
ConsoleConfig configuration = loadConfiguration();
installLogFormat(configuration);
2016-05-03 21:20:11 +02:00
}
@Override
2019-05-02 11:27:55 +02:00
public void onDisable() {
revertLogFormat();
2016-05-03 21:20:11 +02:00
}
@Override
2019-05-02 11:27:55 +02:00
public void installLogFormat(ConsoleConfig configuration) {
try {
oldLayout = installer.installLog4JFormat(this, TERMINAL_NAME, configuration);
} catch (ReflectiveOperationException reflectiveEx) {
getLogger().log(Level.WARNING, "Failed to install log format", reflectiveEx);
2016-05-04 18:21:13 +02:00
}
2019-05-02 11:27:55 +02:00
}
2016-05-04 18:21:13 +02:00
2019-05-02 11:27:55 +02:00
@Override
public ColorAppender createAppender(Appender oldAppender, Collection<String> hideMessages, boolean truncateCol) {
return new ColorPluginAppender(oldAppender, hideMessages, truncateCol);
}
2016-05-04 18:21:13 +02:00
2019-05-02 11:27:55 +02:00
@Override
public void revertLogFormat() {
2017-05-24 20:03:25 +02:00
try {
2019-05-02 11:27:55 +02:00
installer.revertLog4JFormat(TERMINAL_NAME, oldLayout);
2017-05-24 20:03:25 +02:00
} catch (ReflectiveOperationException ex) {
getLogger().log(Level.WARNING, "Cannot revert log format", ex);
}
2016-05-03 21:20:11 +02:00
}
2019-05-02 11:27:55 +02:00
@Override
public Path getPluginFolder() {
return getDataFolder().toPath();
}
2016-05-05 14:57:05 +02:00
2019-05-02 11:27:55 +02:00
@Override
public ConsoleConfig loadConfiguration() {
FileConfiguration bukkitConfig = getConfig();
ConsoleConfig consoleConfig = new ConsoleConfig();
consoleConfig.setLogFormat(bukkitConfig.getString("logFormat"));
consoleConfig.setDateStyle(bukkitConfig.getString("dateStyle"));
consoleConfig.getLevelColors().clear();
if (bukkitConfig.getBoolean("colorLoggingLevel")) {
ConfigurationSection levelSection = bukkitConfig.getConfigurationSection("Level");
for (LoggingLevel level : LoggingLevel.values()) {
consoleConfig.getLevelColors().put(level, levelSection.getString(level.name(), ""));
}
2017-05-24 20:03:25 +02:00
}
2019-05-02 11:27:55 +02:00
consoleConfig.getPluginColors().clear();
if (bukkitConfig.getBoolean("colorPluginTag")) {
ConfigurationSection pluginSection = bukkitConfig.getConfigurationSection("Plugin");
consoleConfig.setDefaultPluginColor(pluginSection.getString(ConsoleConfig.DEFAULT_PLUGIN_KEY));
for (String pluginKey : pluginSection.getKeys(false)) {
consoleConfig.getPluginColors().put(pluginKey, pluginSection.getString(pluginKey));
}
2016-05-05 14:57:05 +02:00
}
2019-05-02 11:27:55 +02:00
consoleConfig.getHideMessages().clear();
consoleConfig.getHideMessages().addAll(bukkitConfig.getStringList("hide-messages"));
consoleConfig.setTruncateColor(bukkitConfig.getBoolean("truncateColor"));
return consoleConfig;
2016-05-03 21:20:11 +02:00
}
}