Updated the ChatFilter & Spam Filter
This commit is contained in:
@@ -20,6 +20,9 @@ repositories {
|
|||||||
name = 'spigotmc-repo'
|
name = 'spigotmc-repo'
|
||||||
url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
|
url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
|
||||||
}
|
}
|
||||||
|
maven {
|
||||||
|
url = uri("https://repo.papermc.io/repository/maven-public/")
|
||||||
|
}
|
||||||
maven {
|
maven {
|
||||||
name = 'sonatype'
|
name = 'sonatype'
|
||||||
url = 'https://oss.sonatype.org/content/groups/public/'
|
url = 'https://oss.sonatype.org/content/groups/public/'
|
||||||
@@ -27,17 +30,17 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'org.spigotmc:spigot-api:1.20.4-R0.1-SNAPSHOT'
|
compileOnly 'io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT'
|
||||||
implementation 'com.google.code.gson:gson:2.10.1'
|
implementation 'com.google.code.gson:gson:2.10.1'
|
||||||
implementation 'club.minnced:discord-webhooks:0.8.4'
|
|
||||||
implementation files("libs/PDK-1.3.4.jar")
|
implementation files("libs/PDK-1.3.4.jar")
|
||||||
}
|
}
|
||||||
|
|
||||||
def targetJavaVersion = 16
|
def targetJavaVersion = 17
|
||||||
java {
|
java {
|
||||||
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
|
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
|
||||||
sourceCompatibility = javaVersion
|
sourceCompatibility = javaVersion
|
||||||
targetCompatibility = javaVersion
|
targetCompatibility = javaVersion
|
||||||
|
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||||
if (JavaVersion.current() < javaVersion) {
|
if (JavaVersion.current() < javaVersion) {
|
||||||
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ group = 'io.github.thetrouper'
|
|||||||
version = 0.2.4
|
version = 0.2.4
|
||||||
|
|
||||||
# Minecraft
|
# Minecraft
|
||||||
mc_version = 1.19.4
|
mc_version = 1.20.4
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package io.github.thetrouper.sentinel;
|
package io.github.thetrouper.sentinel;
|
||||||
|
|
||||||
import club.minnced.discord.webhook.WebhookClient;
|
|
||||||
import club.minnced.discord.webhook.WebhookClientBuilder;
|
|
||||||
import io.github.itzispyder.pdk.PDK;
|
import io.github.itzispyder.pdk.PDK;
|
||||||
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
import io.github.itzispyder.pdk.utils.misc.JsonSerializable;
|
||||||
import io.github.thetrouper.sentinel.auth.Auth;
|
import io.github.thetrouper.sentinel.auth.Auth;
|
||||||
@@ -12,6 +10,7 @@ import io.github.thetrouper.sentinel.server.functions.AntiSpam;
|
|||||||
import io.github.thetrouper.sentinel.server.functions.Authenticator;
|
import io.github.thetrouper.sentinel.server.functions.Authenticator;
|
||||||
import io.github.thetrouper.sentinel.server.functions.ProfanityFilter;
|
import io.github.thetrouper.sentinel.server.functions.ProfanityFilter;
|
||||||
import io.github.thetrouper.sentinel.server.functions.Telemetry;
|
import io.github.thetrouper.sentinel.server.functions.Telemetry;
|
||||||
|
import io.github.thetrouper.sentinel.server.util.ServerUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
@@ -91,7 +90,8 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
boolean minehutStatus = Telemetry.sendStartupLog();
|
boolean minehutStatus = Telemetry.sendStartupLog();
|
||||||
if (minehutStatus) {
|
if (minehutStatus) {
|
||||||
authstatus = authstatus.replaceAll("ur a skid lmao", "get out of here kiddo");
|
authstatus = authstatus.replaceAll("ur a skid lmao", "get out of here kiddo");
|
||||||
log.info("Dynamic IP auth Success! " + authstatus);
|
ServerUtils.sendDebugMessage(authstatus);
|
||||||
|
log.info("Dynamic IP auth Success! ");
|
||||||
startup();
|
startup();
|
||||||
} else {
|
} else {
|
||||||
log.info("Dynamic IP Failure. Webhook Error possible? Please contact obvWolf to fix this.");
|
log.info("Dynamic IP Failure. Webhook Error possible? Please contact obvWolf to fix this.");
|
||||||
@@ -123,8 +123,6 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
// Plugin startup logic
|
// Plugin startup logic
|
||||||
log.info("Starting Up! (" + getDescription().getVersion() + ")...");
|
log.info("Starting Up! (" + getDescription().getVersion() + ")...");
|
||||||
|
|
||||||
loadWebhook();
|
|
||||||
|
|
||||||
// Enable Functions
|
// Enable Functions
|
||||||
AntiSpam.enableAntiSpam();
|
AntiSpam.enableAntiSpam();
|
||||||
ProfanityFilter.enableAntiSwear();
|
ProfanityFilter.enableAntiSwear();
|
||||||
@@ -186,21 +184,6 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
language.save();
|
language.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadWebhook() {
|
|
||||||
// Init Client
|
|
||||||
log.info("Loading Webhook...");
|
|
||||||
|
|
||||||
WebhookClientBuilder buildah = new WebhookClientBuilder(mainConfig.plugin.webhook);
|
|
||||||
buildah.setThreadFactory((job) -> {
|
|
||||||
Thread thread = new Thread(job);
|
|
||||||
thread.setName("WebhookThread");
|
|
||||||
thread.setDaemon(true);
|
|
||||||
return thread;
|
|
||||||
});
|
|
||||||
buildah.setWait(true);
|
|
||||||
webclient = buildah.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugin shutdown logic
|
* Plugin shutdown logic
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import io.github.itzispyder.pdk.commands.CustomCommand;
|
|||||||
import io.github.itzispyder.pdk.commands.Permission;
|
import io.github.itzispyder.pdk.commands.Permission;
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.itzispyder.pdk.utils.ArrayUtils;
|
import io.github.itzispyder.pdk.utils.ArrayUtils;
|
||||||
import io.github.itzispyder.pdk.utils.ServerUtils;
|
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
import io.github.thetrouper.sentinel.server.functions.Message;
|
import io.github.thetrouper.sentinel.server.functions.Message;
|
||||||
import io.github.thetrouper.sentinel.server.util.Text;
|
import io.github.thetrouper.sentinel.server.util.Text;
|
||||||
@@ -14,9 +13,6 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@CommandRegistry(value = "sentinelmessage",permission = @Permission("sentinel.message"))
|
@CommandRegistry(value = "sentinelmessage",permission = @Permission("sentinel.message"))
|
||||||
public class MessageCommand implements CustomCommand {
|
public class MessageCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package io.github.thetrouper.sentinel.cmds;
|
|||||||
import io.github.itzispyder.pdk.commands.Args;
|
import io.github.itzispyder.pdk.commands.Args;
|
||||||
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
import io.github.itzispyder.pdk.commands.CommandRegistry;
|
||||||
import io.github.itzispyder.pdk.commands.CustomCommand;
|
import io.github.itzispyder.pdk.commands.CustomCommand;
|
||||||
import io.github.itzispyder.pdk.commands.Permission;
|
|
||||||
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
import io.github.itzispyder.pdk.commands.completions.CompletionBuilder;
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
import io.github.thetrouper.sentinel.server.util.Text;
|
import io.github.thetrouper.sentinel.server.util.Text;
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@CommandRegistry(value = "sentinel",permission = @Permission("sentinel.debug"))
|
@CommandRegistry(value = "sentinel",permission = @Permission("sentinel.debug"))
|
||||||
public class SentinelCommand implements CustomCommand {
|
public class SentinelCommand implements CustomCommand {
|
||||||
|
|||||||
@@ -1,23 +1,21 @@
|
|||||||
package io.github.thetrouper.sentinel.data;
|
package io.github.thetrouper.sentinel.data;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
public enum ActionType {
|
public enum ActionType {
|
||||||
SPECIFIC_COMMAND("Anti-Specific has been triggered","The use of a specific command has been detected!", Color.green),
|
SPECIFIC_COMMAND("Anti-Specific has been triggered","The use of a specific command has been detected!", 0x00FF00),
|
||||||
LOGGED_COMMAND("General command log","A logged command has been executed.", Color.green),
|
LOGGED_COMMAND("General command log","A logged command has been executed.", 0x00FF00),
|
||||||
DANGEROUS_COMMAND("Anti-Nuke has been triggered","The use of a dangerous command has been detected!", Color.red),
|
DANGEROUS_COMMAND("Anti-Nuke has been triggered","The use of a dangerous command has been detected!", 0xFF0000),
|
||||||
NBT("Anti-NBT has been triggered", "An NBT item has been caught!", Color.orange),
|
NBT("Anti-NBT has been triggered", "An NBT item has been caught!", 0xFFB000),
|
||||||
PLACE_COMMAND_BLOCK("Anti-Nuke has been triggered","The placing of a command block has been detected!", Color.orange),
|
PLACE_COMMAND_BLOCK("Anti-Nuke has been triggered","The placing of a command block has been detected!", 0xFFB000),
|
||||||
USE_COMMAND_BLOCK("Anti-Nuke has been triggered","The use of a command block has been detected!", Color.red),
|
USE_COMMAND_BLOCK("Anti-Nuke has been triggered","The use of a command block has been detected!", 0xFF0000),
|
||||||
UPDATE_COMMAND_BLOCK("HoneyPot log","Caught a command block command!", Color.yellow),
|
UPDATE_COMMAND_BLOCK("HoneyPot log","Caught a command block command!", 0xF8FF00),
|
||||||
PLACE_MINECART_COMMAND("Anti-Nuke has been triggered","The placing of a minecart command has been detected!", Color.red),
|
PLACE_MINECART_COMMAND("Anti-Nuke has been triggered","The placing of a minecart command has been detected!", 0xFF0000),
|
||||||
USE_MINECART_COMMAND("Anti-Nuke has been triggered", "The use of a command block has been detected!", Color.red),
|
USE_MINECART_COMMAND("Anti-Nuke has been triggered", "The use of a command block has been detected!", 0xFF0000),
|
||||||
UPDATE_MINECART_COMMAND("HoneyPot log","Caught a command block command!", Color.orange);
|
UPDATE_MINECART_COMMAND("HoneyPot log","Caught a command block command!", 0xFFB000);
|
||||||
private final String messageTop;
|
private final String messageTop;
|
||||||
private final String messageTitle;
|
private final String messageTitle;
|
||||||
private final Color embedColor;
|
private final int embedColor;
|
||||||
|
|
||||||
ActionType(String messageTop, String messageTitle, Color embedColor) {
|
ActionType(String messageTop, String messageTitle, int embedColor) {
|
||||||
this.messageTop = messageTop;
|
this.messageTop = messageTop;
|
||||||
this.messageTitle = messageTitle;
|
this.messageTitle = messageTitle;
|
||||||
this.embedColor = embedColor;
|
this.embedColor = embedColor;
|
||||||
@@ -28,7 +26,7 @@ public enum ActionType {
|
|||||||
public String getMessageTitle() {
|
public String getMessageTitle() {
|
||||||
return messageTitle;
|
return messageTitle;
|
||||||
}
|
}
|
||||||
public Color getEmbedColor() {
|
public int getEmbedColor() {
|
||||||
return embedColor;
|
return embedColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,23 +2,21 @@ package io.github.thetrouper.sentinel.data;
|
|||||||
|
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
|
|
||||||
public enum FAT {
|
public enum FAT {
|
||||||
BLOCK_SWEAR("Sentinel Profanity Filter",null,"swear-block-warn", "swear-block-notification", null,null),
|
BLOCK_SWEAR("Sentinel Profanity Filter",null,"swear-block-warn", "swear-block-notification", null,0x000000),
|
||||||
BLOCK_SPAM("Sentinel Anti-Spam", null, "spam-block-warn", "spam-notification",null,null),
|
BLOCK_SPAM("Sentinel Anti-Spam", null, "spam-block-warn", "spam-notification",null,0x000000),
|
||||||
SWEAR_PUNISH("Sentinel Anti-Swear Log","Anti-Swear", "profanity-mute-warn", "profanity-mute-notification", Sentinel.mainConfig.chat.antiSwear.swearPunishCommand, Color.orange),
|
SWEAR_PUNISH("Sentinel Anti-Swear Log","Anti-Swear", "profanity-mute-warn", "profanity-mute-notification", Sentinel.mainConfig.chat.antiSwear.swearPunishCommand, 0xFFB000),
|
||||||
SLUR_PUNISH("Sentinel Anti-Slur Log", "Anti-Slur", "slur-mute-warn", "slur-mute-notification", Sentinel.mainConfig.chat.antiSwear.strictPunishCommand, Color.red),
|
SLUR_PUNISH("Sentinel Anti-Slur Log", "Anti-Slur", "slur-mute-warn", "slur-mute-notification", Sentinel.mainConfig.chat.antiSwear.strictPunishCommand, 0xFF0000),
|
||||||
SPAM_PUNISH("Sentinel Anti-Spam Log", "Anti-Spam", "spam-mute-warn", "spam-mute-notification", Sentinel.mainConfig.chat.antiSpam.spamPunishCommand, Color.pink);
|
SPAM_PUNISH("Sentinel Anti-Spam Log", "Anti-Spam", "spam-mute-warn", "spam-mute-notification", Sentinel.mainConfig.chat.antiSpam.spamPunishCommand, 0xFF8000);
|
||||||
|
|
||||||
private final String title;
|
private final String title;
|
||||||
private final String name;
|
private final String name;
|
||||||
private final String warnTranslationKey;
|
private final String warnTranslationKey;
|
||||||
private final String notifTranslationKey;
|
private final String notifTranslationKey;
|
||||||
private final String executedCommand;
|
private final String executedCommand;
|
||||||
private final Color embedColor;
|
private final int embedColor;
|
||||||
|
|
||||||
FAT(String title, String name, String warnTranslationKey, String notifTranslationKey, String executedCommand, Color embedColor) {
|
FAT(String title, String name, String warnTranslationKey, String notifTranslationKey, String executedCommand, int embedColor) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.warnTranslationKey = warnTranslationKey;
|
this.warnTranslationKey = warnTranslationKey;
|
||||||
@@ -43,7 +41,7 @@ public enum FAT {
|
|||||||
public String getExecutedCommand() {
|
public String getExecutedCommand() {
|
||||||
return executedCommand;
|
return executedCommand;
|
||||||
}
|
}
|
||||||
public Color getColor() {
|
public int getColor() {
|
||||||
return embedColor;
|
return embedColor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,19 +31,19 @@ public class LanguageFile implements JsonSerializable<LanguageFile> {
|
|||||||
put("message-received", "§d§lMessage §8» §b[§f%1$s §e>§f You§b] §7%2$s");
|
put("message-received", "§d§lMessage §8» §b[§f%1$s §e>§f You§b] §7%2$s");
|
||||||
put("spy-message", "§d§lSpy §8» §b§n%1$s§7 has messaged §b§n%2$s§7.");
|
put("spy-message", "§d§lSpy §8» §b§n%1$s§7 has messaged §b§n%2$s§7.");
|
||||||
put("spy-message-hover", "§8]==-- §d§lSocialSpy §8--==[\n§bSender: §f%1$S\n§bReceiver: §f%2$S\n§bMessage: §f%3$S");
|
put("spy-message-hover", "§8]==-- §d§lSocialSpy §8--==[\n§bSender: §f%1$S\n§bReceiver: §f%2$S\n§bMessage: §f%3$S");
|
||||||
|
put("profanity-block-notification", "§b§n%1$s§7 has triggered the anti-swear! §8(§c%2$s§7/§4%3$s§8)");
|
||||||
|
put("profanity-block-warn", "§cPlease do not swear in chat! Attempting to bypass this filter will result in a mute! §7§o(Hover for more info)");
|
||||||
put("profanity-mute-warn", "You have been auto-muted for repeated violation of the profanity filter! §7§o(Hover for more info)");
|
put("profanity-mute-warn", "You have been auto-muted for repeated violation of the profanity filter! §7§o(Hover for more info)");
|
||||||
put("profanity-mute-notification", "§b§n%1$s§7 has been auto-muted by the anti-swear! §8(§c%2$s§7/§4%3$s§8)");
|
put("profanity-mute-notification", "§b§n%1$s§7 has been auto-muted by the anti-swear! §8(§c%2$s§7/§4%3$s§8)");
|
||||||
|
put("profanity-filter-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bOriginal: §f%1$s\n§bSanitized: §f%2$s\n§8§o(Click to report false positive)");
|
||||||
|
put("severity-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bOriginal: §f%1$s\n§bSanitized: §f%2$s\n§bSeverity: §c%3$s\n§7§o(click to report false positive)");
|
||||||
put("slur-mute-warn", "§cYou have been insta-punished by the anti-slur! §7§o(Hover for more info)");
|
put("slur-mute-warn", "§cYou have been insta-punished by the anti-slur! §7§o(Hover for more info)");
|
||||||
put("slur-mute-notification", "§b§n%1$s§7 has been insta-muted by the anti-swear! §8(§c%2$s§7/§4%3$s§8)");
|
put("slur-mute-notification", "§b§n%1$s§7 has been insta-muted by the anti-swear! §8(§c%2$s§7/§4%3$s§8)");
|
||||||
put("swear-block-warn", "§cPlease do not swear in chat! Attempting to bypass this filter will result in a mute! §7§o(Hover for more info)");
|
|
||||||
put("swear-block-notification", "§b§n%1$s§7 has triggered the anti-swear! §8(§c%2$s§7/§4%3$s§8)");
|
|
||||||
put("spam-notification", "§b§n%1$s§7 might be spamming! §8(§c%2$s§7/§4%3$s§8)");
|
put("spam-notification", "§b§n%1$s§7 might be spamming! §8(§c%2$s§7/§4%3$s§8)");
|
||||||
put("spam-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bPrevious: §f%1$s\n§bCurrent: §f%2$s\n§bSimilarity §f%3$s");
|
put("spam-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bPrevious: §f%1$s\n§bCurrent: §f%2$s\n§bSimilarity §f%3$s");
|
||||||
put("spam-block-warn", "Do not spam in chat! Please wait before sending another message.");
|
put("spam-block-warn", "Do not spam in chat! Please wait before sending another message.");
|
||||||
put("spam-mute-warn", "§cYou have been auto-punished for violating the anti-spam repetitively!");
|
put("spam-mute-warn", "§cYou have been auto-punished for violating the anti-spam repetitively!");
|
||||||
put("spam-mute-notification", "§b§n%1$s§7 has been auto-muted by the anti spam! §8(§c%2$s§7/§4%3$s§8)");
|
put("spam-mute-notification", "§b§n%1$s§7 has been auto-muted by the anti spam! §8(§c%2$s§7/§4%3$s§8)");
|
||||||
put("filter-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bOriginal: §f%1$s\n§bSanitized: §f%2$s\n§8§o(Click to report false positive)");
|
|
||||||
put("severity-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bOriginal: §f%1$s\n§bSanitized: §f%2$s\n§bSeverity: §c%3$s\n§7§o(click to report false positive)");
|
|
||||||
}};
|
}};
|
||||||
public LanguageFile() {}
|
public LanguageFile() {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
package io.github.thetrouper.sentinel.server;
|
package io.github.thetrouper.sentinel.server;
|
||||||
|
|
||||||
|
|
||||||
import club.minnced.discord.webhook.send.WebhookEmbed;
|
import io.github.itzispyder.pdk.utils.discord.DiscordEmbed;
|
||||||
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
|
|
||||||
import club.minnced.discord.webhook.send.WebhookMessage;
|
|
||||||
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
|
|
||||||
import io.github.itzispyder.pdk.PDK;
|
|
||||||
import io.github.itzispyder.pdk.utils.discord.DiscordWebhook;
|
import io.github.itzispyder.pdk.utils.discord.DiscordWebhook;
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
import io.github.thetrouper.sentinel.data.ActionType;
|
import io.github.thetrouper.sentinel.data.ActionType;
|
||||||
@@ -21,7 +17,6 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.event.Cancellable;
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Action {
|
public class Action {
|
||||||
@@ -174,23 +169,19 @@ public class Action {
|
|||||||
actions += (revertGM) ? Emojis.rightSort + " **GM Reverted:** " + Emojis.success + "\n" : "";
|
actions += (revertGM) ? Emojis.rightSort + " **GM Reverted:** " + Emojis.success + "\n" : "";
|
||||||
actions += Emojis.rightSort + " **Logged:** " + Emojis.success;
|
actions += Emojis.rightSort + " **Logged:** " + Emojis.success;
|
||||||
|
|
||||||
Webhook
|
|
||||||
WebhookMessage message = new WebhookMessageBuilder()
|
|
||||||
.setUsername("Sentinel Anti-Nuke | Logs")
|
|
||||||
.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png").
|
|
||||||
addEmbeds(new WebhookEmbedBuilder()
|
|
||||||
.setAuthor(new WebhookEmbed.EmbedAuthor(actionTop,null,"https://builtbybit.com/resources/sentinel-anti-nuke.30130/"))
|
|
||||||
.setTitle(new WebhookEmbed.EmbedTitle(actionTitle,null))
|
|
||||||
.setDescription(description)
|
|
||||||
.addField(new WebhookEmbed.EmbedField(false,"Actions:", actions))
|
|
||||||
.setThumbnailUrl("https://crafatar.com/avatars/" + player.getUniqueId() + "?size=64&&overlay")
|
|
||||||
.setColor(action.getEmbedColor().getRGB())
|
|
||||||
.build())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ServerUtils.sendDebugMessage("Executing webhook...");
|
ServerUtils.sendDebugMessage("Executing webhook...");
|
||||||
Sentinel.webclient.send(message);
|
DiscordWebhook.create()
|
||||||
|
.username("Sentinel Anti-Nuke | Logs")
|
||||||
|
.avatar("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png")
|
||||||
|
.addEmbed(DiscordEmbed.create()
|
||||||
|
.author(new DiscordEmbed.Author(actionTop,"https://builtbybit.com/resources/sentinel-anti-nuke.30130/",null))
|
||||||
|
.title(actionTitle)
|
||||||
|
.desc(description)
|
||||||
|
.addField(new DiscordEmbed.Field("Actions:", actions,false))
|
||||||
|
.thumbnail("https://crafatar.com/avatars/" + player.getUniqueId() + "?size=64&&overlay")
|
||||||
|
.color(action.getEmbedColor())
|
||||||
|
.build()).send(Sentinel.mainConfig.plugin.webhook);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
ServerUtils.sendDebugMessage(Text.prefix("Epic webhook failure!!!"));
|
ServerUtils.sendDebugMessage(Text.prefix("Epic webhook failure!!!"));
|
||||||
Sentinel.log.info(e.toString());
|
Sentinel.log.info(e.toString());
|
||||||
|
|||||||
@@ -1,24 +1,21 @@
|
|||||||
package io.github.thetrouper.sentinel.server;
|
package io.github.thetrouper.sentinel.server;
|
||||||
|
|
||||||
import club.minnced.discord.webhook.send.WebhookEmbed;
|
import io.github.itzispyder.pdk.utils.discord.DiscordEmbed;
|
||||||
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
|
import io.github.itzispyder.pdk.utils.discord.DiscordWebhook;
|
||||||
import club.minnced.discord.webhook.send.WebhookMessage;
|
|
||||||
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
|
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
import io.github.thetrouper.sentinel.data.Emojis;
|
import io.github.thetrouper.sentinel.data.Emojis;
|
||||||
import io.github.thetrouper.sentinel.data.FAT;
|
import io.github.thetrouper.sentinel.data.FAT;
|
||||||
import io.github.thetrouper.sentinel.data.FilterSeverity;
|
import io.github.thetrouper.sentinel.data.FilterSeverity;
|
||||||
import io.github.thetrouper.sentinel.discord.DiscordWebhook;
|
|
||||||
import io.github.thetrouper.sentinel.server.functions.ReportFalsePositives;
|
import io.github.thetrouper.sentinel.server.functions.ReportFalsePositives;
|
||||||
import io.github.thetrouper.sentinel.server.util.ServerUtils;
|
import io.github.thetrouper.sentinel.server.util.ServerUtils;
|
||||||
import io.github.thetrouper.sentinel.server.util.Text;
|
import io.github.thetrouper.sentinel.server.util.Text;
|
||||||
import net.md_5.bungee.api.chat.ClickEvent;
|
import net.kyori.adventure.text.Component;
|
||||||
import net.md_5.bungee.api.chat.HoverEvent;
|
import net.kyori.adventure.text.TextComponent;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.kyori.adventure.text.event.ClickEvent;
|
||||||
|
import net.kyori.adventure.text.event.HoverEvent;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
@@ -28,7 +25,107 @@ import static io.github.thetrouper.sentinel.server.functions.ProfanityFilter.*;
|
|||||||
|
|
||||||
public class FilterAction {
|
public class FilterAction {
|
||||||
|
|
||||||
public static void filterAction(Player offender, AsyncPlayerChatEvent e, String highlighted, FilterSeverity severity, Double similarity, FAT type) {
|
public static void filterPunish(AsyncPlayerChatEvent e, FAT type, Double similarity, FilterSeverity severity) {
|
||||||
|
String report = ReportFalsePositives.generateReport(e);
|
||||||
|
TextComponent staffNotif = Component.text("");
|
||||||
|
TextComponent playerWarning = Component.text("");
|
||||||
|
Player offender = e.getPlayer();
|
||||||
|
switch (type) {
|
||||||
|
case BLOCK_SPAM -> {
|
||||||
|
staffNotif = Component
|
||||||
|
.text(Text.prefix(String.format(Sentinel.language.get("spam-notification"),
|
||||||
|
offender.getName(),
|
||||||
|
heatMap.get(offender),
|
||||||
|
Sentinel.mainConfig.chat.antiSpam.punishHeat
|
||||||
|
)))
|
||||||
|
.hoverEvent(Component.text(String.format(Sentinel.language.get("spam-notification-hover"),
|
||||||
|
lastMessageMap.get(offender),
|
||||||
|
e.getMessage(),
|
||||||
|
similarity
|
||||||
|
)));
|
||||||
|
|
||||||
|
playerWarning = Component.text(Text.prefix(Sentinel.language.get("spam-block-warn")))
|
||||||
|
.hoverEvent(Component.text(Sentinel.language.get("action-automatic-reportable")));
|
||||||
|
}
|
||||||
|
case SPAM_PUNISH -> {
|
||||||
|
staffNotif = Component.text(Text.prefix(String.format(Sentinel.language.get("spam-mute-notification"),
|
||||||
|
offender.getName(),
|
||||||
|
heatMap.get(offender),
|
||||||
|
Sentinel.mainConfig.chat.antiSpam.punishHeat
|
||||||
|
)))
|
||||||
|
.hoverEvent(Component.text(String.format(Sentinel.language.get("spam-notification-hover"),
|
||||||
|
lastMessageMap.get(offender),
|
||||||
|
e.getMessage(),
|
||||||
|
similarity
|
||||||
|
)));
|
||||||
|
|
||||||
|
playerWarning = Component.text(Sentinel.language.get("spam-mute-warn"))
|
||||||
|
.hoverEvent(Component.text(Sentinel.language.get("action-automatic-reportable")));
|
||||||
|
sendConsoleLog(offender,e,type);
|
||||||
|
sendDiscordLog(offender,e,type);
|
||||||
|
}
|
||||||
|
case BLOCK_SWEAR -> {
|
||||||
|
staffNotif = Component.text(Text.prefix(String.format(Sentinel.language.get("profanity-block-notification"),
|
||||||
|
offender.getName(),
|
||||||
|
scoreMap.get(offender),
|
||||||
|
Sentinel.mainConfig.chat.antiSwear.punishScore
|
||||||
|
)))
|
||||||
|
.hoverEvent(Component.text(String.format(Sentinel.language.get("severity-notification-hover"),
|
||||||
|
e.getMessage(),
|
||||||
|
highlightProfanity(fullSimplify(e.getMessage())),
|
||||||
|
severity.name()
|
||||||
|
)));
|
||||||
|
|
||||||
|
playerWarning = Component.text(Text.prefix(Sentinel.language.get("profanity-block-warn")))
|
||||||
|
.hoverEvent(Component.text(Sentinel.language.get("action-automatic-reportable")));
|
||||||
|
}
|
||||||
|
case SWEAR_PUNISH -> {
|
||||||
|
staffNotif = Component.text(Text.prefix(String.format(Sentinel.language.get("profanity-mute-notification"),
|
||||||
|
offender.getName(),
|
||||||
|
scoreMap.get(offender),
|
||||||
|
Sentinel.mainConfig.chat.antiSwear.punishScore
|
||||||
|
)))
|
||||||
|
.hoverEvent(Component.text(String.format(Sentinel.language.get("severity-notification-hover"),
|
||||||
|
e.getMessage(),
|
||||||
|
highlightProfanity(fullSimplify(e.getMessage())),
|
||||||
|
severity.name()
|
||||||
|
)));
|
||||||
|
|
||||||
|
playerWarning = Component.text(Text.prefix(Sentinel.language.get("profanity-mute-warn")))
|
||||||
|
.hoverEvent(Component.text(Sentinel.language.get("action-automatic-reportable")));
|
||||||
|
sendConsoleLog(offender,e,type);
|
||||||
|
sendDiscordLog(offender,e,type);
|
||||||
|
}
|
||||||
|
case SLUR_PUNISH -> {
|
||||||
|
staffNotif = Component.text(Text.prefix(String.format(Sentinel.language.get("slur-mute-notification"),
|
||||||
|
offender.getName(),
|
||||||
|
scoreMap.get(offender),
|
||||||
|
Sentinel.mainConfig.chat.antiSwear.punishScore
|
||||||
|
)))
|
||||||
|
.hoverEvent(Component.text(String.format(Sentinel.language.get("severity-notification-hover"),
|
||||||
|
e.getMessage(),
|
||||||
|
highlightProfanity(fullSimplify(e.getMessage())),
|
||||||
|
severity.name()
|
||||||
|
)));
|
||||||
|
|
||||||
|
playerWarning = Component.text(Text.prefix(Sentinel.language.get("slur-mute-warn")))
|
||||||
|
.hoverEvent(Component.text(Sentinel.language.get("action-automatic-reportable")));
|
||||||
|
sendConsoleLog(offender,e,type);
|
||||||
|
sendDiscordLog(offender,e,type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (type.getExecutedCommand() != null) {
|
||||||
|
ServerUtils.sendCommand(type.getExecutedCommand().replace("%player%", offender.getName()));
|
||||||
|
}
|
||||||
|
staffNotif = staffNotif.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, "/sentinelcallback fpreport " + report));
|
||||||
|
|
||||||
|
for (Player staff : ServerUtils.getStaff()) {
|
||||||
|
staff.sendMessage(staffNotif);
|
||||||
|
}
|
||||||
|
e.getPlayer().sendMessage(playerWarning);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*public static void filterAction(Player offender, AsyncPlayerChatEvent e, String highlighted, FilterSeverity severity, Double similarity, FAT type) {
|
||||||
String report = ReportFalsePositives.generateReport(e);
|
String report = ReportFalsePositives.generateReport(e);
|
||||||
DecimalFormat fs = new DecimalFormat("##.#");
|
DecimalFormat fs = new DecimalFormat("##.#");
|
||||||
fs.setRoundingMode(RoundingMode.DOWN);
|
fs.setRoundingMode(RoundingMode.DOWN);
|
||||||
@@ -70,7 +167,7 @@ public class FilterAction {
|
|||||||
TextComponent component = new TextComponent();
|
TextComponent component = new TextComponent();
|
||||||
component.setText(text);
|
component.setText(text);
|
||||||
return component;
|
return component;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
private static boolean shouldLogSwears(FAT type) {
|
private static boolean shouldLogSwears(FAT type) {
|
||||||
return (type == FAT.SWEAR_PUNISH || type == FAT.SLUR_PUNISH) && Sentinel.mainConfig.chat.antiSwear.logSwears
|
return (type == FAT.SWEAR_PUNISH || type == FAT.SLUR_PUNISH) && Sentinel.mainConfig.chat.antiSwear.logSwears
|
||||||
@@ -78,31 +175,31 @@ public class FilterAction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void sendConsoleLog(Player offender, AsyncPlayerChatEvent e, FAT type) {
|
public static void sendConsoleLog(Player offender, AsyncPlayerChatEvent e, FAT type) {
|
||||||
StringBuilder log = new StringBuilder().append("]=- %s -=[".formatted(type.getTitle()));
|
StringBuilder log = new StringBuilder().append(String.format("]=- %s -=[",type.getTitle()));
|
||||||
log.append("\nPlayer: %s".formatted(offender.getName()));
|
log.append(String.format("\nPlayer: %s",offender.getName()));
|
||||||
log.append("\n> UUID: %s".formatted(offender.getUniqueId()));
|
log.append(String.format("\n> UUID: %s",offender.getUniqueId()));
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SPAM_PUNISH -> {
|
case SPAM_PUNISH -> {
|
||||||
log.append("\n> Heat: %1$s/%2$s".formatted(heatMap.get(offender),Sentinel.mainConfig.chat.antiSpam.punishHeat));
|
log.append(String.format("\n> Heat: %1$s/%2$s",heatMap.get(offender),Sentinel.mainConfig.chat.antiSpam.punishHeat));
|
||||||
log.append("\nMessage: %s".formatted(e.getMessage()));
|
log.append(String.format("\nMessage: %s", e.getMessage()));
|
||||||
log.append("\nReduced: %s".formatted(fullSimplify(e.getMessage())));
|
log.append(String.format("\nReduced: %s",fullSimplify(e.getMessage())));
|
||||||
}
|
}
|
||||||
case SWEAR_PUNISH -> {
|
case SWEAR_PUNISH, SLUR_PUNISH -> {
|
||||||
log.append("\n> Score: %1$s/%2$s".formatted(heatMap.get(offender),Sentinel.mainConfig.chat.antiSwear.punishScore));
|
log.append(String.format("\n> Score: %1$s/%2$s",heatMap.get(offender),Sentinel.mainConfig.chat.antiSwear.punishScore));
|
||||||
log.append("\nPrevious: %s".formatted(lastMessageMap.get(offender)));
|
log.append(String.format("\nPrevious: %s",lastMessageMap.get(offender)));
|
||||||
log.append("\nCurrent: %s".formatted(e.getMessage()));
|
log.append(String.format("\nCurrent: %s",e.getMessage()));
|
||||||
}
|
}
|
||||||
default -> {
|
default -> {
|
||||||
log.append("\nYou shouldn't be seeing this! Please report this message, and the context surrounding it!");
|
log.append("\nYou shouldn't be seeing this! Please report this message, and the context surrounding it!");
|
||||||
log.append("\n> Heat: %1$s/%2$s".formatted(heatMap.get(offender),Sentinel.mainConfig.chat.antiSpam.punishHeat));
|
log.append(String.format("\n> Heat: %1$s/%2$s",heatMap.get(offender),Sentinel.mainConfig.chat.antiSpam.punishHeat));
|
||||||
log.append("\nMessage: %s".formatted(e.getMessage()));
|
log.append(String.format("\nMessage: %s",e.getMessage()));
|
||||||
log.append("\nReduced: %s".formatted(fullSimplify(e.getMessage())));
|
log.append(String.format("\nReduced: %s",fullSimplify(e.getMessage())));
|
||||||
log.append("\n> Score: %1$s/%2$s".formatted(heatMap.get(offender),Sentinel.mainConfig.chat.antiSwear.punishScore));
|
log.append(String.format("\n> Score: %1$s/%2$s",heatMap.get(offender),Sentinel.mainConfig.chat.antiSwear.punishScore));
|
||||||
log.append("\nPrevious: %s".formatted(lastMessageMap.get(offender)));
|
log.append(String.format("\nPrevious: %s",lastMessageMap.get(offender)));
|
||||||
log.append("\nCurrent: %s".formatted(e.getMessage()));
|
log.append(String.format("\nCurrent: %s",e.getMessage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.append("\nExecuted: %s".formatted(type.getExecutedCommand()));
|
log.append(String.format("\nExecuted: %s",type.getExecutedCommand()));
|
||||||
Sentinel.log.info(String.valueOf(log));
|
Sentinel.log.info(String.valueOf(log));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,10 +216,10 @@ public class FilterAction {
|
|||||||
String currentTitle = "Now go report it!";
|
String currentTitle = "Now go report it!";
|
||||||
String currentValue = ">:(";
|
String currentValue = ">:(";
|
||||||
|
|
||||||
description.append("%1$sPlayer: `%2$s` %3$s".formatted(Emojis.rightSort,offender.getName(),Emojis.target));
|
description.append(String.format("%1$sPlayer: `%2$s` %3$s",Emojis.rightSort,offender.getName(),Emojis.target));
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case SPAM_PUNISH -> {
|
case SPAM_PUNISH -> {
|
||||||
description.append("\n%1$s%2$sHeat: `%3$s/%4$s`".formatted(
|
description.append(String.format("\n%1$s%2$sHeat: `%3$s/%4$s`",
|
||||||
Emojis.space,
|
Emojis.space,
|
||||||
Emojis.arrowRight,
|
Emojis.arrowRight,
|
||||||
heatMap.get(offender),
|
heatMap.get(offender),
|
||||||
@@ -134,8 +231,8 @@ public class FilterAction {
|
|||||||
currentTitle = "Current: ";
|
currentTitle = "Current: ";
|
||||||
currentValue = e.getMessage();
|
currentValue = e.getMessage();
|
||||||
}
|
}
|
||||||
case SWEAR_PUNISH -> {
|
case SWEAR_PUNISH, SLUR_PUNISH -> {
|
||||||
description.append("\n%1$s%2$sScore: `%3$s/%4$s`".formatted(
|
description.append(String.format("\n%1$s%2$sScore: `%3$s/%4$s`",
|
||||||
Emojis.space,
|
Emojis.space,
|
||||||
Emojis.arrowRight,
|
Emojis.arrowRight,
|
||||||
scoreMap.get(offender),
|
scoreMap.get(offender),
|
||||||
@@ -149,24 +246,22 @@ public class FilterAction {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WebhookMessage message = new WebhookMessageBuilder()
|
|
||||||
.setUsername("Sentinel Anti-Nuke | Logs")
|
|
||||||
.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png").
|
|
||||||
addEmbeds(new WebhookEmbedBuilder()
|
|
||||||
.setAuthor(new WebhookEmbed.EmbedAuthor(supertitle,null,"https://builtbybit.com/resources/sentinel-anti-nuke.30130/"))
|
|
||||||
.setTitle(new WebhookEmbed.EmbedTitle(title,null))
|
|
||||||
.setDescription(String.valueOf(description))
|
|
||||||
.addField(new WebhookEmbed.EmbedField(true,historyTitle,historyValue))
|
|
||||||
.addField(new WebhookEmbed.EmbedField(true,currentTitle,currentValue))
|
|
||||||
.addField(new WebhookEmbed.EmbedField(false,"Executed: ", executed.replaceAll("%player%",offender.getName())))
|
|
||||||
.setThumbnailUrl("https://crafatar.com/avatars/" + offender.getUniqueId() + "?size=64&&overlay")
|
|
||||||
.setColor(type.getColor().getRGB())
|
|
||||||
.build())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ServerUtils.sendDebugMessage("Executing webhook...");
|
ServerUtils.sendDebugMessage("Executing webhook...");
|
||||||
Sentinel.webclient.send(message);
|
DiscordWebhook.create()
|
||||||
|
.username("Sentinel Anti-Nuke | Logs")
|
||||||
|
.avatar("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png")
|
||||||
|
.addEmbed(DiscordEmbed.create()
|
||||||
|
.author(new DiscordEmbed.Author(supertitle,"https://builtbybit.com/resources/sentinel-anti-nuke.30130/",null))
|
||||||
|
.title(title)
|
||||||
|
.desc(String.valueOf(description))
|
||||||
|
.addField(new DiscordEmbed.Field(historyTitle,historyValue,true))
|
||||||
|
.addField(new DiscordEmbed.Field(currentTitle,currentValue,true))
|
||||||
|
.addField(new DiscordEmbed.Field("Executed: ", executed.replaceAll("%player%",offender.getName()),false))
|
||||||
|
.thumbnail("https://crafatar.com/avatars/" + offender.getUniqueId() + "?size=64&&overlay")
|
||||||
|
.color(type.getColor())
|
||||||
|
.build()).send(Sentinel.mainConfig.plugin.webhook);
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ServerUtils.sendDebugMessage("Filter Actions: Epic webhook failure!!!");
|
ServerUtils.sendDebugMessage("Filter Actions: Epic webhook failure!!!");
|
||||||
Sentinel.log.info(ex.toString());
|
Sentinel.log.info(ex.toString());
|
||||||
|
|||||||
@@ -53,13 +53,13 @@ public class AntiSpam {
|
|||||||
|
|
||||||
if (heatMap.get(p) > Sentinel.mainConfig.chat.antiSpam.punishHeat) {
|
if (heatMap.get(p) > Sentinel.mainConfig.chat.antiSpam.punishHeat) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
FilterAction.filterAction(p,e,null,null, GPTUtils.calcSim(e.getMessage(),lastMessageMap.get(p)), FAT.SPAM_PUNISH);
|
FilterAction.filterPunish(e,FAT.SPAM_PUNISH,GPTUtils.calcSim(e.getMessage(),lastMessageMap.get(p)), null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heatMap.get(p) > Sentinel.mainConfig.chat.antiSpam.blockHeat) {
|
if (heatMap.get(p) > Sentinel.mainConfig.chat.antiSpam.blockHeat) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
FilterAction.filterAction(p,e,null,null, GPTUtils.calcSim(e.getMessage(),lastMessageMap.get(p)), FAT.BLOCK_SPAM);
|
FilterAction.filterPunish(e,FAT.BLOCK_SPAM, GPTUtils.calcSim(e.getMessage(),lastMessageMap.get(p)), null);
|
||||||
heatMap.put(p, heatMap.get(p) + Sentinel.mainConfig.chat.antiSpam.highGain);
|
heatMap.put(p, heatMap.get(p) + Sentinel.mainConfig.chat.antiSpam.highGain);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,18 +2,11 @@ package io.github.thetrouper.sentinel.server.functions;
|
|||||||
|
|
||||||
import io.github.thetrouper.sentinel.server.util.MathUtils;
|
import io.github.thetrouper.sentinel.server.util.MathUtils;
|
||||||
|
|
||||||
import javax.crypto.Cipher;
|
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.UnknownHostException;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.security.MessageDigest;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import io.github.thetrouper.sentinel.server.util.Text;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
import javax.print.attribute.standard.Severity;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -27,7 +26,6 @@ public class ProfanityFilter {
|
|||||||
public static void handleProfanityFilter(AsyncPlayerChatEvent e) {
|
public static void handleProfanityFilter(AsyncPlayerChatEvent e) {
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
String message = Text.removeFirstColor(e.getMessage());
|
String message = Text.removeFirstColor(e.getMessage());
|
||||||
String highlighted = highlightProfanity(message);
|
|
||||||
FilterSeverity severity = ProfanityFilter.checkSeverity(message);
|
FilterSeverity severity = ProfanityFilter.checkSeverity(message);
|
||||||
|
|
||||||
if (severity.equals(FilterSeverity.SAFE)) return;
|
if (severity.equals(FilterSeverity.SAFE)) return;
|
||||||
@@ -37,7 +35,15 @@ public class ProfanityFilter {
|
|||||||
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + severity.getScore());
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + severity.getScore());
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
|
||||||
FilterAction.filterAction(p,e,highlighted,severity,null,getFAT(severity));
|
if (scoreMap.get(p)+severity.getScore() > Sentinel.mainConfig.chat.antiSwear.punishScore) {
|
||||||
|
scoreMap.put(p,scoreMap.get(p)+severity.getScore());
|
||||||
|
FilterAction.filterPunish(e,FAT.SWEAR_PUNISH,null,severity);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
scoreMap.put(p,scoreMap.get(p)+severity.getScore());
|
||||||
|
|
||||||
|
FilterAction.filterPunish(e,getFAT(severity),null,severity);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static FAT getFAT(FilterSeverity severity) {
|
private static FAT getFAT(FilterSeverity severity) {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package io.github.thetrouper.sentinel.server.functions;
|
package io.github.thetrouper.sentinel.server.functions;
|
||||||
|
|
||||||
import io.github.itzispyder.pdk.utils.SchedulerUtils;
|
import io.github.itzispyder.pdk.utils.SchedulerUtils;
|
||||||
import io.github.itzispyder.pdk.utils.discord.DiscordWebhook;
|
|
||||||
import io.github.thetrouper.sentinel.cmds.SocialSpyCommand;
|
import io.github.thetrouper.sentinel.cmds.SocialSpyCommand;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|||||||
@@ -1,11 +1,5 @@
|
|||||||
package io.github.thetrouper.sentinel.server.functions;
|
package io.github.thetrouper.sentinel.server.functions;
|
||||||
|
|
||||||
import club.minnced.discord.webhook.WebhookClient;
|
|
||||||
import club.minnced.discord.webhook.WebhookClientBuilder;
|
|
||||||
import club.minnced.discord.webhook.send.WebhookEmbed;
|
|
||||||
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
|
|
||||||
import club.minnced.discord.webhook.send.WebhookMessage;
|
|
||||||
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
|
|
||||||
import io.github.itzispyder.pdk.utils.discord.DiscordEmbed;
|
import io.github.itzispyder.pdk.utils.discord.DiscordEmbed;
|
||||||
import io.github.itzispyder.pdk.utils.discord.DiscordWebhook;
|
import io.github.itzispyder.pdk.utils.discord.DiscordWebhook;
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
@@ -13,7 +7,6 @@ import io.github.thetrouper.sentinel.data.Emojis;
|
|||||||
import io.github.thetrouper.sentinel.server.util.CipherUtils;
|
import io.github.thetrouper.sentinel.server.util.CipherUtils;
|
||||||
import io.github.thetrouper.sentinel.server.util.ServerUtils;
|
import io.github.thetrouper.sentinel.server.util.ServerUtils;
|
||||||
|
|
||||||
import java.awt.*;
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package io.github.thetrouper.sentinel.server.util;
|
package io.github.thetrouper.sentinel.server.util;
|
||||||
|
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
import org.bukkit.entity.Item;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
import java.io.BufferedWriter;
|
||||||
|
|||||||
Reference in New Issue
Block a user