Trying to fix dictionary saving
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package io.github.thetrouper.sentinel;
|
package io.github.thetrouper.sentinel;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
import io.github.itzispyder.pdk.PDK;
|
import io.github.itzispyder.pdk.PDK;
|
||||||
import io.github.thetrouper.sentinel.auth.Auth;
|
import io.github.thetrouper.sentinel.auth.Auth;
|
||||||
import io.github.thetrouper.sentinel.cmds.*;
|
import io.github.thetrouper.sentinel.cmds.*;
|
||||||
@@ -15,7 +16,8 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public final class Sentinel extends JavaPlugin {
|
public final class Sentinel extends JavaPlugin {
|
||||||
@@ -45,16 +47,23 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
|
||||||
log.info("\n]======------ Pre-load started! ------======[");
|
log.info("\n]======------ Pre-load started! ------======[");
|
||||||
PDK.init(this);
|
PDK.init(this);
|
||||||
instance = this;
|
instance = this;
|
||||||
|
|
||||||
log.info("Loading Config...");
|
log.info("Loading Config...");
|
||||||
loadConfig();
|
loadConfig();
|
||||||
log.info("Language Status: (" + dict.get("if-you-see-this-lang-is-broken") + ")");
|
log.info("Language Status: (" + dict.get("if-you-see-this-lang-is-broken") + ")");
|
||||||
|
|
||||||
log.info("Initializing Server ID...");
|
log.info("Initializing Server ID...");
|
||||||
String serverID = Authenticator.getServerID();
|
String serverID = Authenticator.getServerID();
|
||||||
|
|
||||||
|
key = mainConfig.plugin.license;
|
||||||
identifier = serverID;
|
identifier = serverID;
|
||||||
|
|
||||||
log.info("Pre-load finished!\n]====---- Requesting Authentication ----====[ \n- License Key: " + key + " \n- Server ID: " + serverID);
|
log.info("Pre-load finished!\n]====---- Requesting Authentication ----====[ \n- License Key: " + key + " \n- Server ID: " + serverID);
|
||||||
|
log.info("Auth Requested...");
|
||||||
String authStatus = "ERROR";
|
String authStatus = "ERROR";
|
||||||
String authstatus = "ERROR";
|
String authstatus = "ERROR";
|
||||||
try {
|
try {
|
||||||
@@ -98,6 +107,10 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
log.warning("Hmmmmmm thats not right... License: " + key + " Server ID: " + serverID + "\nPlease report the above stacktrace.");
|
log.warning("Hmmmmmm thats not right... License: " + key + " Server ID: " + serverID + "\nPlease report the above stacktrace.");
|
||||||
manager.disablePlugin(this);
|
manager.disablePlugin(this);
|
||||||
}
|
}
|
||||||
|
default -> {
|
||||||
|
log.warning("Achievment unlocked:\n How did we get here? \nLicense: " + key + " Server ID: " + serverID + "\nPlease report the above stacktrace.");
|
||||||
|
manager.disablePlugin(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,7 +124,7 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
AntiSpam.enableAntiSpam();
|
AntiSpam.enableAntiSpam();
|
||||||
ProfanityFilter.enableAntiSwear();
|
ProfanityFilter.enableAntiSwear();
|
||||||
|
|
||||||
prefix = MainConfig.Plugin.prefix;
|
prefix = mainConfig.plugin.prefix;
|
||||||
|
|
||||||
// Commands -> BE SURE TO REGISTER ANY NEW COMMANDS IN PLUGIN.YML (src/main/java/resources/plugin.yml)!
|
// Commands -> BE SURE TO REGISTER ANY NEW COMMANDS IN PLUGIN.YML (src/main/java/resources/plugin.yml)!
|
||||||
new SentinelCommand().register();
|
new SentinelCommand().register();
|
||||||
@@ -166,11 +179,31 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
nbtConfig.save();
|
nbtConfig.save();
|
||||||
dict.save();
|
dict.save();
|
||||||
|
|
||||||
log.info("Loading Dictionary (" + MainConfig.Plugin.lang + ")...");
|
try {
|
||||||
|
InputStream langIn = Sentinel.class.getClassLoader().getResourceAsStream("lang/en_us.json");
|
||||||
|
InputStreamReader langReader = new InputStreamReader(langIn);
|
||||||
|
BufferedReader langBR = new BufferedReader(langReader);
|
||||||
|
File langFile = LanguageFile.PATH;
|
||||||
|
FileWriter langFW = new FileWriter(langFile,true);
|
||||||
|
String line;
|
||||||
|
while ((line = langBR.readLine()) != null) {
|
||||||
|
langFW.write(line);
|
||||||
|
}
|
||||||
|
langFW.close();
|
||||||
|
langIn.close();
|
||||||
|
langReader.close();
|
||||||
|
langBR.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
log.warning("Error during config initialization: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
log.info("Loading Dictionary (" + Sentinel.mainConfig.plugin.lang + ")...");
|
||||||
|
|
||||||
log.info("Verifying Config...");
|
log.info("Verifying Config...");
|
||||||
//getConfig().options().copyDefaults();
|
getConfig().options().copyDefaults();
|
||||||
//saveDefaultConfig();
|
saveDefaultConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -191,7 +224,7 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
* @return true if the player is trusted, false otherwise
|
* @return true if the player is trusted, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean isTrusted(Player player) {
|
public static boolean isTrusted(Player player) {
|
||||||
return MainConfig.Plugin.trustedPlayers.contains(player.getUniqueId().toString());
|
return Sentinel.mainConfig.plugin.trustedPlayers.contains(player.getUniqueId().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -200,7 +233,7 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
* @return true if the command is logged, false otherwise
|
* @return true if the command is logged, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean isLoggedCommand(String command) {
|
public static boolean isLoggedCommand(String command) {
|
||||||
return MainConfig.Plugin.logged.contains(command);
|
return Sentinel.mainConfig.plugin.logged.contains(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -209,7 +242,7 @@ public final class Sentinel extends JavaPlugin {
|
|||||||
* @return true if the command is dangerous, false otherwise
|
* @return true if the command is dangerous, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean isDangerousCommand(String command) {
|
public static boolean isDangerousCommand(String command) {
|
||||||
return MainConfig.Plugin.dangerous.contains(command);
|
return Sentinel.mainConfig.plugin.dangerous.contains(command);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Returns an instance of this plugin
|
* Returns an instance of this plugin
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package io.github.thetrouper.sentinel.cmds;
|
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.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.itzispyder.pdk.utils.misc.Cooldown;
|
import io.github.itzispyder.pdk.utils.misc.Cooldown;
|
||||||
import io.github.thetrouper.sentinel.Sentinel;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
@@ -11,7 +13,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@CommandRegistry(value = "sentinelcallback", permission = @Permission("sentinel.callbacks"))
|
||||||
public class ChatClickCallback implements CustomCommand {
|
public class ChatClickCallback implements CustomCommand {
|
||||||
Cooldown<UUID> fpReportCooldown = new Cooldown<>();
|
Cooldown<UUID> fpReportCooldown = new Cooldown<>();
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,14 +5,18 @@ 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.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.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.ServerUtils;
|
|
||||||
import io.github.thetrouper.sentinel.server.util.Text;
|
import io.github.thetrouper.sentinel.server.util.Text;
|
||||||
import org.bukkit.Bukkit;
|
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
|
||||||
@@ -39,7 +43,7 @@ public class MessageCommand implements CustomCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCompletions(CompletionBuilder b) {
|
public void dispatchCompletions(CompletionBuilder b) {
|
||||||
b.then(b.arg(ServerUtils.unVanishedPlayers())
|
b.then(b.arg(ArrayUtils.toNewList(Bukkit.getOnlinePlayers(), Player::getName))
|
||||||
.then(b.arg("[<Message>]")));
|
.then(b.arg("[<Message>]")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
package io.github.thetrouper.sentinel.cmds;
|
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.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;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "reop")
|
||||||
public class ReopCommand implements CustomCommand {
|
public class ReopCommand implements CustomCommand {
|
||||||
@Override
|
@Override
|
||||||
public void dispatchCommand(CommandSender sender, Args args) {
|
public void dispatchCommand(CommandSender sender, Args args) {
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package io.github.thetrouper.sentinel.cmds;
|
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.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.functions.Message;
|
import io.github.thetrouper.sentinel.server.functions.Message;
|
||||||
@@ -12,6 +14,7 @@ import org.bukkit.entity.Player;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "reply", permission = @Permission("sentinel.reply"))
|
||||||
public class ReplyCommand implements CustomCommand {
|
public class ReplyCommand implements CustomCommand {
|
||||||
public static Map<UUID, UUID> replyMap = Message.replyMap;
|
public static Map<UUID, UUID> replyMap = Message.replyMap;
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class SentinelCommand implements CustomCommand {
|
|||||||
p.sendMessage(Text.prefix("Invalid Player!"));
|
p.sendMessage(Text.prefix("Invalid Player!"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
p.sendMessage(Text.prefix("Heat of " + target.getName() + ": &8(&c" + io.github.thetrouper.sentinel.server.functions.AntiSpam.heatMap.get(target) + "&7/&4" + MainConfig.Chat.AntiSpam.punishHeat + "&8)"));
|
p.sendMessage(Text.prefix("Heat of " + target.getName() + ": &8(&c" + io.github.thetrouper.sentinel.server.functions.AntiSpam.heatMap.get(target) + "&7/&4" + Sentinel.mainConfig.chat.antiSpam.punishHeat + "&8)"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package io.github.thetrouper.sentinel.cmds;
|
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.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;
|
||||||
@@ -12,6 +14,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@CommandRegistry(value = "socialspy", permission = @Permission("sentinel.spy"))
|
||||||
public class SocialSpyCommand implements CustomCommand {
|
public class SocialSpyCommand implements CustomCommand {
|
||||||
|
|
||||||
public static Map<UUID, Boolean> spyMap = new HashMap<>();
|
public static Map<UUID, Boolean> spyMap = new HashMap<>();
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
package io.github.thetrouper.sentinel.data;
|
package io.github.thetrouper.sentinel.data;
|
||||||
|
|
||||||
import io.github.thetrouper.sentinel.server.config.MainConfig;
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
|
|
||||||
import java.awt.*;
|
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,null),
|
||||||
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,null),
|
||||||
SWEAR("Sentinel Anti-Swear Log","Anti-Swear", "profanity-mute-warn", "profanity-mute-notification", 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, Color.orange),
|
||||||
SLUR("Sentinel Anti-Slur Log", "Anti-Slur", "slur-mute-warn", "slur-mute-notification", 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, Color.red),
|
||||||
SPAM("Sentinel Anti-Spam Log", "Anti-Spam", "spam-mute-warn", "spam-mute-notification", 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, Color.pink);
|
||||||
|
|
||||||
private final String title;
|
private final String title;
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ public class CMDBlockPlace implements CustomListener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
private void onCMDBlockPlace(BlockPlaceEvent e) {
|
private void onCMDBlockPlace(BlockPlaceEvent e) {
|
||||||
ServerUtils.sendDebugMessage("CommandBlockPlace: Detected block place");
|
ServerUtils.sendDebugMessage("CommandBlockPlace: Detected block place");
|
||||||
if (!MainConfig.Plugin.preventCmdBlockPlace) return;
|
if (!Sentinel.mainConfig.plugin.preventCmdBlockPlace) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockPlace: Enabled");
|
ServerUtils.sendDebugMessage("CommandBlockPlace: Enabled");
|
||||||
if (MainConfig.Plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
if (Sentinel.mainConfig.plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockPlace: Player is operator");
|
ServerUtils.sendDebugMessage("CommandBlockPlace: Player is operator");
|
||||||
Block b = e.getBlockPlaced();
|
Block b = e.getBlockPlaced();
|
||||||
if (b.getType() == Material.COMMAND_BLOCK || b.getType() == Material.CHAIN_COMMAND_BLOCK || b.getType() == Material.REPEATING_COMMAND_BLOCK ) {
|
if (b.getType() == Material.COMMAND_BLOCK || b.getType() == Material.CHAIN_COMMAND_BLOCK || b.getType() == Material.REPEATING_COMMAND_BLOCK ) {
|
||||||
@@ -33,8 +33,8 @@ public class CMDBlockPlace implements CustomListener {
|
|||||||
.setBlock(b)
|
.setBlock(b)
|
||||||
.setPlayer(p)
|
.setPlayer(p)
|
||||||
.setDenied(true)
|
.setDenied(true)
|
||||||
.setPunished(MainConfig.Plugin.cmdBlockPunish)
|
.setPunished(Sentinel.mainConfig.plugin.cmdBlockPunish)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logCmdBlocks)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logCmdBlocks)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.execute();
|
.execute();
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ public class CMDBlockUse implements CustomListener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
private void onCMDBlockUse(PlayerInteractEvent e) {
|
private void onCMDBlockUse(PlayerInteractEvent e) {
|
||||||
ServerUtils.sendDebugMessage("CommandBlockUse: Detected Interaction");
|
ServerUtils.sendDebugMessage("CommandBlockUse: Detected Interaction");
|
||||||
if (!MainConfig.Plugin.preventCmdBlockUse) return;
|
if (!Sentinel.mainConfig.plugin.preventCmdBlockUse) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockUse: Enabled");
|
ServerUtils.sendDebugMessage("CommandBlockUse: Enabled");
|
||||||
if (MainConfig.Plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
if (Sentinel.mainConfig.plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockUse: Player is op");
|
ServerUtils.sendDebugMessage("CommandBlockUse: Player is op");
|
||||||
if (e.getClickedBlock() == null) return;
|
if (e.getClickedBlock() == null) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockUse: Block isn't null");
|
ServerUtils.sendDebugMessage("CommandBlockUse: Block isn't null");
|
||||||
@@ -38,9 +38,9 @@ public class CMDBlockUse implements CustomListener {
|
|||||||
.setBlock(b)
|
.setBlock(b)
|
||||||
.setPlayer(p)
|
.setPlayer(p)
|
||||||
.setDenied(true)
|
.setDenied(true)
|
||||||
.setPunished(MainConfig.Plugin.cmdBlockPunish)
|
.setPunished(Sentinel.mainConfig.plugin.cmdBlockPunish)
|
||||||
.setDeoped(MainConfig.Plugin.deop)
|
.setDeoped(Sentinel.mainConfig.plugin.deop)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logCmdBlocks)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logCmdBlocks)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.execute();
|
.execute();
|
||||||
@@ -52,9 +52,9 @@ public class CMDBlockUse implements CustomListener {
|
|||||||
ServerUtils.sendDebugMessage("CommandBlockChange: Detected change block");
|
ServerUtils.sendDebugMessage("CommandBlockChange: Detected change block");
|
||||||
if (!(e.getEntity() instanceof Player p)) return;
|
if (!(e.getEntity() instanceof Player p)) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockChange: Changer is a player");
|
ServerUtils.sendDebugMessage("CommandBlockChange: Changer is a player");
|
||||||
if (!MainConfig.Plugin.preventCmdBlockUse) return;
|
if (!Sentinel.mainConfig.plugin.preventCmdBlockUse) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockChange: Enabled");
|
ServerUtils.sendDebugMessage("CommandBlockChange: Enabled");
|
||||||
if (MainConfig.Plugin.cmdBlockOpCheck && !p.isOp()) return;
|
if (Sentinel.mainConfig.plugin.cmdBlockOpCheck && !p.isOp()) return;
|
||||||
ServerUtils.sendDebugMessage("CommandBlockChange: Player is op");
|
ServerUtils.sendDebugMessage("CommandBlockChange: Player is op");
|
||||||
Block b = e.getBlock();
|
Block b = e.getBlock();
|
||||||
if (b.getType() == Material.COMMAND_BLOCK || b.getType() == Material.REPEATING_COMMAND_BLOCK || b.getType() == Material.CHAIN_COMMAND_BLOCK) {
|
if (b.getType() == Material.COMMAND_BLOCK || b.getType() == Material.REPEATING_COMMAND_BLOCK || b.getType() == Material.CHAIN_COMMAND_BLOCK) {
|
||||||
@@ -71,9 +71,9 @@ public class CMDBlockUse implements CustomListener {
|
|||||||
.setCommand(cb.getCommand())
|
.setCommand(cb.getCommand())
|
||||||
.setPlayer(p)
|
.setPlayer(p)
|
||||||
.setDenied(true)
|
.setDenied(true)
|
||||||
.setPunished(MainConfig.Plugin.cmdBlockPunish)
|
.setPunished(Sentinel.mainConfig.plugin.cmdBlockPunish)
|
||||||
.setDeoped(MainConfig.Plugin.deop)
|
.setDeoped(Sentinel.mainConfig.plugin.deop)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logCmdBlocks)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logCmdBlocks)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.execute();
|
.execute();
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ public class CMDMinecartPlace implements CustomListener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
private void onCMDMinecartPlace(PlayerInteractEvent e) {
|
private void onCMDMinecartPlace(PlayerInteractEvent e) {
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandPlace: Detected interaction");
|
ServerUtils.sendDebugMessage("MinecartCommandPlace: Detected interaction");
|
||||||
if (MainConfig.Plugin.preventCmdCartPlace) {
|
if (Sentinel.mainConfig.plugin.preventCmdCartPlace) {
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandPlace: Enabled");
|
ServerUtils.sendDebugMessage("MinecartCommandPlace: Enabled");
|
||||||
if (MainConfig.Plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
if (Sentinel.mainConfig.plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandPlace: Player is op");
|
ServerUtils.sendDebugMessage("MinecartCommandPlace: Player is op");
|
||||||
if (e.getItem() == null) return;
|
if (e.getItem() == null) return;
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandPlace: Item isn't null");
|
ServerUtils.sendDebugMessage("MinecartCommandPlace: Item isn't null");
|
||||||
@@ -38,12 +38,12 @@ public class CMDMinecartPlace implements CustomListener {
|
|||||||
.setEvent(e)
|
.setEvent(e)
|
||||||
.setPlayer(p)
|
.setPlayer(p)
|
||||||
.setBlock(e.getClickedBlock())
|
.setBlock(e.getClickedBlock())
|
||||||
.setDenied(MainConfig.Plugin.preventCmdCartPlace)
|
.setDenied(Sentinel.mainConfig.plugin.preventCmdCartPlace)
|
||||||
.setPunished(MainConfig.Plugin.cmdBlockPunish)
|
.setPunished(Sentinel.mainConfig.plugin.cmdBlockPunish)
|
||||||
.setDeoped(MainConfig.Plugin.deop)
|
.setDeoped(Sentinel.mainConfig.plugin.deop)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logCmdBlocks)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logCmdBlocks)
|
||||||
.execute();
|
.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ public class CMDMinecartUse implements CustomListener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
private void onCMDBlockMinecartUse(PlayerInteractEntityEvent e) {
|
private void onCMDBlockMinecartUse(PlayerInteractEntityEvent e) {
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandUse: Detected Interaction with entity");
|
ServerUtils.sendDebugMessage("MinecartCommandUse: Detected Interaction with entity");
|
||||||
if (!MainConfig.Plugin.preventCmdCartUse) return;
|
if (!Sentinel.mainConfig.plugin.preventCmdCartUse) return;
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandUse: Enabled");
|
ServerUtils.sendDebugMessage("MinecartCommandUse: Enabled");
|
||||||
if (MainConfig.Plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
if (Sentinel.mainConfig.plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return;
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandUse: Player op");
|
ServerUtils.sendDebugMessage("MinecartCommandUse: Player op");
|
||||||
if (e.getRightClicked().getType() == EntityType.MINECART_COMMAND) {
|
if (e.getRightClicked().getType() == EntityType.MINECART_COMMAND) {
|
||||||
ServerUtils.sendDebugMessage("MinecartCommandUse: Entity is minecart command");
|
ServerUtils.sendDebugMessage("MinecartCommandUse: Entity is minecart command");
|
||||||
@@ -30,8 +30,8 @@ public class CMDMinecartUse implements CustomListener {
|
|||||||
.setEvent(e)
|
.setEvent(e)
|
||||||
.setPlayer(p)
|
.setPlayer(p)
|
||||||
.setDenied(true)
|
.setDenied(true)
|
||||||
.setPunished(MainConfig.Plugin.cmdBlockPunish)
|
.setPunished(Sentinel.mainConfig.plugin.cmdBlockPunish)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logCmdBlocks)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logCmdBlocks)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.execute();
|
.execute();
|
||||||
|
|||||||
@@ -18,21 +18,21 @@ public class ChatEvent implements CustomListener {
|
|||||||
ServerUtils.sendDebugMessage("ChatEvent: Chat event detected!");
|
ServerUtils.sendDebugMessage("ChatEvent: Chat event detected!");
|
||||||
if (!Sentinel.isTrusted(e.getPlayer()) || !e.getPlayer().hasPermission("sentinel.chat.antiunicode.bypass")) {
|
if (!Sentinel.isTrusted(e.getPlayer()) || !e.getPlayer().hasPermission("sentinel.chat.antiunicode.bypass")) {
|
||||||
ServerUtils.sendDebugMessage("ChatEvent: Permission bypass failed, checking for unicode");
|
ServerUtils.sendDebugMessage("ChatEvent: Permission bypass failed, checking for unicode");
|
||||||
if (MainConfig.Chat.antiUnicode) {
|
if (Sentinel.mainConfig.chat.antiUnicode) {
|
||||||
ServerUtils.sendDebugMessage(("ChatEvent: Enabled, Continuing unicode check!"));
|
ServerUtils.sendDebugMessage(("ChatEvent: Enabled, Continuing unicode check!"));
|
||||||
AntiUnicode.handleAntiUnicode(e);
|
AntiUnicode.handleAntiUnicode(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!Sentinel.isTrusted(e.getPlayer()) || !e.getPlayer().hasPermission("sentinel.chat.antiswear.bypass")) {
|
if (!Sentinel.isTrusted(e.getPlayer()) || !e.getPlayer().hasPermission("sentinel.chat.antiswear.bypass")) {
|
||||||
ServerUtils.sendDebugMessage("ChatEvent: Permission bypass failed, checking for swears");
|
ServerUtils.sendDebugMessage("ChatEvent: Permission bypass failed, checking for swears");
|
||||||
if (MainConfig.Chat.AntiSwear.antiSwearEnabled) {
|
if (Sentinel.mainConfig.chat.antiSwear.antiSwearEnabled) {
|
||||||
ServerUtils.sendDebugMessage(("ChatEvent: Enabled, Continuing swear check!"));
|
ServerUtils.sendDebugMessage(("ChatEvent: Enabled, Continuing swear check!"));
|
||||||
ProfanityFilter.handleProfanityFilter(e);
|
ProfanityFilter.handleProfanityFilter(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!Sentinel.isTrusted(e.getPlayer()) || !e.getPlayer().hasPermission("sentinel.chat.antispam.bypass")) {
|
if (!Sentinel.isTrusted(e.getPlayer()) || !e.getPlayer().hasPermission("sentinel.chat.antispam.bypass")) {
|
||||||
ServerUtils.sendDebugMessage(("ChatEvent: Permission bypass failed, checking for spam"));
|
ServerUtils.sendDebugMessage(("ChatEvent: Permission bypass failed, checking for spam"));
|
||||||
if (MainConfig.Chat.AntiSpam.antiSpamEnabled) {
|
if (Sentinel.mainConfig.chat.antiSpam.antiSpamEnabled) {
|
||||||
ServerUtils.sendDebugMessage(("ChatEvent: Enabled, Continuing spam check!"));
|
ServerUtils.sendDebugMessage(("ChatEvent: Enabled, Continuing spam check!"));
|
||||||
AntiSpam.handleAntiSpam(e);
|
AntiSpam.handleAntiSpam(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,15 +29,15 @@ public class CommandEvent implements CustomListener {
|
|||||||
.setPlayer(p)
|
.setPlayer(p)
|
||||||
.setCommand(fullcommand)
|
.setCommand(fullcommand)
|
||||||
.setDenied(true)
|
.setDenied(true)
|
||||||
.setDeoped(MainConfig.Plugin.deop)
|
.setDeoped(Sentinel.mainConfig.plugin.deop)
|
||||||
.setPunished(MainConfig.Plugin.commandPunish)
|
.setPunished(Sentinel.mainConfig.plugin.commandPunish)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logDangerous)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logDangerous)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.execute();
|
.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (MainConfig.Plugin.blockSpecific) {
|
if (Sentinel.mainConfig.plugin.blockSpecific) {
|
||||||
ServerUtils.sendDebugMessage("CommandEvent: Checking command for specific");
|
ServerUtils.sendDebugMessage("CommandEvent: Checking command for specific");
|
||||||
if (command.contains(":")) {
|
if (command.contains(":")) {
|
||||||
ServerUtils.sendDebugMessage("CommandEvent: Failed check");
|
ServerUtils.sendDebugMessage("CommandEvent: Failed check");
|
||||||
@@ -50,9 +50,9 @@ public class CommandEvent implements CustomListener {
|
|||||||
.setPlayer(p)
|
.setPlayer(p)
|
||||||
.setCommand(command)
|
.setCommand(command)
|
||||||
.setDenied(true)
|
.setDenied(true)
|
||||||
.setDeoped(MainConfig.Plugin.deop)
|
.setDeoped(Sentinel.mainConfig.plugin.deop)
|
||||||
.setPunished(MainConfig.Plugin.specificPunish)
|
.setPunished(Sentinel.mainConfig.plugin.specificPunish)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logSpecific)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logSpecific)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.execute();
|
.execute();
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public class NBTEvents implements CustomListener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
private void onNBTPull(InventoryCreativeEvent e) {
|
private void onNBTPull(InventoryCreativeEvent e) {
|
||||||
ServerUtils.sendDebugMessage("NBT: Detected creative mode action");
|
ServerUtils.sendDebugMessage("NBT: Detected creative mode action");
|
||||||
if (!MainConfig.Plugin.preventNBT) return;
|
if (!Sentinel.mainConfig.plugin.preventNBT) return;
|
||||||
ServerUtils.sendDebugMessage("NBT: Enabled");
|
ServerUtils.sendDebugMessage("NBT: Enabled");
|
||||||
if (!(e.getWhoClicked() instanceof Player p)) return;
|
if (!(e.getWhoClicked() instanceof Player p)) return;
|
||||||
ServerUtils.sendDebugMessage("NBT: Clicker is a player");
|
ServerUtils.sendDebugMessage("NBT: Clicker is a player");
|
||||||
@@ -46,13 +46,13 @@ public class NBTEvents implements CustomListener {
|
|||||||
.setAction(ActionType.NBT)
|
.setAction(ActionType.NBT)
|
||||||
.setPlayer(Bukkit.getPlayer(e.getWhoClicked().getName()))
|
.setPlayer(Bukkit.getPlayer(e.getWhoClicked().getName()))
|
||||||
.setItem(e.getCursor())
|
.setItem(e.getCursor())
|
||||||
.setDenied(MainConfig.Plugin.preventNBT)
|
.setDenied(Sentinel.mainConfig.plugin.preventNBT)
|
||||||
.setDeoped(MainConfig.Plugin.deop)
|
.setDeoped(Sentinel.mainConfig.plugin.deop)
|
||||||
.setPunished(MainConfig.Plugin.nbtPunish)
|
.setPunished(Sentinel.mainConfig.plugin.nbtPunish)
|
||||||
.setRevertGM(MainConfig.Plugin.preventNBT)
|
.setRevertGM(Sentinel.mainConfig.plugin.preventNBT)
|
||||||
.setNotifyConsole(true)
|
.setNotifyConsole(true)
|
||||||
.setNotifyTrusted(true)
|
.setNotifyTrusted(true)
|
||||||
.setnotifyDiscord(MainConfig.Plugin.logNBT)
|
.setnotifyDiscord(Sentinel.mainConfig.plugin.logNBT)
|
||||||
.execute();
|
.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,19 +119,19 @@ public class NBTEvents implements CustomListener {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!NBTConfig.allowName && meta.hasDisplayName()) {
|
if (!Sentinel.nbtConfig.allowName && meta.hasDisplayName()) {
|
||||||
ServerUtils.sendDebugMessage("NBT: No pass N");
|
ServerUtils.sendDebugMessage("NBT: No pass N");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!NBTConfig.allowLore && meta.hasLore()) {
|
if (!Sentinel.nbtConfig.allowLore && meta.hasLore()) {
|
||||||
ServerUtils.sendDebugMessage("NBT: No Pass L ");
|
ServerUtils.sendDebugMessage("NBT: No Pass L ");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!NBTConfig.allowAttributes && meta.hasAttributeModifiers()) {
|
if (!Sentinel.nbtConfig.allowAttributes && meta.hasAttributeModifiers()) {
|
||||||
ServerUtils.sendDebugMessage("NBT: No pass A");
|
ServerUtils.sendDebugMessage("NBT: No pass A");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (NBTConfig.globalMaxEnchant != 0 && hasIllegalEnchants(i)) {
|
if (Sentinel.nbtConfig.globalMaxEnchant != 0 && hasIllegalEnchants(i)) {
|
||||||
ServerUtils.sendDebugMessage("NBT: No pass E");
|
ServerUtils.sendDebugMessage("NBT: No pass E");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -156,174 +156,174 @@ public class NBTEvents implements CustomListener {
|
|||||||
final ItemMeta meta = i.getItemMeta();
|
final ItemMeta meta = i.getItemMeta();
|
||||||
final Map<Enchantment, Integer> enchantments = meta.getEnchants();
|
final Map<Enchantment, Integer> enchantments = meta.getEnchants();
|
||||||
for (Integer value : enchantments.values()) {
|
for (Integer value : enchantments.values()) {
|
||||||
if (value > NBTConfig.globalMaxEnchant) {
|
if (value > Sentinel.nbtConfig.globalMaxEnchant) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ALL
|
// ALL
|
||||||
if (meta.hasEnchant(Enchantment.MENDING)) {
|
if (meta.hasEnchant(Enchantment.MENDING)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.MENDING);
|
final int level = meta.getEnchantLevel(Enchantment.MENDING);
|
||||||
return level > NBTConfig.maxMending || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxMending || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.DURABILITY)) {
|
if (meta.hasEnchant(Enchantment.DURABILITY)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.DURABILITY);
|
final int level = meta.getEnchantLevel(Enchantment.DURABILITY);
|
||||||
return level > NBTConfig.maxUnbreaking || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxUnbreaking || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.VANISHING_CURSE)) {
|
if (meta.hasEnchant(Enchantment.VANISHING_CURSE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.VANISHING_CURSE);
|
final int level = meta.getEnchantLevel(Enchantment.VANISHING_CURSE);
|
||||||
return level > NBTConfig.maxVanishing || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxVanishing || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ARMOR
|
// ARMOR
|
||||||
if (meta.hasEnchant(Enchantment.BINDING_CURSE)) {
|
if (meta.hasEnchant(Enchantment.BINDING_CURSE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.BINDING_CURSE);
|
final int level = meta.getEnchantLevel(Enchantment.BINDING_CURSE);
|
||||||
return level > NBTConfig.maxCurseOfBinding || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxCurseOfBinding || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.WATER_WORKER)) {
|
if (meta.hasEnchant(Enchantment.WATER_WORKER)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.WATER_WORKER);
|
final int level = meta.getEnchantLevel(Enchantment.WATER_WORKER);
|
||||||
return level > NBTConfig.maxAquaAffinity || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxAquaAffinity || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.PROTECTION_ENVIRONMENTAL)) {
|
if (meta.hasEnchant(Enchantment.PROTECTION_ENVIRONMENTAL)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_ENVIRONMENTAL);
|
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_ENVIRONMENTAL);
|
||||||
return level > NBTConfig.maxProtection || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxProtection || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.PROTECTION_EXPLOSIONS)) {
|
if (meta.hasEnchant(Enchantment.PROTECTION_EXPLOSIONS)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_EXPLOSIONS);
|
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_EXPLOSIONS);
|
||||||
return level > NBTConfig.maxBlastProtection || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxBlastProtection || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.DEPTH_STRIDER)) {
|
if (meta.hasEnchant(Enchantment.DEPTH_STRIDER)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.DEPTH_STRIDER);
|
final int level = meta.getEnchantLevel(Enchantment.DEPTH_STRIDER);
|
||||||
return level > NBTConfig.maxDepthStrider || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxDepthStrider || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.PROTECTION_FALL)) {
|
if (meta.hasEnchant(Enchantment.PROTECTION_FALL)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_FALL);
|
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_FALL);
|
||||||
return level > NBTConfig.maxFeatherFalling || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxFeatherFalling || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.PROTECTION_FIRE)) {
|
if (meta.hasEnchant(Enchantment.PROTECTION_FIRE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_FIRE);
|
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_FIRE);
|
||||||
return level > NBTConfig.maxFireProtection || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxFireProtection || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.FROST_WALKER)) {
|
if (meta.hasEnchant(Enchantment.FROST_WALKER)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.FROST_WALKER);
|
final int level = meta.getEnchantLevel(Enchantment.FROST_WALKER);
|
||||||
return level > NBTConfig.maxFrostWalker || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxFrostWalker || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.PROTECTION_PROJECTILE)) {
|
if (meta.hasEnchant(Enchantment.PROTECTION_PROJECTILE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_PROJECTILE);
|
final int level = meta.getEnchantLevel(Enchantment.PROTECTION_PROJECTILE);
|
||||||
return level > NBTConfig.maxProjectileProtection || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxProjectileProtection || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.OXYGEN)) {
|
if (meta.hasEnchant(Enchantment.OXYGEN)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.OXYGEN);
|
final int level = meta.getEnchantLevel(Enchantment.OXYGEN);
|
||||||
return level > NBTConfig.maxRespiration || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxRespiration || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.SOUL_SPEED)) {
|
if (meta.hasEnchant(Enchantment.SOUL_SPEED)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.SOUL_SPEED);
|
final int level = meta.getEnchantLevel(Enchantment.SOUL_SPEED);
|
||||||
return level > NBTConfig.maxSoulSpeed || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxSoulSpeed || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.THORNS)) {
|
if (meta.hasEnchant(Enchantment.THORNS)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.THORNS);
|
final int level = meta.getEnchantLevel(Enchantment.THORNS);
|
||||||
return level > NBTConfig.maxThorns || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxThorns || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.SWEEPING_EDGE)) {
|
if (meta.hasEnchant(Enchantment.SWEEPING_EDGE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.SWEEPING_EDGE);
|
final int level = meta.getEnchantLevel(Enchantment.SWEEPING_EDGE);
|
||||||
return level > NBTConfig.maxSweepingEdge || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxSweepingEdge || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.FROST_WALKER)) {
|
if (meta.hasEnchant(Enchantment.FROST_WALKER)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.FROST_WALKER);
|
final int level = meta.getEnchantLevel(Enchantment.FROST_WALKER);
|
||||||
return level > NBTConfig.maxFrostWalker || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxFrostWalker || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
|
|
||||||
// MELEE WEAPONS
|
// MELEE WEAPONS
|
||||||
if (meta.hasEnchant(Enchantment.DAMAGE_ARTHROPODS)) {
|
if (meta.hasEnchant(Enchantment.DAMAGE_ARTHROPODS)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.DAMAGE_ARTHROPODS);
|
final int level = meta.getEnchantLevel(Enchantment.DAMAGE_ARTHROPODS);
|
||||||
return level > NBTConfig.maxBaneOfArthropods || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxBaneOfArthropods || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.FIRE_ASPECT)) {
|
if (meta.hasEnchant(Enchantment.FIRE_ASPECT)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.FIRE_ASPECT);
|
final int level = meta.getEnchantLevel(Enchantment.FIRE_ASPECT);
|
||||||
return level > NBTConfig.maxFireAspect || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxFireAspect || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.LOOT_BONUS_MOBS)) {
|
if (meta.hasEnchant(Enchantment.LOOT_BONUS_MOBS)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.LOOT_BONUS_MOBS);
|
final int level = meta.getEnchantLevel(Enchantment.LOOT_BONUS_MOBS);
|
||||||
return level > NBTConfig.maxLooting || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxLooting || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.IMPALING)) {
|
if (meta.hasEnchant(Enchantment.IMPALING)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.IMPALING);
|
final int level = meta.getEnchantLevel(Enchantment.IMPALING);
|
||||||
return level > NBTConfig.maxImpaling || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxImpaling || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.KNOCKBACK)) {
|
if (meta.hasEnchant(Enchantment.KNOCKBACK)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.KNOCKBACK);
|
final int level = meta.getEnchantLevel(Enchantment.KNOCKBACK);
|
||||||
return level > NBTConfig.maxKnockback || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxKnockback || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.DAMAGE_ALL)) {
|
if (meta.hasEnchant(Enchantment.DAMAGE_ALL)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.DAMAGE_ALL);
|
final int level = meta.getEnchantLevel(Enchantment.DAMAGE_ALL);
|
||||||
return level > NBTConfig.maxSharpness || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxSharpness || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.DAMAGE_UNDEAD)) {
|
if (meta.hasEnchant(Enchantment.DAMAGE_UNDEAD)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.DAMAGE_UNDEAD);
|
final int level = meta.getEnchantLevel(Enchantment.DAMAGE_UNDEAD);
|
||||||
return level > NBTConfig.maxSmite || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxSmite || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
|
|
||||||
// RANGED WEAPONS
|
// RANGED WEAPONS
|
||||||
if (meta.hasEnchant(Enchantment.CHANNELING)) {
|
if (meta.hasEnchant(Enchantment.CHANNELING)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.CHANNELING);
|
final int level = meta.getEnchantLevel(Enchantment.CHANNELING);
|
||||||
return level > NBTConfig.maxChanneling || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxChanneling || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.ARROW_FIRE)) {
|
if (meta.hasEnchant(Enchantment.ARROW_FIRE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.ARROW_FIRE);
|
final int level = meta.getEnchantLevel(Enchantment.ARROW_FIRE);
|
||||||
return level > NBTConfig.maxFlame || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxFlame || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.ARROW_INFINITE)) {
|
if (meta.hasEnchant(Enchantment.ARROW_INFINITE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.ARROW_INFINITE);
|
final int level = meta.getEnchantLevel(Enchantment.ARROW_INFINITE);
|
||||||
return level > NBTConfig.maxInfinity || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxInfinity || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.LOYALTY)) {
|
if (meta.hasEnchant(Enchantment.LOYALTY)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.LOYALTY);
|
final int level = meta.getEnchantLevel(Enchantment.LOYALTY);
|
||||||
return level > NBTConfig.maxLoyalty || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxLoyalty || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.RIPTIDE)) {
|
if (meta.hasEnchant(Enchantment.RIPTIDE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.RIPTIDE);
|
final int level = meta.getEnchantLevel(Enchantment.RIPTIDE);
|
||||||
return level > NBTConfig.maxRiptide || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxRiptide || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.MULTISHOT)) {
|
if (meta.hasEnchant(Enchantment.MULTISHOT)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.MULTISHOT);
|
final int level = meta.getEnchantLevel(Enchantment.MULTISHOT);
|
||||||
return level > NBTConfig.maxMultishot || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxMultishot || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.PIERCING)) {
|
if (meta.hasEnchant(Enchantment.PIERCING)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.PIERCING);
|
final int level = meta.getEnchantLevel(Enchantment.PIERCING);
|
||||||
return level > NBTConfig.maxPiercing || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxPiercing || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.ARROW_DAMAGE)) {
|
if (meta.hasEnchant(Enchantment.ARROW_DAMAGE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.ARROW_DAMAGE);
|
final int level = meta.getEnchantLevel(Enchantment.ARROW_DAMAGE);
|
||||||
return level > NBTConfig.maxPower || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxPower || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.ARROW_KNOCKBACK)) {
|
if (meta.hasEnchant(Enchantment.ARROW_KNOCKBACK)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.ARROW_KNOCKBACK);
|
final int level = meta.getEnchantLevel(Enchantment.ARROW_KNOCKBACK);
|
||||||
return level > NBTConfig.maxPunch || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxPunch || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.QUICK_CHARGE)) {
|
if (meta.hasEnchant(Enchantment.QUICK_CHARGE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.QUICK_CHARGE);
|
final int level = meta.getEnchantLevel(Enchantment.QUICK_CHARGE);
|
||||||
return level > NBTConfig.maxQuickCharge || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxQuickCharge || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TOOLS
|
// TOOLS
|
||||||
if (meta.hasEnchant(Enchantment.DIG_SPEED)) {
|
if (meta.hasEnchant(Enchantment.DIG_SPEED)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.DIG_SPEED);
|
final int level = meta.getEnchantLevel(Enchantment.DIG_SPEED);
|
||||||
return level > NBTConfig.maxEfficiency || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxEfficiency || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.LOOT_BONUS_BLOCKS)) {
|
if (meta.hasEnchant(Enchantment.LOOT_BONUS_BLOCKS)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.LOOT_BONUS_BLOCKS);
|
final int level = meta.getEnchantLevel(Enchantment.LOOT_BONUS_BLOCKS);
|
||||||
return level > NBTConfig.maxFortune || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxFortune || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.LUCK)) {
|
if (meta.hasEnchant(Enchantment.LUCK)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.LUCK);
|
final int level = meta.getEnchantLevel(Enchantment.LUCK);
|
||||||
return level > NBTConfig.maxLuckOfTheSea || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxLuckOfTheSea || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.LURE)) {
|
if (meta.hasEnchant(Enchantment.LURE)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.LURE);
|
final int level = meta.getEnchantLevel(Enchantment.LURE);
|
||||||
return level > NBTConfig.maxLure || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxLure || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
if (meta.hasEnchant(Enchantment.SILK_TOUCH)) {
|
if (meta.hasEnchant(Enchantment.SILK_TOUCH)) {
|
||||||
final int level = meta.getEnchantLevel(Enchantment.SILK_TOUCH);
|
final int level = meta.getEnchantLevel(Enchantment.SILK_TOUCH);
|
||||||
return level > NBTConfig.maxSilkTouch || level > NBTConfig.globalMaxEnchant;
|
return level > Sentinel.nbtConfig.maxSilkTouch || level > Sentinel.nbtConfig.globalMaxEnchant;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ public class Action {
|
|||||||
String itemLog = (item != null) ? FileUtils.createNBTLog(item.getItemMeta().getAsString()) : "";
|
String itemLog = (item != null) ? FileUtils.createNBTLog(item.getItemMeta().getAsString()) : "";
|
||||||
String commandLog = (loggedCommand != null) ? FileUtils.createCommandLog(loggedCommand) : "";
|
String commandLog = (loggedCommand != null) ? FileUtils.createCommandLog(loggedCommand) : "";
|
||||||
|
|
||||||
final List<String> punishCommands = MainConfig.Plugin.punishCommands;
|
final List<String> punishCommands = Sentinel.mainConfig.plugin.punishCommands;
|
||||||
|
|
||||||
if (denied) {
|
if (denied) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
@@ -159,7 +159,7 @@ public class Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (notifyDiscord) {
|
if (notifyDiscord) {
|
||||||
DiscordWebhook webhook = new DiscordWebhook(MainConfig.Plugin.webhook);
|
DiscordWebhook webhook = new DiscordWebhook(Sentinel.mainConfig.plugin.webhook);
|
||||||
webhook.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png");
|
webhook.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png");
|
||||||
webhook.setUsername("Sentinel Anti-Nuke | Logs");
|
webhook.setUsername("Sentinel Anti-Nuke | Logs");
|
||||||
String description = (player != null) ? Emojis.rightSort + " **Player:** " + player.getName() + " " + Emojis.member + "\n" : "";
|
String description = (player != null) ? Emojis.rightSort + " **Player:** " + player.getName() + " " + Emojis.member + "\n" : "";
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ package io.github.thetrouper.sentinel.server;
|
|||||||
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.discord.DiscordWebhook;
|
import io.github.thetrouper.sentinel.discord.DiscordWebhook;
|
||||||
import io.github.thetrouper.sentinel.server.config.MainConfig;
|
|
||||||
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;
|
||||||
@@ -24,56 +24,65 @@ 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, String severity, Double similarity, FAT type) {
|
|
||||||
|
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);
|
||||||
|
|
||||||
TextComponent warn = new TextComponent();
|
|
||||||
warn.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(Sentinel.dict.get("action-automatic-reportable"))));
|
|
||||||
warn.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/sentinelcallback fpreport " + report));
|
|
||||||
|
|
||||||
DecimalFormat fs = new DecimalFormat("##.#");
|
DecimalFormat fs = new DecimalFormat("##.#");
|
||||||
fs.setRoundingMode(RoundingMode.DOWN);
|
fs.setRoundingMode(RoundingMode.DOWN);
|
||||||
|
|
||||||
TextComponent notif = new TextComponent();
|
TextComponent warn = createTextComponent(Text.prefix(Sentinel.dict.get(type.getWarnTranslationKey())));
|
||||||
notif.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText((type != FAT.SPAM && type != FAT.BLOCK_SPAM ? Sentinel.dict.get("severity-notification-hover").formatted(e.getMessage(), highlighted, severity) : Sentinel.dict.get("spam-notification-hover").formatted(e.getMessage(),lastMessageMap.get(offender),fs.format(similarity))))));
|
warn.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(Sentinel.dict.get("action-automatic-reportable"))));
|
||||||
|
warn.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/sentinelcallback fpreport " + report));
|
||||||
|
|
||||||
|
TextComponent notif = createTextComponent(Text.prefix((type != FAT.SPAM_PUNISH && type != FAT.BLOCK_SPAM ?
|
||||||
|
Sentinel.dict.get("severity-notification-hover").formatted(e.getMessage(), highlighted, severity.name().toLowerCase().replace("_"," ")) :
|
||||||
|
Sentinel.dict.get("spam-notification-hover").formatted(e.getMessage(), lastMessageMap.get(offender), fs.format(similarity)))));
|
||||||
|
notif.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(Sentinel.dict.get("severity-notification-hover"))));
|
||||||
notif.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/sentinelcallback fpreport " + report));
|
notif.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/sentinelcallback fpreport " + report));
|
||||||
|
|
||||||
warn.setText(Text.prefix(Sentinel.dict.get(type.getWarnTranslationKey())));
|
sendMessages(offender, warn, notif, type);
|
||||||
|
|
||||||
|
if (shouldLogSwears(type)) {
|
||||||
|
sendDiscordLog(offender, e, type);
|
||||||
|
sendConsoleLog(offender, e, type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void sendMessages(Player offender, TextComponent warn, TextComponent notif, FAT type) {
|
||||||
offender.spigot().sendMessage(warn);
|
offender.spigot().sendMessage(warn);
|
||||||
|
|
||||||
String notiftext = Sentinel.dict.get(type.getNotifTranslationKey());
|
String notifText = Sentinel.dict.get(type.getNotifTranslationKey());
|
||||||
|
notif.setText(Text.prefix((type != FAT.SPAM_PUNISH && type != FAT.BLOCK_SPAM ?
|
||||||
|
notifText.formatted(offender.getName(), scoreMap.get(offender), Sentinel.mainConfig.chat.antiSwear.punishScore) :
|
||||||
|
notifText.formatted(offender.getName(), heatMap.get(offender), Sentinel.mainConfig.chat.antiSpam.punishHeat))));
|
||||||
|
|
||||||
notif.setText(Text.prefix((type != FAT.SPAM && type != FAT.BLOCK_SPAM ? notiftext.formatted(offender.getName(), scoreMap.get(offender), MainConfig.Chat.AntiSwear.punishScore) : notiftext.formatted(offender.getName(),heatMap.get(offender),MainConfig.Chat.AntiSpam.punishHeat))));
|
ServerUtils.forEachStaff(staffmember -> staffmember.spigot().sendMessage(notif));
|
||||||
|
|
||||||
ServerUtils.forEachStaff(staffmember -> {
|
|
||||||
staffmember.spigot().sendMessage(notif);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (type.getExecutedCommand() != null) {
|
if (type.getExecutedCommand() != null) {
|
||||||
ServerUtils.sendCommand(type.getExecutedCommand().replace("%player%", offender.getName()));
|
ServerUtils.sendCommand(type.getExecutedCommand().replace("%player%", offender.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == FAT.SWEAR && MainConfig.Chat.AntiSwear.logSwears) {
|
|
||||||
sendDiscordLog(offender,e,type);
|
|
||||||
sendConsoleLog(offender,e,type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == FAT.SLUR && MainConfig.Chat.AntiSwear.logSwears) {
|
private static TextComponent createTextComponent(String text) {
|
||||||
sendDiscordLog(offender,e,type);
|
TextComponent component = new TextComponent();
|
||||||
sendConsoleLog(offender,e,type);
|
component.setText(text);
|
||||||
}
|
return component;
|
||||||
if (type == FAT.SPAM && Sentinel.mainConfig) {
|
|
||||||
sendDiscordLog(offender,e,type);
|
|
||||||
sendConsoleLog(offender,e,type);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean shouldLogSwears(FAT type) {
|
||||||
|
return (type == FAT.SWEAR_PUNISH || type == FAT.SLUR_PUNISH) && Sentinel.mainConfig.chat.antiSwear.logSwears
|
||||||
|
|| (type == FAT.SPAM_PUNISH && Sentinel.mainConfig.chat.antiSpam.logSpam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void sendConsoleLog(Player offender, AsyncPlayerChatEvent e, FAT type) {
|
public static void sendConsoleLog(Player offender, AsyncPlayerChatEvent e, FAT type) {
|
||||||
String log = "]=-" + type.getTitle() + "-=[\n" +
|
String log = "]=-" + type.getTitle() + "-=[\n" +
|
||||||
"Player: " + offender.getName() +
|
"Player: " + offender.getName() +
|
||||||
(type != FAT.BLOCK_SPAM && type != FAT.SPAM ? "> Score: `" + scoreMap.get(offender) + "/" + MainConfig.Chat.AntiSwear.punishScore : "> Heat: `" + heatMap.get(offender) + "/" + MainConfig.Chat.AntiSpam.punishHeat) + "\n" +
|
(type != FAT.BLOCK_SPAM && type != FAT.SPAM_PUNISH ? "> Score: `" + scoreMap.get(offender) + "/" + Sentinel.mainConfig.chat.antiSwear.punishScore :
|
||||||
|
"> Heat: `" + heatMap.get(offender) + "/" + Sentinel.mainConfig.chat.antiSpam.punishHeat) + "\n" +
|
||||||
"> UUID: " + offender.getUniqueId() + "\n" +
|
"> UUID: " + offender.getUniqueId() + "\n" +
|
||||||
(type != FAT.BLOCK_SPAM && type != FAT.SPAM ? "Message: " + e.getMessage() : "Previous: " + lastMessageMap.get(offender)) + "\n" +
|
(type != FAT.BLOCK_SPAM && type != FAT.SPAM_PUNISH ? "Message: " + e.getMessage() : "Previous: " + lastMessageMap.get(offender)) + "\n" +
|
||||||
(type != FAT.BLOCK_SPAM && type != FAT.SPAM ? "Reduced: " + fullSimplify(e.getMessage()) : "Current: " + e.getMessage()) + "\n" +
|
(type != FAT.BLOCK_SPAM && type != FAT.SPAM_PUNISH ? "Reduced: " + fullSimplify(e.getMessage()) : "Current: " + e.getMessage()) + "\n" +
|
||||||
(type.getExecutedCommand() != null ? "Executed: " + type.getExecutedCommand() : "Executed: Nothing, its a standard flag. You shouldn't be seeing this, please report it.");
|
(type.getExecutedCommand() != null ? "Executed: " + type.getExecutedCommand() : "Executed: Nothing, its a standard flag. You shouldn't be seeing this, please report it.");
|
||||||
Sentinel.log.info(log);
|
Sentinel.log.info(log);
|
||||||
}
|
}
|
||||||
@@ -83,7 +92,7 @@ public class FilterAction {
|
|||||||
String title = offender.getName() + " has triggered the " + type.getName() + "!";
|
String title = offender.getName() + " has triggered the " + type.getName() + "!";
|
||||||
String executed = type.getExecutedCommand() != null ? type.getExecutedCommand() : "Nothing, its a standard flag. You shouldn't be seeing this, please report it.";
|
String executed = type.getExecutedCommand() != null ? type.getExecutedCommand() : "Nothing, its a standard flag. You shouldn't be seeing this, please report it.";
|
||||||
|
|
||||||
DiscordWebhook webhook = new DiscordWebhook(Sentinel.mainConfig.);
|
DiscordWebhook webhook = new DiscordWebhook(Sentinel.mainConfig.plugin.webhook);
|
||||||
webhook.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png");
|
webhook.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png");
|
||||||
webhook.setUsername("Sentinel Anti-Nuke | Logs");
|
webhook.setUsername("Sentinel Anti-Nuke | Logs");
|
||||||
|
|
||||||
@@ -92,12 +101,16 @@ public class FilterAction {
|
|||||||
.setTitle(title)
|
.setTitle(title)
|
||||||
.setDescription(
|
.setDescription(
|
||||||
Emojis.rightSort + "Player: " + offender.getName() + " " + Emojis.target + "\\n" +
|
Emojis.rightSort + "Player: " + offender.getName() + " " + Emojis.target + "\\n" +
|
||||||
Emojis.space + Emojis.arrowRight + (type != FAT.BLOCK_SPAM ? "Score: `" + scoreMap.get(offender) + "/" + MainConfig.Chat.AntiSwear.punishScore : "Heat: `" + heatMap.get(offender) + "/" + MainConfig.Chat.AntiSpam.punishHeat) + "`\\n" +
|
Emojis.space + Emojis.arrowRight + (type != FAT.BLOCK_SPAM ?
|
||||||
|
"Score: `" + scoreMap.get(offender) + "/" + Sentinel.mainConfig.chat.antiSwear.punishScore :
|
||||||
|
"Heat: `" + heatMap.get(offender) + "/" + Sentinel.mainConfig.chat.antiSpam.punishHeat) + "`\\n" +
|
||||||
Emojis.space + Emojis.arrowRight + "UUID: `" + offender.getUniqueId() + "`\\n" +
|
Emojis.space + Emojis.arrowRight + "UUID: `" + offender.getUniqueId() + "`\\n" +
|
||||||
Emojis.rightSort + "Executed: " + executed + " " + Emojis.mute + "\\n"
|
Emojis.rightSort + "Executed: " + executed + " " + Emojis.mute + "\\n"
|
||||||
)
|
)
|
||||||
.addField((type != FAT.BLOCK_SPAM && type != FAT.SPAM ? "Message: " : "Previous: "), (type != FAT.BLOCK_SPAM && type != FAT.SPAM ? e.getMessage() : lastMessageMap.get(offender)) + Emojis.alarm, false)
|
.addField((type != FAT.BLOCK_SPAM && type != FAT.SPAM_PUNISH ? "Message: " : "Previous: "),
|
||||||
.addField((type != FAT.BLOCK_SPAM && type != FAT.SPAM ? "Reduced: " : "Current: "), (type != FAT.BLOCK_SPAM && type != FAT.SPAM ? highlightProfanity(e.getMessage(), "||", "||") : e.getMessage()) + " " + Emojis.noDM, false)
|
(type != FAT.BLOCK_SPAM && type != FAT.SPAM_PUNISH ? e.getMessage() : lastMessageMap.get(offender)) + Emojis.alarm, false)
|
||||||
|
.addField((type != FAT.BLOCK_SPAM && type != FAT.SPAM_PUNISH ? "Reduced: " : "Current: "),
|
||||||
|
(type != FAT.BLOCK_SPAM && type != FAT.SPAM_PUNISH ? highlightProfanity(e.getMessage(), "||", "||") : e.getMessage()) + " " + Emojis.noDM, false)
|
||||||
.setColor(type.getColor())
|
.setColor(type.getColor())
|
||||||
.setThumbnail("https://crafatar.com/avatars/" + offender.getUniqueId() + "?size=64&&overlay");
|
.setThumbnail("https://crafatar.com/avatars/" + offender.getUniqueId() + "?size=64&&overlay");
|
||||||
|
|
||||||
@@ -111,4 +124,51 @@ public class FilterAction {
|
|||||||
Sentinel.log.info(ex.toString());
|
Sentinel.log.info(ex.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
public static void filterAction(Player offender, AsyncPlayerChatEvent e, String highlighted, String severity, Double similarity, FAT type) {
|
||||||
|
String report = ReportFalsePositives.generateReport(e);
|
||||||
|
|
||||||
|
TextComponent warn = new TextComponent();
|
||||||
|
warn.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText(Sentinel.dict.get("action-automatic-reportable"))));
|
||||||
|
warn.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/sentinelcallback fpreport " + report));
|
||||||
|
|
||||||
|
DecimalFormat fs = new DecimalFormat("##.#");
|
||||||
|
fs.setRoundingMode(RoundingMode.DOWN);
|
||||||
|
|
||||||
|
TextComponent notif = new TextComponent();
|
||||||
|
notif.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText((type != FAT.SPAM_PUNISH && type != FAT.BLOCK_SPAM ? Sentinel.dict.get("severity-notification-hover").formatted(e.getMessage(), highlighted, severity) : Sentinel.dict.get("spam-notification-hover").formatted(e.getMessage(),lastMessageMap.get(offender),fs.format(similarity))))));
|
||||||
|
notif.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/sentinelcallback fpreport " + report));
|
||||||
|
|
||||||
|
warn.setText(Text.prefix(Sentinel.dict.get(type.getWarnTranslationKey())));
|
||||||
|
offender.spigot().sendMessage(warn);
|
||||||
|
|
||||||
|
String notiftext = Sentinel.dict.get(type.getNotifTranslationKey());
|
||||||
|
|
||||||
|
notif.setText(Text.prefix((type != FAT.SPAM_PUNISH && type != FAT.BLOCK_SPAM ? notiftext.formatted(offender.getName(), scoreMap.get(offender), Sentinel.mainConfig.chat.antiSwear.punishScore) : notiftext.formatted(offender.getName(),heatMap.get(offender),Sentinel.mainConfig.chat.antiSpam.punishHeat))));
|
||||||
|
|
||||||
|
ServerUtils.forEachStaff(staffmember -> {
|
||||||
|
staffmember.spigot().sendMessage(notif);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (type.getExecutedCommand() != null) {
|
||||||
|
ServerUtils.sendCommand(type.getExecutedCommand().replace("%player%", offender.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == FAT.SWEAR_PUNISH && Sentinel.mainConfig.chat.antiSwear.logSwears) {
|
||||||
|
sendDiscordLog(offender,e,type);
|
||||||
|
sendConsoleLog(offender,e,type);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type == FAT.SLUR_PUNISH && Sentinel.mainConfig.chat.antiSwear.logSwears) {
|
||||||
|
sendDiscordLog(offender,e,type);
|
||||||
|
sendConsoleLog(offender,e,type);
|
||||||
|
}
|
||||||
|
if (type == FAT.SPAM_PUNISH && Sentinel.mainConfig.chat.antiSpam.logSpam) {
|
||||||
|
sendDiscordLog(offender,e,type);
|
||||||
|
sendConsoleLog(offender,e,type);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class AdvancedConfig implements JsonSerializable<AdvancedConfig> {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, String> leetPatterns = new HashMap<>() {{
|
public Map<String, String> leetPatterns = new HashMap<>() {{
|
||||||
put("0", "o");
|
put("0", "o");
|
||||||
put("1", "i");
|
put("1", "i");
|
||||||
put("3", "e");
|
put("3", "e");
|
||||||
@@ -33,8 +33,8 @@ public class AdvancedConfig implements JsonSerializable<AdvancedConfig> {
|
|||||||
put("V", "u");
|
put("V", "u");
|
||||||
put("v", "u");
|
put("v", "u");
|
||||||
}};
|
}};
|
||||||
public static String falsePosRegex = "";
|
public String falsePosRegex = "";
|
||||||
public static String swearRegex = "";
|
public String swearRegex = "";
|
||||||
public static String strictRegex = "";
|
public String strictRegex = "";
|
||||||
public static String urlRegex = "^(https?://)?([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.[a-zA-Z]{2,}(/\\S*)?$\n";
|
public String urlRegex = "(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public class FPConfig implements JsonSerializable<FPConfig> {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> swearWhitelist = new ArrayList<>(Arrays.asList(
|
public List<String> swearWhitelist = new ArrayList<>(Arrays.asList(
|
||||||
"but then",
|
"but then",
|
||||||
"was scamming",
|
"was scamming",
|
||||||
"an alt",
|
"an alt",
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class LanguageFile implements JsonSerializable<LanguageFile> {
|
public class LanguageFile implements JsonSerializable<LanguageFile> {
|
||||||
public static final File PATH = new File(Sentinel.getInstance().getDataFolder(), "/lang/" + MainConfig.Plugin.lang);
|
public static final File PATH = new File(Sentinel.getInstance().getDataFolder(), "/lang/" + Sentinel.mainConfig.plugin.lang);
|
||||||
private final Map<String,String> dictionary = new HashMap<>();
|
private final Map<String,String> dictionary = new HashMap<>();
|
||||||
public LanguageFile() {}
|
public LanguageFile() {}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ public class MainConfig implements JsonSerializable<MainConfig> {
|
|||||||
public Chat chat = new Chat();
|
public Chat chat = new Chat();
|
||||||
|
|
||||||
public class Plugin {
|
public class Plugin {
|
||||||
|
public String license = "null";
|
||||||
public String prefix = "§d§lSentinel §8» §7";
|
public String prefix = "§d§lSentinel §8» §7";
|
||||||
public String webhook = "https://discord.com/api/webhooks/id/token";
|
public String webhook = "https://discord.com/api/webhooks/id/token";
|
||||||
public String lang = "en-us.json";
|
public String lang = "en-us.json";
|
||||||
|
|||||||
@@ -15,47 +15,47 @@ public class NBTConfig implements JsonSerializable<NBTConfig> {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean allowName = true;
|
public boolean allowName = true;
|
||||||
public static boolean allowLore = true;
|
public boolean allowLore = true;
|
||||||
public static boolean allowAttributes = false;
|
public boolean allowAttributes = false;
|
||||||
public static int globalMaxEnchant = 5;
|
public int globalMaxEnchant = 5;
|
||||||
public static int maxMending = 1;
|
public int maxMending = 1;
|
||||||
public static int maxUnbreaking = 3;
|
public int maxUnbreaking = 3;
|
||||||
public static int maxVanishing = 1;
|
public int maxVanishing = 1;
|
||||||
public static int maxAquaAffinity = 1;
|
public int maxAquaAffinity = 1;
|
||||||
public static int maxBlastProtection = 4;
|
public int maxBlastProtection = 4;
|
||||||
public static int maxCurseOfBinding = 1;
|
public int maxCurseOfBinding = 1;
|
||||||
public static int maxDepthStrider = 3;
|
public int maxDepthStrider = 3;
|
||||||
public static int maxFeatherFalling = 4;
|
public int maxFeatherFalling = 4;
|
||||||
public static int maxFireProtection = 4;
|
public int maxFireProtection = 4;
|
||||||
public static int maxFrostWalker = 2;
|
public int maxFrostWalker = 2;
|
||||||
public static int maxProjectileProtection = 4;
|
public int maxProjectileProtection = 4;
|
||||||
public static int maxProtection = 4;
|
public int maxProtection = 4;
|
||||||
public static int maxRespiration = 3;
|
public int maxRespiration = 3;
|
||||||
public static int maxSoulSpeed = 3;
|
public int maxSoulSpeed = 3;
|
||||||
public static int maxThorns = 3;
|
public int maxThorns = 3;
|
||||||
public static int maxSwiftSneak = 3;
|
public int maxSwiftSneak = 3;
|
||||||
public static int maxBaneOfArthropods = 5;
|
public int maxBaneOfArthropods = 5;
|
||||||
public static int maxEfficiency = 5;
|
public int maxEfficiency = 5;
|
||||||
public static int maxFireAspect = 2;
|
public int maxFireAspect = 2;
|
||||||
public static int maxLooting = 3;
|
public int maxLooting = 3;
|
||||||
public static int maxImpaling = 5;
|
public int maxImpaling = 5;
|
||||||
public static int maxKnockback = 2;
|
public int maxKnockback = 2;
|
||||||
public static int maxSharpness = 5;
|
public int maxSharpness = 5;
|
||||||
public static int maxSmite = 5;
|
public int maxSmite = 5;
|
||||||
public static int maxSweepingEdge = 3;
|
public int maxSweepingEdge = 3;
|
||||||
public static int maxChanneling = 1;
|
public int maxChanneling = 1;
|
||||||
public static int maxFlame = 1;
|
public int maxFlame = 1;
|
||||||
public static int maxInfinity = 1;
|
public int maxInfinity = 1;
|
||||||
public static int maxLoyalty = 3;
|
public int maxLoyalty = 3;
|
||||||
public static int maxRiptide = 3;
|
public int maxRiptide = 3;
|
||||||
public static int maxMultishot = 1;
|
public int maxMultishot = 1;
|
||||||
public static int maxPiercing = 4;
|
public int maxPiercing = 4;
|
||||||
public static int maxPower = 5;
|
public int maxPower = 5;
|
||||||
public static int maxPunch = 2;
|
public int maxPunch = 2;
|
||||||
public static int maxQuickCharge = 3;
|
public int maxQuickCharge = 3;
|
||||||
public static int maxFortune = 3;
|
public int maxFortune = 3;
|
||||||
public static int maxLuckOfTheSea = 3;
|
public int maxLuckOfTheSea = 3;
|
||||||
public static int maxLure = 3;
|
public int maxLure = 3;
|
||||||
public static int maxSilkTouch = 1;
|
public int maxSilkTouch = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class StrictConfig implements JsonSerializable<StrictConfig> {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> strict = new ArrayList<>() {{
|
public List<String> strict = new ArrayList<>() {{
|
||||||
add("nigg");
|
add("nigg");
|
||||||
add("niger");
|
add("niger");
|
||||||
add("nlgg");
|
add("nlgg");
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class SwearsConfig implements JsonSerializable<SwearsConfig> {
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> swears = new ArrayList<>() {{
|
public List<String> swears = new ArrayList<>() {{
|
||||||
add("anal");
|
add("anal");
|
||||||
add("anus");
|
add("anus");
|
||||||
add("arse");
|
add("arse");
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package io.github.thetrouper.sentinel.server.functions;
|
package io.github.thetrouper.sentinel.server.functions;
|
||||||
|
|
||||||
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
import io.github.thetrouper.sentinel.data.FAT;
|
import io.github.thetrouper.sentinel.data.FAT;
|
||||||
import io.github.thetrouper.sentinel.server.FilterAction;
|
import io.github.thetrouper.sentinel.server.FilterAction;
|
||||||
import io.github.thetrouper.sentinel.server.config.MainConfig;
|
|
||||||
import io.github.thetrouper.sentinel.server.util.GPTUtils;
|
import io.github.thetrouper.sentinel.server.util.GPTUtils;
|
||||||
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;
|
||||||
@@ -38,29 +38,29 @@ public class AntiSpam {
|
|||||||
if (lastMessageMap.containsKey(p)) {
|
if (lastMessageMap.containsKey(p)) {
|
||||||
String lastMessage = lastMessageMap.get(p);
|
String lastMessage = lastMessageMap.get(p);
|
||||||
double similarity = GPTUtils.calcSim(message, lastMessage);
|
double similarity = GPTUtils.calcSim(message, lastMessage);
|
||||||
ServerUtils.sendDebugMessage("AntiSpam: " + p.getName() + " has a heat of " + heatMap.get(p) + "/" + MainConfig.Chat.AntiSpam.punishHeat + ". Current Message: \"" + message + "\" Last message: \"" + lastMessage + "\"");
|
ServerUtils.sendDebugMessage("AntiSpam: " + p.getName() + " has a heat of " + heatMap.get(p) + "/" + Sentinel.mainConfig.chat.antiSpam.punishHeat + ". Current Message: \"" + message + "\" Last message: \"" + lastMessage + "\"");
|
||||||
if (similarity > 90) {
|
if (similarity > 90) {
|
||||||
heatMap.put(p, heatMap.get(p) + MainConfig.Chat.AntiSpam.highGain);
|
heatMap.put(p, heatMap.get(p) + Sentinel.mainConfig.chat.antiSpam.highGain);
|
||||||
ServerUtils.sendDebugMessage("AntiSpam: Similarity: " + similarity + ", is greater than 90% for " + p.getName() + ". Adding " + MainConfig.Chat.AntiSpam.highGain);
|
ServerUtils.sendDebugMessage("AntiSpam: Similarity: " + similarity + ", is greater than 90% for " + p.getName() + ". Adding " + Sentinel.mainConfig.chat.antiSpam.highGain);
|
||||||
} else if (similarity > 50) {
|
} else if (similarity > 50) {
|
||||||
heatMap.put(p, heatMap.get(p) + MainConfig.Chat.AntiSpam.mediumGain);
|
heatMap.put(p, heatMap.get(p) + Sentinel.mainConfig.chat.antiSpam.mediumGain);
|
||||||
ServerUtils.sendDebugMessage("AntiSpam: Similarity: " + similarity + ", is greater than 50% for " + p.getName() + ". Adding " + MainConfig.Chat.AntiSpam.mediumGain);
|
ServerUtils.sendDebugMessage("AntiSpam: Similarity: " + similarity + ", is greater than 50% for " + p.getName() + ". Adding " + Sentinel.mainConfig.chat.antiSpam.mediumGain);
|
||||||
} else if (similarity > 25) {
|
} else if (similarity > 25) {
|
||||||
heatMap.put(p, heatMap.get(p) + MainConfig.Chat.AntiSpam.lowGain);
|
heatMap.put(p, heatMap.get(p) + Sentinel.mainConfig.chat.antiSpam.lowGain);
|
||||||
ServerUtils.sendDebugMessage("AntiSpam: Similarity: " + similarity + ", is greater than 25% for " + p.getName() + ". Adding " + MainConfig.Chat.AntiSpam.lowGain);
|
ServerUtils.sendDebugMessage("AntiSpam: Similarity: " + similarity + ", is greater than 25% for " + p.getName() + ". Adding " + Sentinel.mainConfig.chat.antiSpam.lowGain);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heatMap.get(p) > 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);
|
FilterAction.filterAction(p,e,null,null, GPTUtils.calcSim(e.getMessage(),lastMessageMap.get(p)), FAT.SPAM_PUNISH);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (heatMap.get(p) > 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.filterAction(p,e,null,null, GPTUtils.calcSim(e.getMessage(),lastMessageMap.get(p)), FAT.BLOCK_SPAM);
|
||||||
heatMap.put(p, heatMap.get(p) + MainConfig.Chat.AntiSpam.highGain);
|
heatMap.put(p, heatMap.get(p) + Sentinel.mainConfig.chat.antiSpam.highGain);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lastMessageMap.put(p, message);
|
lastMessageMap.put(p, message);
|
||||||
@@ -69,7 +69,7 @@ public class AntiSpam {
|
|||||||
for (Player p : heatMap.keySet()) {
|
for (Player p : heatMap.keySet()) {
|
||||||
int heat = heatMap.get(p);
|
int heat = heatMap.get(p);
|
||||||
if (heat > 0) {
|
if (heat > 0) {
|
||||||
heat = heat - MainConfig.Chat.AntiSpam.heatDecay;
|
heat = heat - Sentinel.mainConfig.chat.antiSpam.heatDecay;
|
||||||
heatMap.put(p, Math.max(0, heat));
|
heatMap.put(p, Math.max(0, heat));
|
||||||
}
|
}
|
||||||
//ServerUtils.sendDebugMessage("AntiSpam: Decaying heat for " + p.getName() + ": " + heatMap.get(p));
|
//ServerUtils.sendDebugMessage("AntiSpam: Decaying heat for " + p.getName() + ": " + heatMap.get(p));
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public class Authenticator {
|
|||||||
|
|
||||||
if (key.equals(licenseKey)) {
|
if (key.equals(licenseKey)) {
|
||||||
if (Arrays.asList(allowedArr).contains(serverID)) {
|
if (Arrays.asList(allowedArr).contains(serverID)) {
|
||||||
authStatus = "AUTHOReIZED";
|
authStatus = "AUTHORIZED";
|
||||||
return authStatus;
|
return authStatus;
|
||||||
} else {
|
} else {
|
||||||
if (Arrays.asList(allowedArr).contains("minehut")) {
|
if (Arrays.asList(allowedArr).contains("minehut")) {
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ public class Message {
|
|||||||
receivers.add(sender);
|
receivers.add(sender);
|
||||||
AsyncPlayerChatEvent checkEvent = new AsyncPlayerChatEvent(true,sender,message,receivers);
|
AsyncPlayerChatEvent checkEvent = new AsyncPlayerChatEvent(true,sender,message,receivers);
|
||||||
if (checkEvent.isCancelled()) return;
|
if (checkEvent.isCancelled()) return;
|
||||||
if (!Sentinel.isTrusted(sender) || !sender.hasPermission("sentinel.chat.antiswear.bypass")) if (MainConfig.Chat.AntiSwear.antiSwearEnabled) ProfanityFilter.handleProfanityFilter(checkEvent);
|
if (!Sentinel.isTrusted(sender) || !sender.hasPermission("sentinel.chat.antiswear.bypass")) if (Sentinel.mainConfig.chat.antiSwear.antiSwearEnabled) ProfanityFilter.handleProfanityFilter(checkEvent);
|
||||||
if (!Sentinel.isTrusted(sender) || !sender.hasPermission("sentinel.chat.antispam.bypass")) if (MainConfig.Chat.AntiSpam.antiSpamEnabled) AntiSpam.handleAntiSpam(checkEvent);
|
if (!Sentinel.isTrusted(sender) || !sender.hasPermission("sentinel.chat.antispam.bypass")) if (Sentinel.mainConfig.chat.antiSpam.antiSpamEnabled) AntiSpam.handleAntiSpam(checkEvent);
|
||||||
if (!Sentinel.isTrusted(sender) || !sender.hasPermission("sentinel.chat.antiunicode.bypass")) if (MainConfig.Chat.antiUnicode) AntiUnicode.handleAntiUnicode(checkEvent);
|
if (!Sentinel.isTrusted(sender) || !sender.hasPermission("sentinel.chat.antiunicode.bypass")) if (Sentinel.mainConfig.chat.antiUnicode) AntiUnicode.handleAntiUnicode(checkEvent);
|
||||||
if (checkEvent.isCancelled()) return;
|
if (checkEvent.isCancelled()) return;
|
||||||
|
|
||||||
sender.sendMessage(Sentinel.dict.get("message-sent").formatted(receiver.getName(),message));
|
sender.sendMessage(Sentinel.dict.get("message-sent").formatted(receiver.getName(),message));
|
||||||
|
|||||||
@@ -1,81 +1,263 @@
|
|||||||
package io.github.thetrouper.sentinel.server.functions;
|
package io.github.thetrouper.sentinel.server.functions;
|
||||||
|
|
||||||
|
import io.github.thetrouper.sentinel.Sentinel;
|
||||||
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.server.FilterAction;
|
import io.github.thetrouper.sentinel.server.FilterAction;
|
||||||
import io.github.thetrouper.sentinel.server.config.*;
|
|
||||||
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 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;
|
||||||
|
|
||||||
public class ProfanityFilter {
|
public class ProfanityFilter {
|
||||||
public static Map<Player, Integer> scoreMap;
|
public static Map<Player, Integer> scoreMap;
|
||||||
private static final List<String> swearBlacklist = SwearsConfig.swears;
|
private static final List<String> swearBlacklist = Sentinel.swearConfig.swears;
|
||||||
private static final List<String> swearWhitelist = FPConfig.swearWhitelist;
|
private static final List<String> swearWhitelist = Sentinel.fpConfig.swearWhitelist;
|
||||||
private static final List<String> slurs = StrictConfig.strict;
|
private static final List<String> slurs = Sentinel.strictConfig.strict;
|
||||||
|
|
||||||
public static void enableAntiSwear() {
|
public static void enableAntiSwear() {
|
||||||
scoreMap = new HashMap<>();
|
scoreMap = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handleProfanityFilter(AsyncPlayerChatEvent e) {
|
public static void handleProfanityFilter(AsyncPlayerChatEvent e) {
|
||||||
|
Player p = e.getPlayer();
|
||||||
|
String message = Text.removeFirstColor(e.getMessage());
|
||||||
|
String highlighted = highlightProfanity(message);
|
||||||
|
FilterSeverity severity = ProfanityFilter.checkSeverity(message);
|
||||||
|
|
||||||
|
if (severity.equals(FilterSeverity.SAFE)) return;
|
||||||
|
|
||||||
|
if (!scoreMap.containsKey(p)) scoreMap.put(p, 0);
|
||||||
|
|
||||||
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + severity.getScore());
|
||||||
|
e.setCancelled(true);
|
||||||
|
|
||||||
|
FilterAction.filterAction(p,e,highlighted,severity,null,getFAT(severity));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static FAT getFAT(FilterSeverity severity) {
|
||||||
|
switch (severity) {
|
||||||
|
case LOW, MEDIUM_LOW, MEDIUM, MEDIUM_HIGH, HIGH -> {
|
||||||
|
return FAT.BLOCK_SWEAR;
|
||||||
|
}
|
||||||
|
case SLUR -> {
|
||||||
|
return FAT.SLUR_PUNISH;
|
||||||
|
}
|
||||||
|
default -> throw new IllegalArgumentException("Warning! This severity doesn't exist! " + severity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String highlightProfanity(String text) {
|
||||||
|
String highlightedSwears = highlightSwears(fullSimplify(text), "&e", "&f");
|
||||||
|
String highlightedText = highlightSlurs(highlightedSwears, "&c", "&f");
|
||||||
|
return Text.color(highlightedText);
|
||||||
|
}
|
||||||
|
public static String highlightProfanity(String text, String start, String end) {
|
||||||
|
String highlightedSwears = highlightSwears(fullSimplify(text), start, end);
|
||||||
|
String highlightedText = highlightSlurs(highlightedSwears, start, end);
|
||||||
|
return Text.color(highlightedText);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String highlightSwears(String text, String start, String end) {
|
||||||
|
for (String swear : swearBlacklist) {
|
||||||
|
if (text.contains(swear)) {text = text.replace(swear, start + swear + end);}
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String highlightSlurs(String text, String start, String end) {
|
||||||
|
for (String slur : slurs) {
|
||||||
|
if (text.contains(slur)) {
|
||||||
|
text = text.replace(slur, start + slur + end);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1: lowercase the text
|
||||||
|
* 1.4: Separate the string into words
|
||||||
|
* 1.5: Remove all verified clean english words
|
||||||
|
* 1.6: Put it back into one string
|
||||||
|
* 2: remove the known false positives
|
||||||
|
* 3: Check for swears and return "low" if true
|
||||||
|
* 4: Convert LeetSpeak Characters
|
||||||
|
* 5: Check for swears and return "medium-low" if true
|
||||||
|
* 6: Strip all special characters
|
||||||
|
* 7: Check for swears and return "medium" if true
|
||||||
|
* 8: simplify repeating letters
|
||||||
|
* 9: Check for swears and return "medium-high" if true
|
||||||
|
* 10: remove periods and spaces
|
||||||
|
* 11: Check for swears and return "high" if true
|
||||||
|
*/
|
||||||
|
public static String fullSimplify(String text) {
|
||||||
|
String lowercasedText = text.toLowerCase();
|
||||||
|
String cleanedText = removeFalsePositives(lowercasedText);
|
||||||
|
String convertedText = convertLeetSpeakCharacters(cleanedText);
|
||||||
|
String strippedText = stripSpecialCharacters(convertedText);
|
||||||
|
String simplifiedText = simplifyRepeatingLetters(strippedText);
|
||||||
|
return removePeriodsAndSpaces(simplifiedText);
|
||||||
|
}
|
||||||
|
public static FilterSeverity checkSeverity(String text) {
|
||||||
|
// 1:
|
||||||
|
String lowercasedText = text.toLowerCase();
|
||||||
|
ServerUtils.sendDebugMessage("ProfanityFilter: Lowercased: " + lowercasedText);
|
||||||
|
|
||||||
|
// 2:
|
||||||
|
String cleanedText = removeFalsePositives(lowercasedText);
|
||||||
|
ServerUtils.sendDebugMessage(("ProfanityFilter: Removed False positives: " + cleanedText));
|
||||||
|
|
||||||
|
// 3:
|
||||||
|
if (containsSwears(cleanedText)) return FilterSeverity.LOW;
|
||||||
|
if (containsSlurs(cleanedText)) return FilterSeverity.SLUR;
|
||||||
|
|
||||||
|
// 4:
|
||||||
|
String convertedText = convertLeetSpeakCharacters(cleanedText);
|
||||||
|
ServerUtils.sendDebugMessage(("ProfanityFilter: Leet Converted: " + convertedText));
|
||||||
|
|
||||||
|
// 5:
|
||||||
|
if (containsSwears(convertedText)) return FilterSeverity.MEDIUM_LOW;
|
||||||
|
if (containsSlurs(cleanedText)) return FilterSeverity.SLUR;
|
||||||
|
|
||||||
|
// 6:
|
||||||
|
String strippedText = stripSpecialCharacters(convertedText);
|
||||||
|
ServerUtils.sendDebugMessage(("ProfanityFilter: Specials Removed: " + strippedText));
|
||||||
|
|
||||||
|
// 7:
|
||||||
|
if (containsSwears(strippedText)) return FilterSeverity.MEDIUM;
|
||||||
|
if (containsSlurs(strippedText)) return FilterSeverity.SLUR;
|
||||||
|
|
||||||
|
// 8:
|
||||||
|
String simplifiedText = simplifyRepeatingLetters(strippedText);
|
||||||
|
ServerUtils.sendDebugMessage(("ProfanityFilter: Removed Repeating: " + simplifiedText));
|
||||||
|
|
||||||
|
// 9:
|
||||||
|
if (containsSwears(simplifiedText)) return FilterSeverity.MEDIUM_HIGH;
|
||||||
|
if (containsSlurs(simplifiedText)) return FilterSeverity.SLUR;
|
||||||
|
|
||||||
|
// 10:
|
||||||
|
String finalText = removePeriodsAndSpaces(simplifiedText);
|
||||||
|
ServerUtils.sendDebugMessage(("ProfanityFilter: Remove Punctuation: " + finalText));
|
||||||
|
|
||||||
|
// 11:
|
||||||
|
if (containsSwears(finalText)) return FilterSeverity.HIGH;
|
||||||
|
if (containsSlurs(finalText)) return FilterSeverity.SLUR;
|
||||||
|
|
||||||
|
return FilterSeverity.SAFE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static boolean ContainsProfanity(String text) {
|
||||||
|
return containsSwears(text) || containsSlurs(text);
|
||||||
|
}
|
||||||
|
private static boolean containsSwears(String text) {
|
||||||
|
ServerUtils.sendDebugMessage("ProfanityFilter: Checking for swears");
|
||||||
|
for (String swear : swearBlacklist) {
|
||||||
|
if (text.contains(swear)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
private static boolean containsSlurs(String text) {
|
||||||
|
ServerUtils.sendDebugMessage("ProfanityFilter: Checking for slurs");
|
||||||
|
for (String slur : slurs) {
|
||||||
|
if (text.contains(slur)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
public static String removeFalsePositives(String text) {
|
||||||
|
for (String falsePositive : swearWhitelist) {
|
||||||
|
text = text.replace(falsePositive, "");
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
public static String convertLeetSpeakCharacters(String text) {
|
||||||
|
text = Text.fromLeetString(text);
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String stripSpecialCharacters(String text) {
|
||||||
|
text = text.replaceAll("[^A-Za-z0-9.,!?;:'\"()\\[\\]{}]", "").trim();
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String simplifyRepeatingLetters(String text) {
|
||||||
|
text = Text.replaceRepeatingLetters(text);
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String removePeriodsAndSpaces(String text) {
|
||||||
|
return text.replaceAll("[^A-Za-z0-9]", "").replace(" ", "");
|
||||||
|
}
|
||||||
|
public static void decayScore() {
|
||||||
|
for (Player p : scoreMap.keySet()) {
|
||||||
|
int score = scoreMap.get(p);
|
||||||
|
if (score > 0) {
|
||||||
|
score = score - Sentinel.mainConfig.chat.antiSwear.scoreDecay;
|
||||||
|
scoreMap.put(p, Math.max(0, score));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*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);
|
String highlighted = highlightProfanity(message);
|
||||||
String severity = ProfanityFilter.checkSeverity(message);
|
String severity = ProfanityFilter.checkSeverity(message);
|
||||||
if (!scoreMap.containsKey(p)) scoreMap.put(p, 0);
|
if (!scoreMap.containsKey(p)) scoreMap.put(p, 0);
|
||||||
// Old: if (scoreMap.get(p) > Config.punishScore) punishSwear(p,highlighted,message,e);
|
// Old: if (scoreMap.get(p) > Config.punishScore) punishSwear(p,highlighted,message,e);
|
||||||
if (scoreMap.get(p) > MainConfig.Chat.AntiSwear.punishScore) FilterAction.filterAction(p,e,highlighted,severity, null, FAT.SWEAR);
|
if (scoreMap.get(p) > Sentinel.mainConfig.chat.antiSwear.punishScore) FilterAction.filterAction(p,e,highlighted,severity, null, FAT.SWEAR);
|
||||||
|
|
||||||
switch (severity) {
|
switch (severity) {
|
||||||
case "low" -> {
|
case "low" -> {
|
||||||
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + MainConfig.Chat.AntiSwear.lowScore);
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + Sentinel.mainConfig.chat.antiSwear.lowScore);
|
||||||
scoreMap.put(p, scoreMap.get(p) + MainConfig.Chat.AntiSwear.lowScore);
|
scoreMap.put(p, scoreMap.get(p) + Sentinel.mainConfig.chat.antiSwear.lowScore);
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
// Old: blockSwear(p,highlighted,message,severity,e);
|
// Old: blockSwear(p,highlighted,message,severity,e);
|
||||||
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
||||||
}
|
}
|
||||||
case "medium-low" -> {
|
case "medium-low" -> {
|
||||||
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + MainConfig.Chat.AntiSwear.mediumLowScore);
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + Sentinel.mainConfig.chat.antiSwear.mediumLowScore);
|
||||||
scoreMap.put(p, scoreMap.get(p) + MainConfig.Chat.AntiSwear.mediumLowScore);
|
scoreMap.put(p, scoreMap.get(p) + Sentinel.mainConfig.chat.antiSwear.mediumLowScore);
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
// Old: blockSwear(p,highlighted,message,severity,e);
|
// Old: blockSwear(p,highlighted,message,severity,e);
|
||||||
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
||||||
}
|
}
|
||||||
case "medium" -> {
|
case "medium" -> {
|
||||||
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + MainConfig.Chat.AntiSwear.mediumScore);
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + Sentinel.mainConfig.chat.antiSwear.mediumScore);
|
||||||
scoreMap.put(p, scoreMap.get(p) + MainConfig.Chat.AntiSwear.mediumScore);
|
scoreMap.put(p, scoreMap.get(p) + Sentinel.mainConfig.chat.antiSwear.mediumScore);
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
// Old: blockSwear(p,highlighted,message,severity,e);
|
// Old: blockSwear(p,highlighted,message,severity,e);
|
||||||
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
||||||
}
|
}
|
||||||
case "medium-high" -> {
|
case "medium-high" -> {
|
||||||
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + MainConfig.Chat.AntiSwear.mediumHighScore);
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + Sentinel.mainConfig.chat.antiSwear.mediumHighScore);
|
||||||
scoreMap.put(p, scoreMap.get(p) + MainConfig.Chat.AntiSwear.mediumHighScore);
|
scoreMap.put(p, scoreMap.get(p) + Sentinel.mainConfig.chat.antiSwear.mediumHighScore);
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
// Old: blockSwear(p,highlighted,message,severity,e);
|
// Old: blockSwear(p,highlighted,message,severity,e);
|
||||||
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
||||||
}
|
}
|
||||||
case "high" -> {
|
case "high" -> {
|
||||||
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + MainConfig.Chat.AntiSwear.highScore);
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + Sentinel.mainConfig.chat.antiSwear.highScore);
|
||||||
scoreMap.put(p, scoreMap.get(p) + MainConfig.Chat.AntiSwear.highScore);
|
scoreMap.put(p, scoreMap.get(p) + Sentinel.mainConfig.chat.antiSwear.highScore);
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
// Old: blockSwear(p,highlighted,message,severity,e);
|
// Old: blockSwear(p,highlighted,message,severity,e);
|
||||||
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
FilterAction.filterAction(p,e,highlighted,severity, null, FAT.BLOCK_SWEAR);
|
||||||
}
|
}
|
||||||
case "slur" -> {
|
case "slur" -> {
|
||||||
// Insta-Punish
|
// Insta-Punish
|
||||||
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + MainConfig.Chat.AntiSwear.highScore);
|
ServerUtils.sendDebugMessage("AntiSwear Flag, Message: " + message + " Concentrated: " + fullSimplify(message) + " Severity: " + severity + " Previous Score: " + scoreMap.get(p) +" Adding Score: " + Sentinel.mainConfig.chat.antiSwear.highScore);
|
||||||
scoreMap.put(p, scoreMap.get(p) + MainConfig.Chat.AntiSwear.highScore);
|
scoreMap.put(p, scoreMap.get(p) + Sentinel.mainConfig.chat.antiSwear.highScore);
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
// Old: punishSlur(p,highlighted,message,e);
|
// Old: punishSlur(p,highlighted,message,e);
|
||||||
FilterAction.filterAction(p,e,highlighted,severity, null,FAT.SLUR);
|
FilterAction.filterAction(p,e,highlighted,severity, null,FAT.SLUR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
public static void punishSwear(Player player, String highlightedMSG, String origMessage, AsyncPlayerChatEvent e) {
|
public static void punishSwear(Player player, String highlightedMSG, String origMessage, AsyncPlayerChatEvent e) {
|
||||||
@@ -140,155 +322,4 @@ public class ProfanityFilter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
public static String highlightProfanity(String text) {
|
|
||||||
String highlightedSwears = highlightSwears(fullSimplify(text), "&e", "&f");
|
|
||||||
String highlightedText = highlightSlurs(highlightedSwears, "&c", "&f");
|
|
||||||
return Text.color(highlightedText);
|
|
||||||
}
|
|
||||||
public static String highlightProfanity(String text, String start, String end) {
|
|
||||||
String highlightedSwears = highlightSwears(fullSimplify(text), start, end);
|
|
||||||
String highlightedText = highlightSlurs(highlightedSwears, start, end);
|
|
||||||
return Text.color(highlightedText);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String highlightSwears(String text, String start, String end) {
|
|
||||||
for (String swear : swearBlacklist) {
|
|
||||||
if (text.contains(swear)) {text = text.replace(swear, start + swear + end);}
|
|
||||||
}
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String highlightSlurs(String text, String start, String end) {
|
|
||||||
for (String slur : slurs) {
|
|
||||||
if (text.contains(slur)) {
|
|
||||||
text = text.replace(slur, start + slur + end);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 1: lowercase the text
|
|
||||||
* 1.4: Separate the string into words
|
|
||||||
* 1.5: Remove all verified clean english words
|
|
||||||
* 1.6: Put it back into one string
|
|
||||||
* 2: remove the known false positives
|
|
||||||
* 3: Check for swears and return "low" if true
|
|
||||||
* 4: Convert LeetSpeak Characters
|
|
||||||
* 5: Check for swears and return "medium-low" if true
|
|
||||||
* 6: Strip all special characters
|
|
||||||
* 7: Check for swears and return "medium" if true
|
|
||||||
* 8: simplify repeating letters
|
|
||||||
* 9: Check for swears and return "medium-high" if true
|
|
||||||
* 10: remove periods and spaces
|
|
||||||
* 11: Check for swears and return "high" if true
|
|
||||||
*/
|
|
||||||
public static String fullSimplify(String text) {
|
|
||||||
String lowercasedText = text.toLowerCase();
|
|
||||||
String cleanedText = removeFalsePositives(lowercasedText);
|
|
||||||
String convertedText = convertLeetSpeakCharacters(cleanedText);
|
|
||||||
String strippedText = stripSpecialCharacters(convertedText);
|
|
||||||
String simplifiedText = simplifyRepeatingLetters(strippedText);
|
|
||||||
String finalText = removePeriodsAndSpaces(simplifiedText);
|
|
||||||
return finalText;
|
|
||||||
}
|
|
||||||
public static String checkSeverity(String text) {
|
|
||||||
// 1:
|
|
||||||
String lowercasedText = text.toLowerCase();
|
|
||||||
ServerUtils.sendDebugMessage("ProfanityFilter: Lowercased: " + lowercasedText);
|
|
||||||
|
|
||||||
// 2:
|
|
||||||
String cleanedText = removeFalsePositives(lowercasedText);
|
|
||||||
ServerUtils.sendDebugMessage(("ProfanityFilter: Removed False positives: " + cleanedText));
|
|
||||||
|
|
||||||
// 3:
|
|
||||||
if (containsSwears(cleanedText)) return "low";
|
|
||||||
if (containsSlurs(cleanedText)) return "slur";
|
|
||||||
|
|
||||||
// 4:
|
|
||||||
String convertedText = convertLeetSpeakCharacters(cleanedText);
|
|
||||||
ServerUtils.sendDebugMessage(("ProfanityFilter: Leet Converted: " + convertedText));
|
|
||||||
|
|
||||||
// 5:
|
|
||||||
if (containsSwears(convertedText)) return "medium-low";
|
|
||||||
if (containsSlurs(cleanedText)) return "slur";
|
|
||||||
|
|
||||||
// 6:
|
|
||||||
String strippedText = stripSpecialCharacters(convertedText);
|
|
||||||
ServerUtils.sendDebugMessage(("ProfanityFilter: Specials Removed: " + strippedText));
|
|
||||||
|
|
||||||
// 7:
|
|
||||||
if (containsSwears(strippedText)) return "medium";
|
|
||||||
if (containsSlurs(strippedText)) return "slur";
|
|
||||||
|
|
||||||
// 8:
|
|
||||||
String simplifiedText = simplifyRepeatingLetters(strippedText);
|
|
||||||
ServerUtils.sendDebugMessage(("ProfanityFilter: Removed Repeating: " + simplifiedText));
|
|
||||||
|
|
||||||
// 9:
|
|
||||||
if (containsSwears(simplifiedText)) return "medium-high";
|
|
||||||
if (containsSlurs(simplifiedText)) return "slur";
|
|
||||||
|
|
||||||
// 10:
|
|
||||||
String finalText = removePeriodsAndSpaces(simplifiedText);
|
|
||||||
ServerUtils.sendDebugMessage(("ProfanityFilter: Remove Punctuation: " + finalText));
|
|
||||||
|
|
||||||
// 11:
|
|
||||||
if (containsSwears(finalText)) return "high";
|
|
||||||
if (containsSlurs(finalText)) return "slur";
|
|
||||||
|
|
||||||
return "safe";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static boolean ContainsProfanity(String text) {
|
|
||||||
return containsSwears(text) || containsSlurs(text);
|
|
||||||
}
|
|
||||||
private static boolean containsSwears(String text) {
|
|
||||||
ServerUtils.sendDebugMessage("ProfanityFilter: Checking for swears");
|
|
||||||
for (String swear : swearBlacklist) {
|
|
||||||
if (text.contains(swear)) return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
private static boolean containsSlurs(String text) {
|
|
||||||
ServerUtils.sendDebugMessage("ProfanityFilter: Checking for slurs");
|
|
||||||
for (String slur : slurs) {
|
|
||||||
if (text.contains(slur)) return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
public static String removeFalsePositives(String text) {
|
|
||||||
for (String falsePositive : swearWhitelist) {
|
|
||||||
text = text.replace(falsePositive, "");
|
|
||||||
}
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
public static String convertLeetSpeakCharacters(String text) {
|
|
||||||
text = Text.fromLeetString(text);
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String stripSpecialCharacters(String text) {
|
|
||||||
text = text.replaceAll("[^A-Za-z0-9.,!?;:'\"()\\[\\]{}]", "").trim();
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String simplifyRepeatingLetters(String text) {
|
|
||||||
text = Text.replaceRepeatingLetters(text);
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String removePeriodsAndSpaces(String text) {
|
|
||||||
return text.replaceAll("[^A-Za-z0-9]", "").replace(" ", "");
|
|
||||||
}
|
|
||||||
public static void decayScore() {
|
|
||||||
for (Player p : scoreMap.keySet()) {
|
|
||||||
int score = scoreMap.get(p);
|
|
||||||
if (score > 0) {
|
|
||||||
score = score - MainConfig.Chat.AntiSwear.scoreDecay;
|
|
||||||
scoreMap.put(p, Math.max(0, score));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class ReportFalsePositives {
|
|||||||
String simplifyRep,
|
String simplifyRep,
|
||||||
String sanitized) {
|
String sanitized) {
|
||||||
ServerUtils.sendDebugMessage("Creating FalsePositive Webhook...");
|
ServerUtils.sendDebugMessage("Creating FalsePositive Webhook...");
|
||||||
DiscordWebhook webhook = new DiscordWebhook(MainConfig.Plugin.webhook);
|
DiscordWebhook webhook = new DiscordWebhook(Sentinel.mainConfig.plugin.webhook);
|
||||||
webhook.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png");
|
webhook.setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png");
|
||||||
webhook.setUsername("Sentinel Anti-Nuke | Logs");
|
webhook.setUsername("Sentinel Anti-Nuke | Logs");
|
||||||
DiscordWebhook.EmbedObject embed = new DiscordWebhook.EmbedObject()
|
DiscordWebhook.EmbedObject embed = new DiscordWebhook.EmbedObject()
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class Text {
|
|||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
public static String fromLeetString(String s) {
|
public static String fromLeetString(String s) {
|
||||||
Map<String, String> dictionary = AdvancedConfig.leetPatterns;
|
Map<String, String> dictionary = Sentinel.advConfig.leetPatterns;
|
||||||
String msg = s;
|
String msg = s;
|
||||||
|
|
||||||
for (String key : dictionary.keySet()) {
|
for (String key : dictionary.keySet()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user