diff --git a/pom.xml b/pom.xml
index a7b7b50..1a1c10a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,6 +44,12 @@
17.0.0
provided
+
+ org.apache.logging.log4j
+ log4j-core
+ 2.13.2
+ provided
+
diff --git a/src/main/java/me/tom/sparse/spigot/chat/menu/CMCommand.java b/src/main/java/me/tom/sparse/spigot/chat/menu/CMCommand.java
index 22481f0..760a3bd 100644
--- a/src/main/java/me/tom/sparse/spigot/chat/menu/CMCommand.java
+++ b/src/main/java/me/tom/sparse/spigot/chat/menu/CMCommand.java
@@ -42,30 +42,4 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
return true;
}
-// private static Filter originalFilter;
-// private static PrintStream originalOut;
-
- static void setLoggerFilter()
- {
-// System.setOut(new PrintStream(new FilterOutputStream(originalOut = System.out) {
-// public void write(byte[] b) throws IOException
-// {
-// if(new String(b).contains("/cmapi"))
-// return;
-// super.write(b);
-// }
-// }));
-
-// Logger logger = Bukkit.getLogger();
-// originalFilter = logger.getFilter();
-// logger.setFilter(record -> !record.getMessage().contains("/cmapi"));
-// logger.setFilter(record -> false);
- }
-
- static void restoreLoggerFilter()
- {
-// System.setOut(originalOut);
-// Bukkit.getLogger().setFilter(originalFilter);
- }
-
}
diff --git a/src/main/java/me/tom/sparse/spigot/chat/menu/ChatMenuAPI.java b/src/main/java/me/tom/sparse/spigot/chat/menu/ChatMenuAPI.java
index 7f29052..55ba669 100644
--- a/src/main/java/me/tom/sparse/spigot/chat/menu/ChatMenuAPI.java
+++ b/src/main/java/me/tom/sparse/spigot/chat/menu/ChatMenuAPI.java
@@ -2,6 +2,7 @@
import me.tom.sparse.spigot.chat.protocol.ChatPacketInterceptor;
import me.tom.sparse.spigot.chat.protocol.PlayerChatIntercept;
+import me.tom.sparse.spigot.chat.util.LogFilter;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.map.MapFont;
@@ -182,8 +183,8 @@ public static void init(@NotNull Plugin plugin)
ChatMenuAPI.plugin = plugin;
// Bukkit.getPluginCommand("cmapi").setExecutor(new CMCommand());
- CMCommand.setLoggerFilter();
new CMListener(plugin);
+ new LogFilter();
try
{
@@ -205,7 +206,6 @@ public static void disable()
if(plugin == null)
return;
- CMCommand.restoreLoggerFilter();
plugin = null;
interceptor.disable();
}
diff --git a/src/main/java/me/tom/sparse/spigot/chat/util/LogFilter.java b/src/main/java/me/tom/sparse/spigot/chat/util/LogFilter.java
new file mode 100644
index 0000000..ff98649
--- /dev/null
+++ b/src/main/java/me/tom/sparse/spigot/chat/util/LogFilter.java
@@ -0,0 +1,126 @@
+package me.tom.sparse.spigot.chat.util;
+
+import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.Logger;
+import org.apache.logging.log4j.message.Message;
+
+public class LogFilter implements Filter {
+
+ public LogFilter() {
+ ((Logger) LogManager.getRootLogger()).addFilter(this);
+ }
+
+ private Result filter(String message) {
+ if (message.contains("/cmapi")) return Result.DENY;
+ return Result.NEUTRAL;
+ }
+
+ @Override
+ public Result filter(LogEvent event) {
+ return filter(event.getMessage().getFormattedMessage());
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object... arg4) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, Object message, Throwable arg4) {
+ return filter(message.toString());
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, Message message, Throwable arg4) {
+ return filter(message.getFormattedMessage());
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6,
+ Object arg7) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6,
+ Object arg7, Object arg8) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6,
+ Object arg7, Object arg8, Object arg9) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6,
+ Object arg7, Object arg8, Object arg9, Object arg10) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6,
+ Object arg7, Object arg8, Object arg9, Object arg10, Object arg11) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6,
+ Object arg7, Object arg8, Object arg9, Object arg10, Object arg11, Object arg12) {
+ return filter(message);
+ }
+
+ @Override
+ public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object arg4, Object arg5, Object arg6,
+ Object arg7, Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13) {
+ return filter(message);
+ }
+
+ @Override
+ public State getState() {return State.STARTED;}
+
+ @Override
+ public void initialize() {}
+
+ @Override
+ public boolean isStarted() {return true;}
+
+ @Override
+ public boolean isStopped() {return false;}
+
+ @Override
+ public void start() {}
+
+ @Override
+ public void stop() {}
+
+ @Override
+ public Result getOnMatch() {
+ return Result.NEUTRAL;
+ }
+
+ @Override
+ public Result getOnMismatch() {
+ return Result.NEUTRAL;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 62a320c..965c230 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,4 +1,4 @@
name: ChatMenuAPI
-version: 1.1.1
+version: 1.1.2
author: Tom
main: me.tom.sparse.spigot.chat.menu.CMPlugin
\ No newline at end of file