diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/LogType.java b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/LogType.java index 05619fa..50aa8b3 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/LogType.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/LogType.java @@ -5,7 +5,7 @@ public enum LogType { CHAT(EnumSet.of(LogAttribute.FILTER, LogAttribute.STRIKE, LogAttribute.MUTE, LogAttribute.WARN, LogAttribute.AUDIO)), - SIGN(EnumSet.of(LogAttribute.FILTER, LogAttribute.STRIKE, LogAttribute.WARN, LogAttribute.AUDIO)), + SIGN(EnumSet.of(LogAttribute.FILTER, LogAttribute.STRIKE, LogAttribute.MUTE, LogAttribute.WARN, LogAttribute.AUDIO)), NAME(EnumSet.of(LogAttribute.FILTER)), CAPTCHA(EnumSet.of(LogAttribute.AUDIO)); diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/ChatEmbed.java b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/ChatEmbed.java index 49b2fdb..93a0f75 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/ChatEmbed.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/ChatEmbed.java @@ -11,13 +11,11 @@ public final class ChatEmbed extends DiscordEmbed { private final String trigger; - private final int severity; private final boolean warned; - public ChatEmbed(JavaPlugin plugin, Player player, String content, String trigger, int severity, boolean warned) { + public ChatEmbed(JavaPlugin plugin, Player player, String content, String trigger, boolean warned) { super(plugin, player, content); this.trigger = trigger; - this.severity = severity; this.warned = warned; setupBaseEmbed(); } @@ -27,20 +25,20 @@ protected void setupEmbedDetails() { if(warned) { embed.setDescription(String.format( "Warning: %d", - PenaltyConfig.getPlayerWarnings(player) + 1 + PenaltyConfig.getPlayerWarnings(player) )); } else { embed.setDescription(String.format( "Strike: %d - Mute Duration: %s", - PenaltyConfig.getPlayerStrikes(player) + severity, + PenaltyConfig.getPlayerStrikes(player), PenaltyConfig.getAutoMuteDuration(player) )); } embed.setTitle("Chat Filter") .addField("Content:", content, false) - .addField("Trigger:", String.format(DiscordConfig.getLogCensorEnabled() ? "||`%s`||" : "`%s`", trigger), true) + .addField("Trigger:", String.format("`%s`", trigger), true) .setColor(Color.decode(DiscordConfig.getEmbedColor(LogType.CHAT))); } } diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/NameEmbed.java b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/NameEmbed.java index e9cdf08..398fda7 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/NameEmbed.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/NameEmbed.java @@ -11,19 +11,17 @@ public final class NameEmbed extends DiscordEmbed { private final String trigger; - private final int severity; - public NameEmbed(JavaPlugin plugin, Player player, String content, String trigger, int severity) { + public NameEmbed(JavaPlugin plugin, Player player, String content, String trigger) { super(plugin, player, content); this.trigger = trigger; - this.severity = severity; setupBaseEmbed(); } @Override protected void setupEmbedDetails() { embed.setTitle("Name Filter") - .addField("Trigger:", String.format(DiscordConfig.getLogCensorEnabled() ? "||`%s`||" : "`%s`", trigger), true) + .addField("Trigger:", String.format("`%s`", trigger), true) .setColor(Color.decode(DiscordConfig.getEmbedColor(LogType.NAME))); } diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/SignEmbed.java b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/SignEmbed.java index 5a635c6..9d2e05c 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/SignEmbed.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/embed/SignEmbed.java @@ -11,12 +11,10 @@ public final class SignEmbed extends DiscordEmbed { private final String trigger; - private final int severity; - public SignEmbed(JavaPlugin plugin, Player player, String content, String trigger, int severity) { + public SignEmbed(JavaPlugin plugin, Player player, String content, String trigger) { super(plugin, player, content); this.trigger = trigger; - this.severity = severity; setupBaseEmbed(); } @@ -29,7 +27,7 @@ protected void setupEmbedDetails() { embed.setTitle("Sign Filter") .addField("Content:", content, false) - .addField("Trigger:", String.format(DiscordConfig.getLogCensorEnabled() ? "||`%s`||" : "`%s`", trigger), true) + .addField("Trigger:", String.format("`%s`", trigger), true) .setColor(Color.decode(DiscordConfig.getEmbedColor(LogType.SIGN))); } } diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/logger/DiscordLogger.java b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/logger/DiscordLogger.java index 54b7c96..4758c82 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/logger/DiscordLogger.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/core/log/logger/DiscordLogger.java @@ -34,24 +34,21 @@ public static void log(LogType logType, Player player, String content, FilterTer webhook.setAvatarUrl(webhookIcon); - String trigger = ""; - int severity = 0; + String trigger = ""; - if(triggerFilter != null) { + if(triggerFilter != null) trigger = triggerFilter.getName(); - severity = triggerFilter.getSeverity(); - } DiscordEmbed embed; switch (logType) { case CHAT: - embed = new ChatEmbed(ChatGuard.getInstance(), player, content, trigger, severity, warned); + embed = new ChatEmbed(ChatGuard.getInstance(), player, content, trigger, warned); break; case SIGN: - embed = new SignEmbed(ChatGuard.getInstance(), player, content, trigger, severity); + embed = new SignEmbed(ChatGuard.getInstance(), player, content, trigger); break; case NAME: - embed = new NameEmbed(ChatGuard.getInstance(), player, content, trigger, severity); + embed = new NameEmbed(ChatGuard.getInstance(), player, content, trigger); break; case CAPTCHA: embed = new CaptchaEmbed(ChatGuard.getInstance(), player, content); diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterFinalizer.java b/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterFinalizer.java index 37f6f59..ed289b3 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterFinalizer.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterFinalizer.java @@ -22,11 +22,6 @@ public static void finalizeActions(LogType logType, Player player, String conten final int severity = filterTerm.getSeverity(); final boolean shouldWarn = shouldWarn(logType, player, severity); - AudioCuePlayer.play(logType, player, false); - ConsoleLogger.log(logType, player, content); - FileLogger.log(logType, player, content); - DiscordLogger.log(logType, player, content, filterTerm, shouldWarn); - if (shouldSendFeedback(logType)) { final String badWord = filterTerm.getName(); final String flaggedSection = trigger.getSection(); @@ -41,11 +36,15 @@ public static void finalizeActions(LogType logType, Player player, String conten if (shouldWarn) { PenaltyEnforcer.handleWarning(player); - return; // prevent the mute from being issued + } else { + PenaltyEnforcer.incrementStrikeTier(logType, player, severity); + PenaltyEnforcer.processMute(logType, player); } - PenaltyEnforcer.incrementStrikeTier(logType, player, severity); - PenaltyEnforcer.processMute(logType, player); + AudioCuePlayer.play(logType, player, false); + ConsoleLogger.log(logType, player, content); + FileLogger.log(logType, player, content); + DiscordLogger.log(logType, player, content, filterTerm, shouldWarn); } private static boolean shouldWarn(LogType logType, Player player, int severity) { diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterHandler.java b/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterHandler.java index 8ca3185..e2427db 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterHandler.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/core/security/filter/FilterHandler.java @@ -22,14 +22,21 @@ public static boolean isPlayerNameBlocked(Player player) { } private static boolean isBlocked(LogType logType, Player player, String content) { - String sanitizedContent = ContentHandler.sanitizeContent(content, FilterConfig.getWhitelist()); - FilterTrigger trigger = FilterDetector.checkFilters(sanitizedContent); - - if (trigger == null) { + FilterTrigger trigger = GetBlockedTrigger(content); + if(trigger == null) return false; - } FilterFinalizer.finalizeActions(logType, player, content, trigger); return true; } + + public static FilterTrigger GetBlockedTrigger(String content) { + String sanitizedContent = ContentHandler.sanitizeContent(content, FilterConfig.getWhitelist()); + FilterTrigger trigger = FilterDetector.checkFilters(sanitizedContent); + + if (trigger == null) + return null; + + return trigger; + } } diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerJoinListener.java b/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerJoinListener.java index f68901c..1571892 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerJoinListener.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerJoinListener.java @@ -2,6 +2,7 @@ import io.github.aleksandarharalanov.chatguard.core.config.FilterConfig; import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterHandler; +import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterTrigger; import io.github.aleksandarharalanov.chatguard.core.security.penalty.PenaltyEnforcer; import io.github.aleksandarharalanov.chatguard.util.misc.ColorUtil; import org.bukkit.entity.Player; @@ -16,7 +17,16 @@ public void onPlayerJoin(PlayerJoinEvent event) { // Fallback if PlayerLoginEvent fails if (FilterConfig.getNameEnabled() && FilterHandler.isPlayerNameBlocked(player)) { - player.kickPlayer(ColorUtil.translateColorCodes("&cName contains bad words.")); + // this is pretty garbage, but i cant be asked to do this properly... + FilterTrigger trigger = FilterHandler.GetBlockedTrigger(player.getName()); + String filterName = trigger.getFilterTerm().getName(); + + player.kickPlayer(ColorUtil.translateColorCodes( + String.format( + "&cYour name contains the bad word '%s'.", + filterName + ) + )); return; } diff --git a/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerLoginListener.java b/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerLoginListener.java index a99e586..7a69ff6 100644 --- a/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerLoginListener.java +++ b/src/main/java/io/github/aleksandarharalanov/chatguard/listener/player/PlayerLoginListener.java @@ -1,6 +1,7 @@ package io.github.aleksandarharalanov.chatguard.listener.player; import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterHandler; +import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterTrigger; import io.github.aleksandarharalanov.chatguard.core.data.IPData; import io.github.aleksandarharalanov.chatguard.util.misc.ColorUtil; import org.bukkit.entity.Player; @@ -17,9 +18,18 @@ public void onPlayerLogin(PlayerLoginEvent event) { } if (FilterHandler.isPlayerNameBlocked(player)) { + // this is pretty garbage, but i cant be asked to do this properly... + FilterTrigger trigger = FilterHandler.GetBlockedTrigger(player.getName()); + String filterName = trigger.getFilterTerm().getName(); + event.disallow( - PlayerLoginEvent.Result.KICK_OTHER, - ColorUtil.translateColorCodes("&cName contains bad words.") + PlayerLoginEvent.Result.KICK_OTHER, + ColorUtil.translateColorCodes( + String.format( + "&cYour name contains the bad word '%s'.", + filterName + ) + ) ); } }