From 89f48e8903c60b8802388095d78dbd602e209f59 Mon Sep 17 00:00:00 2001 From: thetrouper Date: Mon, 24 Mar 2025 07:19:02 -0500 Subject: [PATCH] Going to implement some pattern recognition for backdoor detection, maybe i can detect ethanol too somehow, its litteraly just a URL Jar loader. --- .gradle/8.5/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/8.5/checksums/md5-checksums.bin | Bin 41797 -> 42047 bytes .gradle/8.5/checksums/sha1-checksums.bin | Bin 173411 -> 174221 bytes .../8.5/executionHistory/executionHistory.bin | Bin 2456695 -> 2456695 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.5/fileHashes/fileHashes.bin | Bin 292769 -> 293269 bytes .gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 215161 -> 215807 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .../main/me/trouper/sentinel/Sentinel.class | Bin 5494 -> 5174 bytes .../sentinel/data/config/FPConfig.class | Bin 2521 -> 0 bytes .../sentinel/data/config/StrictConfig.class | Bin 1562 -> 0 bytes .../sentinel/data/config/SwearsConfig.class | Bin 2765 -> 0 bytes .../ViolationConfig$CommandBlockEdit.class | Bin 1202 -> 1202 bytes ...tionConfig$CommandBlockMinecartPlace.class | Bin 1229 -> 1229 bytes ...lationConfig$CommandBlockMinecartUse.class | Bin 1223 -> 1223 bytes .../ViolationConfig$CommandBlockPlace.class | Bin 1205 -> 1205 bytes .../ViolationConfig$CommandBlockUse.class | Bin 1199 -> 1199 bytes ...ationConfig$CommandExecute$Dangerous.class | Bin 1802 -> 1802 bytes ...iolationConfig$CommandExecute$Logged.class | Bin 1107 -> 1107 bytes ...lationConfig$CommandExecute$Specific.class | Bin 1389 -> 1389 bytes .../ViolationConfig$CommandExecute.class | Bin 1377 -> 1377 bytes ...ViolationConfig$CreativeHotbarAction.class | Bin 1083 -> 1083 bytes .../data/config/ViolationConfig.class | Bin 5570 -> 5573 bytes .../server/commands/SentinelCommand.class | Bin 22340 -> 22379 bytes .../profanity/ProfanityResponse.class | Bin 11195 -> 11244 bytes .../me/trouper/sentinel/utils/FileUtils.class | Bin 3645 -> 3650 bytes .../compileJava/previous-compilation-data.bin | Bin 92669 -> 92702 bytes .../java/me/trouper/sentinel/Director.java | 4 +- .../java/me/trouper/sentinel/Sentinel.java | 6 -- .../java/me/trouper/sentinel/data/IO.java | 101 ++++++++++++------ .../sentinel/data/config/ViolationConfig.java | 3 +- .../FalsePositiveList.java} | 4 +- .../StrictList.java} | 4 +- .../SwearList.java} | 4 +- .../data/misc/CommandBlockHolder.java | 12 +-- .../server/commands/ExtraCommand.java | 47 ++++---- .../server/commands/SentinelCommand.java | 6 +- .../server/events/admin/WandEvents.java | 2 +- .../violations/command/HiddenCommand.java | 86 +++++++++++++++ .../profanity/ProfanityResponse.java | 20 ++-- .../functions/helpers/CBWhitelistManager.java | 14 +-- .../functions/helpers/ReportHandler.java | 4 +- .../server/gui/config/chat/ChatGUI.java | 1 - .../server/gui/whitelist/WhitelistGUI.java | 4 +- .../trouper/sentinel/startup/drm/Loader.java | 2 + .../me/trouper/sentinel/utils/FileUtils.java | 2 +- .../utils/{Random.java => RandomUtils.java} | 8 +- 49 files changed, 227 insertions(+), 107 deletions(-) delete mode 100644 build/classes/java/main/me/trouper/sentinel/data/config/FPConfig.class delete mode 100644 build/classes/java/main/me/trouper/sentinel/data/config/StrictConfig.class delete mode 100644 build/classes/java/main/me/trouper/sentinel/data/config/SwearsConfig.class rename src/main/java/me/trouper/sentinel/data/config/{FPConfig.java => lists/FalsePositiveList.java} (93%) rename src/main/java/me/trouper/sentinel/data/config/{StrictConfig.java => lists/StrictList.java} (85%) rename src/main/java/me/trouper/sentinel/data/config/{SwearsConfig.java => lists/SwearList.java} (96%) create mode 100644 src/main/java/me/trouper/sentinel/server/events/violations/command/HiddenCommand.java rename src/main/java/me/trouper/sentinel/utils/{Random.java => RandomUtils.java} (93%) diff --git a/.gradle/8.5/checksums/checksums.lock b/.gradle/8.5/checksums/checksums.lock index 36808d3ef89703cecac330fa17b9eddeee10c3f2..07a8063499933d62fa31b746c98b537b37844f69 100644 GIT binary patch literal 17 VcmZSfyWC&;{v_{G1~A~c2mm@$1#kcW literal 17 VcmZSfyWC&;{v_{G1~A~+2>?1f1y}$8 diff --git a/.gradle/8.5/checksums/md5-checksums.bin b/.gradle/8.5/checksums/md5-checksums.bin index 0e817849adcc5076de5851090ab2134f4e0f00c7..840cbf237373afccef3f2effa22490031db92614 100644 GIT binary patch delta 360 zcmX?ljA{P~rVS<%jMq1tN(8d=OVu3ApICE(0Sp$e+*~VP$jHCo#?zlGGP$6FuA84K z2ypR#dLC8wbLt6si0G2dZ?uwF`KzYQ^)E z^;)7%|1&oie`BBg*z>-|7N{B^n{$0*zzs^ths3j>4j4cSp}1>FsHL^G5Qh$E5WfL KPz19_#y^`)C4MjpG<`i}+i|3cn*juvmY(0NDs_>a-!(K>_`G2SRB-0z zw~8wT`DdLyz$nIX0xFoixz~6mKmURoPk*k+&2t!kZl3zY zkduG4?R*Q?mOzM-6^fhpzO7{9ubMX3f58(+s6Ok>x*s+$3y6PRts=twbsj`?dHv?A zpFNrQ3(nWLqbP?etBQ~4RCSeW!PxBnDo49H}ByWOjn zQInfriLWeR)iE)s-oou!9gH)1_yclIT~_^i399+^_Fq#Nlf@W4H!7ZBoId>tBj5B{ zYZ=Y91Bnl8jOVv^Z()q&Q0D$Zcp4z%^mfqG-0 zoGuWng0KjqU9)_+!|CTjXN=FcJoa{e9ym9Wfq`-Akq;fLU_%)AegbJDR9&C9B_$b8 z%DOu_O=LQIXvL=IJ}ciqb=g34af4zDO;>69#T!TJpB%`%nP=)+eXZ)|<<3AAsI~}* zwu$F(Xd_t{E+_H;eFk^q+PA(V9tE z+2i6?r%b0LdFwA7v7g!;S?qsqhbp`QQCNKjtT2)Yg_wck%>6t{EoSr9nH}su`ehvc zlyV;f`VJI-{bms3=haVd6a>0Me0oJlSf-5wqSikPowlLs|p@QJ03Q0fn;$ zNRFHV^s|-ZF$uHY?QjCKX7Hy2vnBLF0<(VhP#L%84*?Mb0xt2FPu>9~myF&47?-@> z0WX&W-vJr71{489X#wlEN__z-3%84i0gw#0GnD~a76BQtA@~88m*fEsmzu2sHn*Cs y0q_O^%eRZP0a*^W{K5gq1h?GB0pJI>)XxF92)Crz0a^zE8L=Vw1h<#u0nEUCgi@pc diff --git a/.gradle/8.5/executionHistory/executionHistory.bin b/.gradle/8.5/executionHistory/executionHistory.bin index bbb564515fd3c283fa83117755a2ddf1c80dd202..eb656103afa854362b0e061928e2f309804a34a9 100644 GIT binary patch delta 9374 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 delta 6359 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 diff --git a/.gradle/8.5/executionHistory/executionHistory.lock b/.gradle/8.5/executionHistory/executionHistory.lock index 83286f449cc5785f6c01aed2525ccc3c746917d1..e52e314bb14938ada8e9ebf164608b194f0fd8f8 100644 GIT binary patch literal 17 VcmZSnD(U&&^z=?{1~3qN4*)e81rq=O literal 17 VcmZSnD(U&&^z=?{1~3r22LLq)1p)v7 diff --git a/.gradle/8.5/fileHashes/fileHashes.bin b/.gradle/8.5/fileHashes/fileHashes.bin index 0266a9929ec3281f07d45288258df840dbf368e2..f35fb2b928d923ab3db79f0a67c015e9f2d35700 100644 GIT binary patch delta 4543 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 diff --git a/.gradle/8.5/fileHashes/fileHashes.lock b/.gradle/8.5/fileHashes/fileHashes.lock index 5ec55ca92666f42ee2528e0d5c06a23663bd674c..fc878c310fd1c87a4bef0b641bf29e39667f4f7e 100644 GIT binary patch literal 17 VcmZR+zH2oTgY?$~1~52Q2mmrB1nB?( literal 17 VcmZR+zH2oTgY?$~1~51h1pqP&1keBg diff --git a/.gradle/8.5/fileHashes/resourceHashesCache.bin b/.gradle/8.5/fileHashes/resourceHashesCache.bin index 350d8f0896b2f8d63544789bf6e59098b4f8f904..e6e2d3e7519a204f359fc2b57be898a49307fd87 100644 GIT binary patch delta 1207 zcmex4f%pGZ-VG)ajOCk6B^;UfcbreCE#G~L0R))6c2CZgYUF=&mHmv!qI#&9;O3`N zm4f_<3pDjC9GM}4p30j;bu_pH=KYN=mHn2z1S*=oxzubD3!Abf1LJwu>HPjonbU9h zGbL;`v+-(R4BXtfM^S*^y?b)>PZ0^I;WIbSJR`}?&udYA)hl@uR4{b&%Il7d{7D)% znQR{yLCs!0`QeS9{7*GrKPo<82o+=8eDUUIM#h!X-=1Ky-JEo1bui<^?R*A|A36Ca zF5$SN<2fCo(4%tuH%rDycK#`sW;x`)cZG`H-|ptfc$1sojW^M&F2M>aI(xgAFJmwV zF;)r7RI~HjK$m4 zIG8GV_&=UmQYRui3!>DkeET#JCT}sun;R7^c&F#SW8&NHV8Jwxjj?I_eLJR^y!>BZ z&SrjS*8?@#b$h-K(_}G5$Bl{?xWUS&b4xL=+P*lS$w!1SZ2O01CJSMK;uRiCF8|U0 z47KC#c7^FoH<|dQYQJQpzB&Uns&o5?nM|G>{QGs3wsjl-fr`H0Zm@`H5+jp>;zq>} z{169mZD9)IVhrA%xQ|JYm0xl}Lx5sq9n@^&?U{#}fbo&S#dU7~+Z_;5kG;|jr+r1Gn1sv& z+Sbow5SVH+ioFS+1#yvg1!X&@>Z`ua|2U__9FAA z@80|iR68ACSIN>LSr@Lx@E7{)z3rSAE1rm{ZGzd)iyKRWo-;gT$onqy z;x49&Cf#Q*mPhD(VtZ+~VuE^SIHroqn{{epUryQCA1oJ&;8@UuGF>H!5w00HuMm%+#anX_Wtt5X4v zw+=7?@d>vVIss4zw|_wa&1z`XIqxqN48v;_7I2-~Ox7SqxuM7cPw})Z@ z85p;?dI6FM0kOBVj{+3|w@8Em-Gc#gw=XND#LQv;tNN0a3SMz5)>iw~E68I03iX!~$9w0jaSe LXb`t;?g9*2`t)*< diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 2b38a7b22c9a3177262f0c40db062199698eb4b3..b933d74d8899ebf12285baec06d85b26ae6c158a 100644 GIT binary patch literal 17 VcmZSnKTT<6%cI}H3}7H71OPx(1w;S< literal 17 VcmZSnKTT<6%cI}H3}7I|2mnAs1v3Bu diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index a4167df02ad008662b3c1a537b1b90fd46e69bb3..f0fd358d2cda3db6c8e5359638d5484c44034d77 100644 GIT binary patch literal 8 PcmZQzV4QkXWT`U%2h;*s literal 8 PcmZQzV4Qm3o8}1s3G)L! diff --git a/build/classes/java/main/me/trouper/sentinel/Sentinel.class b/build/classes/java/main/me/trouper/sentinel/Sentinel.class index 7a9ecb0e02f7dcfe9f625bab15a166a1261818c1..68a8209bfe3b15cdc61c55467d349e7b835d1cc9 100644 GIT binary patch delta 1517 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 F>!16>mSq3{ diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/StrictConfig.class b/build/classes/java/main/me/trouper/sentinel/data/config/StrictConfig.class deleted file mode 100644 index e422320affbd1af137b074c568d78948c92e6d12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1562 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 diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandBlockEdit.class b/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandBlockEdit.class index e76542c3bbd4ae2b3f74e96153aaa142e9daf8ea..75be86a070d18988731929d2f17259f1fb1a6ec9 100644 GIT binary patch delta 33 ocmdnQxruW_2#aVL0}Der11CcT10O>rgD^uCg9JnMLgD^uSg9Jm>#gD^uMg9JnWVgD^ucg9Jn00J2{QT69AAk2o?YU delta 33 pcmZ3_xt?=FAdBd71{Q`D44e!r8Tc4hF$goPW{_Z5GdYdL69A9f2oL}O diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute$Dangerous.class b/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute$Dangerous.class index 4cc1acb1b6e2f004a1ba445a2d494d5f1c185c33..44d04863d8c17d80c71b909b121b598baa490cdf 100644 GIT binary patch delta 37 vcmV+=0NVeG4vG%2pavPh00aQR00{uX0G|Nd0Hgrj0I2}p0ImSvleq>_-yaO4 delta 37 vcmV+=0NVeG4vG%2pavPg00aQQ00{uW0G|Nc0Hgri0I2}o0ImSuleq>_-lzN38Mf2 diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute.class b/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute.class index 9e170a3e2ddab905304534491795e6ebd80080d1..c8063e19ccaa6aa4145501c3f7548303070dd1a3 100644 GIT binary patch delta 24 gcmaFJ^^j}BXBOT)3@i+L83Y*iF~~6NpTwF70BltUsQ>@~ delta 24 gcmaFJ^^j}BXBOVw3@i+L7z7yhGRQFOo5Y$30BkJ>r2qf` diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CreativeHotbarAction.class b/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CreativeHotbarAction.class index 0b5d14138074b746e3f8a0360d41b788156b346a..d465ef2db8c6daf085b56430cc188c7bd3553d5f 100644 GIT binary patch delta 33 pcmdnZv72MVU1rfu3@i+r88{iXFz_*KWe{fA#vsA4eex$}PXMP<34Q{+!I>l4AYf^3=p4A0Tt{1%7uHS8fIt1`!4U22lnX1~CQ= z25|-x1_=fS21y1V1}TOJ25E*ApiBXSEJF>0976|#Ji`p5XG-#G+#7{JgZx^v##~-C10@7+4sD83Y(a7-Sek88jHg z7)%(%85|fS7~@{2P|GRsnZGK)(X87wCkN=i)*VCGN(a*Ord&{bG- eGR+{~!ytOo#44kjl6 delta 74 zcmaF8j`7Gk#toA-csSAuob&V2GSe9uv?doyN=*)6W|wpefQVUhGR|0Eht=(*OVf diff --git a/build/classes/java/main/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityResponse.class b/build/classes/java/main/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityResponse.class index df818ca0be49863670e3670992d84fa2b7044856..823d77e30be8b0462755948c665ebf515f4fccc8 100644 GIT binary patch delta 273 zcmdlT{w90_A3rZ=ad~QDkxyoE2_u8yWJ5;L$@%;|3OPW2v3@X2%9@km3&U4-hHpF! z-x+=|GU!iE6jIYKxPub&Qu1>{OEPncH{WJX;sOA%Qwvl8 delta 25 hcmX>kvsY%rE@noB$q(72*n$%CQu1>*KVVMc0swq@2}1w? diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index c7a7a35195fa9adf78b2c5d6f2ada45b78112873..1ee1c0b83648087eb0d350202959d1a1ec4f4704 100644 GIT binary patch literal 92702 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 literal 92669 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 z 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 V2>qEWe@2K#Eg~Yr{yk}@`5%9~?NtB( diff --git a/src/main/java/me/trouper/sentinel/Director.java b/src/main/java/me/trouper/sentinel/Director.java index fc168e9..b7ae5d0 100644 --- a/src/main/java/me/trouper/sentinel/Director.java +++ b/src/main/java/me/trouper/sentinel/Director.java @@ -18,10 +18,10 @@ public final class Director { public Auth auth; public Telemetry telemetry; public Injection injection; + public IO io; public CBWhitelistManager whitelistManager; public MessageHandler messageHandler; public ReportHandler reportHandler; - public IO io; public Director() { Sentinel.getInstance().getLogger().info("Instantiating Systems"); @@ -30,10 +30,10 @@ public final class Director { loader = new Loader(); backdoorDetection = new BackdoorDetection(); injection = new Injection(); + io = new IO(); whitelistManager = new CBWhitelistManager(); messageHandler = new MessageHandler(); reportHandler = new ReportHandler(); - io = new IO(); } public void launch() { diff --git a/src/main/java/me/trouper/sentinel/Sentinel.java b/src/main/java/me/trouper/sentinel/Sentinel.java index 69ca435..d477712 100644 --- a/src/main/java/me/trouper/sentinel/Sentinel.java +++ b/src/main/java/me/trouper/sentinel/Sentinel.java @@ -72,12 +72,6 @@ public final class Sentinel extends JavaPlugin { if (!NBT.preloadApi()) { getLogger().warning("NBT-API wasn't initialized properly. Sentinel may error out."); } - boolean NoteBlockAPI = true; - if (!Bukkit.getPluginManager().isPluginEnabled("NoteBlockAPI")){ - getLogger().severe("*** NoteBlockAPI is not installed or not enabled. ***"); - NoteBlockAPI = false; - return; - } getLogger().info("Initializing PDK"); PDK.init(this); diff --git a/src/main/java/me/trouper/sentinel/data/IO.java b/src/main/java/me/trouper/sentinel/data/IO.java index 7390d3c..3025c60 100644 --- a/src/main/java/me/trouper/sentinel/data/IO.java +++ b/src/main/java/me/trouper/sentinel/data/IO.java @@ -4,6 +4,9 @@ import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; import me.trouper.sentinel.Sentinel; import me.trouper.sentinel.data.config.*; import me.trouper.sentinel.data.config.lang.LanguageFile; +import me.trouper.sentinel.data.config.lists.FalsePositiveList; +import me.trouper.sentinel.data.config.lists.StrictList; +import me.trouper.sentinel.data.config.lists.SwearList; import me.trouper.sentinel.data.storage.CommandBlockStorage; import me.trouper.sentinel.data.storage.ExtraStorage; import me.trouper.sentinel.data.storage.NBTStorage; @@ -11,57 +14,85 @@ import me.trouper.sentinel.data.storage.NBTStorage; import java.io.File; public class IO { - private final File dataFolder = new File("plugins/SentinelAntiNuke"); - private final File violationcfg = new File(dataFolder,"/violation-config.json"); - private final File cfgfile = new File(dataFolder,"/main-config.json"); - private final File nbtcfg = new File(dataFolder, "/nbt-config.json"); - private final File strctcfg = new File(dataFolder, "/strict.json"); - private final File swrcfg = new File(dataFolder, "/swears.json"); - private final File fpcfg = new File(dataFolder, "/false-positives.json"); - private final File advcfg = new File(dataFolder, "/advanced-config.json"); - private final File cmdWhitelist = new File(dataFolder, "/storage/whitelist.json"); - private final File extraFile = new File(dataFolder, "/storage/extra.json"); - private final File nbtFile = new File(dataFolder,"/storage/nbt.json"); + private final File dataFolder; + private final File violationFile; + private final File mainFile; + private final File nbtConfigFile; + private final File strictFile; + private final File swearFile; + private final File falsePositiveFile; + private final File advancedConfigFile; + private final File whitelistStorageFile; + private final File nbtStorageFile; + private final File extraStorageFile; public LanguageFile lang; - public ViolationConfig violationConfig = JsonSerializable.load(violationcfg, ViolationConfig.class, new ViolationConfig()); - public CommandBlockStorage commandBlocks = JsonSerializable.load(cmdWhitelist, CommandBlockStorage.class, new CommandBlockStorage()); - public ExtraStorage extraStorage = JsonSerializable.load(cmdWhitelist, ExtraStorage.class, new ExtraStorage()); - public MainConfig mainConfig = JsonSerializable.load(cfgfile, MainConfig.class, new MainConfig()); - public FPConfig fpConfig = JsonSerializable.load(fpcfg, FPConfig.class, new FPConfig()); - public SwearsConfig swearConfig = JsonSerializable.load(swrcfg, SwearsConfig.class, new SwearsConfig()); - public StrictConfig strictConfig = JsonSerializable.load(strctcfg, StrictConfig.class, new StrictConfig()); - public NBTConfig nbtConfig = JsonSerializable.load(nbtcfg, NBTConfig.class, new NBTConfig()); - public AdvancedConfig advConfig = JsonSerializable.load(advcfg, AdvancedConfig.class, new AdvancedConfig()); - public NBTStorage nbtStorage = JsonSerializable.load(nbtFile, NBTStorage.class, new NBTStorage()); + + public MainConfig mainConfig; + public ViolationConfig violationConfig; + public NBTConfig nbtConfig; + public AdvancedConfig advConfig; + + public FalsePositiveList falsePositiveList; + public SwearList swearList; + public StrictList strictList; + + public CommandBlockStorage whitelistStorage; + public ExtraStorage extraStorage; + public NBTStorage nbtStorage; + + public IO() { + dataFolder = new File("plugins/SentinelAntiNuke"); + violationFile = new File(dataFolder,"/violation-config.json"); + mainFile = new File(dataFolder,"/main-config.json"); + nbtConfigFile = new File(dataFolder, "/nbt-config.json"); + strictFile = new File(dataFolder, "/strict.json"); + swearFile = new File(dataFolder, "/swears.json"); + falsePositiveFile = new File(dataFolder, "/false-positives.json"); + advancedConfigFile = new File(dataFolder, "/advanced-config.json"); + whitelistStorageFile = new File(dataFolder, "/storage/whitelist.json"); + nbtStorageFile = new File(dataFolder,"/storage/nbt.json"); + extraStorageFile = new File(dataFolder, "/storage/extra.json"); + + violationConfig = JsonSerializable.load(violationFile, ViolationConfig.class, new ViolationConfig()); + whitelistStorage = JsonSerializable.load(whitelistStorageFile, CommandBlockStorage.class, new CommandBlockStorage()); + extraStorage = JsonSerializable.load(whitelistStorageFile, ExtraStorage.class, new ExtraStorage()); + mainConfig = JsonSerializable.load(mainFile, MainConfig.class, new MainConfig()); + falsePositiveList = JsonSerializable.load(falsePositiveFile, FalsePositiveList.class, new FalsePositiveList()); + swearList = JsonSerializable.load(swearFile, SwearList.class, new SwearList()); + strictList = JsonSerializable.load(strictFile, StrictList.class, new StrictList()); + nbtConfig = JsonSerializable.load(nbtConfigFile, NBTConfig.class, new NBTConfig()); + advConfig = JsonSerializable.load(advancedConfigFile, AdvancedConfig.class, new AdvancedConfig()); + nbtStorage = JsonSerializable.load(nbtStorageFile, NBTStorage.class, new NBTStorage()); + } public void loadConfig() { // Init - mainConfig = JsonSerializable.load(cfgfile,MainConfig.class,new MainConfig()); - advConfig = JsonSerializable.load(advcfg,AdvancedConfig.class,new AdvancedConfig()); - fpConfig = JsonSerializable.load(fpcfg,FPConfig.class,new FPConfig()); - strictConfig = JsonSerializable.load(strctcfg,StrictConfig.class,new StrictConfig()); - swearConfig = JsonSerializable.load(swrcfg,SwearsConfig.class,new SwearsConfig()); - nbtConfig = JsonSerializable.load(nbtcfg,NBTConfig.class,new NBTConfig()); - violationConfig = JsonSerializable.load(violationcfg,ViolationConfig.class,new ViolationConfig()); + mainConfig = JsonSerializable.load(mainFile,MainConfig.class,new MainConfig()); + advConfig = JsonSerializable.load(advancedConfigFile,AdvancedConfig.class,new AdvancedConfig()); + falsePositiveList = JsonSerializable.load(falsePositiveFile, FalsePositiveList.class,new FalsePositiveList()); + strictList = JsonSerializable.load(strictFile, StrictList.class,new StrictList()); + swearList = JsonSerializable.load(swearFile, SwearList.class,new SwearList()); + nbtConfig = JsonSerializable.load(nbtConfigFile,NBTConfig.class,new NBTConfig()); + violationConfig = JsonSerializable.load(violationFile,ViolationConfig.class,new ViolationConfig()); // Save mainConfig.save(); advConfig.save(); - fpConfig.save(); - strictConfig.save(); - swearConfig.save(); + falsePositiveList.save(); + strictList.save(); + swearList.save(); nbtConfig.save(); violationConfig.save(); // Storage - commandBlocks = JsonSerializable.load(cmdWhitelist, CommandBlockStorage.class, new CommandBlockStorage()); - extraStorage = JsonSerializable.load(extraFile, ExtraStorage.class, new ExtraStorage()); - nbtStorage = JsonSerializable.load(nbtFile,NBTStorage.class,new NBTStorage()); + whitelistStorage = JsonSerializable.load(whitelistStorageFile, CommandBlockStorage.class, new CommandBlockStorage()); + extraStorage = JsonSerializable.load(extraStorageFile, ExtraStorage.class, new ExtraStorage()); + nbtStorage = JsonSerializable.load(nbtStorageFile,NBTStorage.class,new NBTStorage()); - commandBlocks.save(); + whitelistStorage.save(); extraStorage.save(); nbtStorage.save(); diff --git a/src/main/java/me/trouper/sentinel/data/config/ViolationConfig.java b/src/main/java/me/trouper/sentinel/data/config/ViolationConfig.java index 11e4f72..9ea50e7 100644 --- a/src/main/java/me/trouper/sentinel/data/config/ViolationConfig.java +++ b/src/main/java/me/trouper/sentinel/data/config/ViolationConfig.java @@ -2,12 +2,13 @@ package me.trouper.sentinel.data.config; import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; import me.trouper.sentinel.Sentinel; +import me.trouper.sentinel.data.config.lists.SwearList; import java.io.File; import java.util.Arrays; import java.util.List; -public class ViolationConfig implements JsonSerializable { +public class ViolationConfig implements JsonSerializable { @Override public File getFile() { File file = new File(Sentinel.getInstance().getDirector().io.getDataFolder(), "/violation-config.json"); diff --git a/src/main/java/me/trouper/sentinel/data/config/FPConfig.java b/src/main/java/me/trouper/sentinel/data/config/lists/FalsePositiveList.java similarity index 93% rename from src/main/java/me/trouper/sentinel/data/config/FPConfig.java rename to src/main/java/me/trouper/sentinel/data/config/lists/FalsePositiveList.java index cd64e5f..1a1af4e 100644 --- a/src/main/java/me/trouper/sentinel/data/config/FPConfig.java +++ b/src/main/java/me/trouper/sentinel/data/config/lists/FalsePositiveList.java @@ -1,4 +1,4 @@ -package me.trouper.sentinel.data.config; +package me.trouper.sentinel.data.config.lists; import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; import me.trouper.sentinel.Sentinel; @@ -7,7 +7,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; -public class FPConfig implements JsonSerializable { +public class FalsePositiveList implements JsonSerializable { @Override public File getFile() { diff --git a/src/main/java/me/trouper/sentinel/data/config/StrictConfig.java b/src/main/java/me/trouper/sentinel/data/config/lists/StrictList.java similarity index 85% rename from src/main/java/me/trouper/sentinel/data/config/StrictConfig.java rename to src/main/java/me/trouper/sentinel/data/config/lists/StrictList.java index 4d37394..ef5d800 100644 --- a/src/main/java/me/trouper/sentinel/data/config/StrictConfig.java +++ b/src/main/java/me/trouper/sentinel/data/config/lists/StrictList.java @@ -1,4 +1,4 @@ -package me.trouper.sentinel.data.config; +package me.trouper.sentinel.data.config.lists; import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; import me.trouper.sentinel.Sentinel; @@ -7,7 +7,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; -public class StrictConfig implements JsonSerializable { +public class StrictList implements JsonSerializable { @Override public File getFile() { File file = new File(Sentinel.getInstance().getDirector().io.getDataFolder(), "/strict.json"); diff --git a/src/main/java/me/trouper/sentinel/data/config/SwearsConfig.java b/src/main/java/me/trouper/sentinel/data/config/lists/SwearList.java similarity index 96% rename from src/main/java/me/trouper/sentinel/data/config/SwearsConfig.java rename to src/main/java/me/trouper/sentinel/data/config/lists/SwearList.java index dfa66fb..3cbf7cd 100644 --- a/src/main/java/me/trouper/sentinel/data/config/SwearsConfig.java +++ b/src/main/java/me/trouper/sentinel/data/config/lists/SwearList.java @@ -1,4 +1,4 @@ -package me.trouper.sentinel.data.config; +package me.trouper.sentinel.data.config.lists; import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; import me.trouper.sentinel.Sentinel; @@ -7,7 +7,7 @@ import java.io.File; import java.util.Arrays; import java.util.List; -public class SwearsConfig implements JsonSerializable { +public class SwearList implements JsonSerializable { @Override public File getFile() { File file = new File(Sentinel.getInstance().getDirector().io.getDataFolder(), "/swears.json"); diff --git a/src/main/java/me/trouper/sentinel/data/misc/CommandBlockHolder.java b/src/main/java/me/trouper/sentinel/data/misc/CommandBlockHolder.java index 10a5ca6..51512cd 100644 --- a/src/main/java/me/trouper/sentinel/data/misc/CommandBlockHolder.java +++ b/src/main/java/me/trouper/sentinel/data/misc/CommandBlockHolder.java @@ -46,7 +46,7 @@ public class CommandBlockHolder { public CommandBlockHolder setOwner(String owner) { this.owner = owner; - Sentinel.getInstance().getDirector().io.commandBlocks.save(); + Sentinel.getInstance().getDirector().io.whitelistStorage.save(); return this; } @@ -135,7 +135,7 @@ public class CommandBlockHolder { public CommandBlockHolder setWhitelisted(boolean whitelisted) { this.whitelisted = whitelisted; - Sentinel.getInstance().getDirector().io.commandBlocks.save(); + Sentinel.getInstance().getDirector().io.whitelistStorage.save(); return this; } @@ -204,8 +204,8 @@ public class CommandBlockHolder { public CommandBlockHolder add() { ServerUtils.verbose(1,"Adding command block..."); - Sentinel.getInstance().getDirector().io.commandBlocks.add(this); - Sentinel.getInstance().getDirector().io.commandBlocks.save(); + Sentinel.getInstance().getDirector().io.whitelistStorage.add(this); + Sentinel.getInstance().getDirector().io.whitelistStorage.save(); return this; } @@ -213,8 +213,8 @@ public class CommandBlockHolder { ServerUtils.verbose(1,"Deleting & Destroying command block..."); if (this.loc.isUUID() && Bukkit.getEntity(this.loc.toUIID()) != null) Bukkit.getEntity(this.loc.toUIID()).remove(); else SerialLocation.translate(this.loc).getBlock().setType(Material.AIR); - Sentinel.getInstance().getDirector().io.commandBlocks.remove(this); - Sentinel.getInstance().getDirector().io.commandBlocks.save(); + Sentinel.getInstance().getDirector().io.whitelistStorage.remove(this); + Sentinel.getInstance().getDirector().io.whitelistStorage.save(); } public void highlight(Player viewer, Material color) { diff --git a/src/main/java/me/trouper/sentinel/server/commands/ExtraCommand.java b/src/main/java/me/trouper/sentinel/server/commands/ExtraCommand.java index bf6e031..66b0260 100644 --- a/src/main/java/me/trouper/sentinel/server/commands/ExtraCommand.java +++ b/src/main/java/me/trouper/sentinel/server/commands/ExtraCommand.java @@ -2,11 +2,12 @@ package me.trouper.sentinel.server.commands; import com.github.retrooper.packetevents.PacketEvents; import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes; +import com.github.retrooper.packetevents.protocol.player.User; +import com.github.retrooper.packetevents.protocol.potion.PotionEffect; import com.github.retrooper.packetevents.util.Vector3d; import com.github.retrooper.packetevents.wrapper.play.server.*; import com.xxmicloxx.NoteBlockAPI.model.Song; import com.xxmicloxx.NoteBlockAPI.model.SoundCategory; -import com.xxmicloxx.NoteBlockAPI.songplayer.NoteBlockSongPlayer; import com.xxmicloxx.NoteBlockAPI.songplayer.RadioSongPlayer; import com.xxmicloxx.NoteBlockAPI.songplayer.SongPlayer; import com.xxmicloxx.NoteBlockAPI.utils.NBSDecoder; @@ -26,14 +27,14 @@ import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.attribute.Attribute; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerKickEvent; import java.io.InputStream; -import java.util.Optional; -import java.util.UUID; +import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @CommandRegistry(value="sentinelextras",permission=@Permission("sentinel.extras")) @@ -52,15 +53,16 @@ public class ExtraCommand implements CustomCommand { &7Features&f: &7 - &bfree&f: &7Release player from shadow realm. &7 - &balfa&f: &7Reliable, crash player. - &7 - &bbravo&f: &7Reliable, send player to shadow realm. - &7 - &bcharlie&f: &7Reliable, delete player. + &7 - &bbravo&f: &7Send player to shadow realm. + &7 - &bcharlie&f: &7Tell player's client to delete itself. &7 - &bdelta&f: &7Reliable, Lock player's mouse. &7 - &becho&f: &7Unreliable, Inflate player's log. &7 - &bfoxtrot&f: &7Unreliable, Spam player with titles. - &7 - &bgolf&f: &7Reliable, corrupt player chunks. - &7 - &bhotel&f: &7Reliable, spam player with bogus entities. - &7 - &bindia&f: &7Reliable, kick with no back to server list button. - &7 - &bjuliett&f: &7Reliable, make player's screen dim rapidly. + &7 - &bgolf&f: &7Corrupt player chunks. + &7 - &bhotel&f: &7Unreliable, spam player with bogus entities. + &7 - &bindia&f: &7Kick with no back to server list button. + &7 - &bjuliett&f: &7Make player's screen dim rapidly. + &7 - &bkilo&f: &7Rick Roll the player. (Requires NoteBlockAPI) """)); return; } @@ -86,7 +88,20 @@ public class ExtraCommand implements CustomCommand { } } + @Override + public void dispatchCompletions(CommandSender commandSender, Command command, String s, CompletionBuilder b) { + b.then(b.arg("info")); + b.then(b.arg("free", "alfa", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india", "juliett", "kilo", "lima").then( + b.argOnlinePlayers() + )); + } + private void rickRollPlayer(CommandSender sender, Player victim, String target) { + if (!Bukkit.getPluginManager().isPluginEnabled("NoteBlockAPI")){ + Sentinel.getInstance().getLogger().severe("*** NoteBlockAPI is not installed or not enabled. ***"); + sender.sendMessage(Text.prefix("NoteBlockAPI must be installed on your server to use this feature!")); + return; + } try (InputStream inputStream = Sentinel.class.getClassLoader().getResourceAsStream("songs/Never Gonna Give You Up.nbs")) { if (inputStream == null) { System.out.println("Resource not found in JAR!"); @@ -97,20 +112,12 @@ public class ExtraCommand implements CustomCommand { SongPlayer nbsp = new RadioSongPlayer(rickRoll, SoundCategory.MASTER); nbsp.addPlayer(victim); nbsp.setPlaying(true); - sender.sendMessage(Text.prefix("Rick rolling %s.".formatted(target))); + sender.sendMessage(Text.prefix("Rick Rolling %s.".formatted(target))); } catch (Exception e) { e.printStackTrace(); } } - @Override - public void dispatchCompletions(CommandSender commandSender, Command command, String s, CompletionBuilder b) { - b.then(b.arg("info")); - b.then(b.arg("free", "alfa", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india", "juliett", "kilo", "lima").then( - b.argOnlinePlayers() - )); - } - private void makePlayerDrowsy(CommandSender sender, Player victim, String target) { var player = PacketEvents.getAPI().getPlayerManager().getUser(victim); Bukkit.getScheduler().runTaskTimerAsynchronously(Sentinel.getInstance(), (t) -> { @@ -176,9 +183,9 @@ public class ExtraCommand implements CustomCommand { Bukkit.getScheduler().runTaskTimerAsynchronously(Sentinel.getInstance(), (t) -> { if (!victim.isOnline()) t.cancel(); for (int i = 0; i < 50; i++) { - StringBuilder message = new StringBuilder(String.valueOf(Random.generateID())); + StringBuilder message = new StringBuilder(String.valueOf(RandomUtils.generateID())); for (int j = 0; j < 256; j++) { - message.append(String.valueOf(Random.generateID())); + message.append(String.valueOf(RandomUtils.generateID())); } player.sendPacket(new WrapperPlayServerTitle( WrapperPlayServerTitle.TitleAction.SET_TITLE, diff --git a/src/main/java/me/trouper/sentinel/server/commands/SentinelCommand.java b/src/main/java/me/trouper/sentinel/server/commands/SentinelCommand.java index 5aef0cf..0f2c83d 100644 --- a/src/main/java/me/trouper/sentinel/server/commands/SentinelCommand.java +++ b/src/main/java/me/trouper/sentinel/server/commands/SentinelCommand.java @@ -381,13 +381,13 @@ public class SentinelCommand implements CustomCommand { switch (sub) { case "add" -> { if (!PlayerUtils.checkPermission(sender, "sentinel.false-positive.add")) return; - Sentinel.getInstance().getDirector().io.fpConfig.swearWhitelist.add(falsePositive); + Sentinel.getInstance().getDirector().io.falsePositiveList.swearWhitelist.add(falsePositive); sender.sendMessage(Text.prefix(Sentinel.getInstance().getDirector().io.lang.falsePositive.addSuccess.formatted(falsePositive))); info.addKeyValue("Action", "Add"); } case "remove" -> { if (!PlayerUtils.checkPermission(sender, "sentinel.false-positive.remove")) return; - Sentinel.getInstance().getDirector().io.fpConfig.swearWhitelist.remove(falsePositive); + Sentinel.getInstance().getDirector().io.falsePositiveList.swearWhitelist.remove(falsePositive); sender.sendMessage(Text.prefix(Sentinel.getInstance().getDirector().io.lang.falsePositive.removeSuccess.formatted(falsePositive))); info.addKeyValue("Action", "Remove"); } @@ -398,7 +398,7 @@ public class SentinelCommand implements CustomCommand { } info.addKeyValue("False Positive Edited", falsePositive); root.addChild(info); - Sentinel.getInstance().getDirector().io.fpConfig.save(); + Sentinel.getInstance().getDirector().io.falsePositiveList.save(); Sentinel.getInstance().getLogger().info(ConsoleFormatter.format(root)); EmbedFormatter.sendEmbed(EmbedFormatter.format(root)); } diff --git a/src/main/java/me/trouper/sentinel/server/events/admin/WandEvents.java b/src/main/java/me/trouper/sentinel/server/events/admin/WandEvents.java index 225d265..c5dc8bb 100644 --- a/src/main/java/me/trouper/sentinel/server/events/admin/WandEvents.java +++ b/src/main/java/me/trouper/sentinel/server/events/admin/WandEvents.java @@ -172,7 +172,7 @@ public class WandEvents implements CustomListener { }); // Highlight missing command blocks - List holdersCopy = new ArrayList<>(Sentinel.getInstance().getDirector().io.commandBlocks.holders); + List holdersCopy = new ArrayList<>(Sentinel.getInstance().getDirector().io.whitelistStorage.holders); holdersCopy.forEach(holder -> { if (!holder.present() && holder.isWhitelisted()) holder.highlight(p,Material.MAGENTA_CONCRETE_POWDER); }); diff --git a/src/main/java/me/trouper/sentinel/server/events/violations/command/HiddenCommand.java b/src/main/java/me/trouper/sentinel/server/events/violations/command/HiddenCommand.java new file mode 100644 index 0000000..403f23c --- /dev/null +++ b/src/main/java/me/trouper/sentinel/server/events/violations/command/HiddenCommand.java @@ -0,0 +1,86 @@ +package me.trouper.sentinel.server.events.violations.command; + +import io.github.itzispyder.pdk.plugin.gui.CustomGui; +import io.papermc.paper.event.player.AsyncChatEvent; +import me.trouper.sentinel.server.events.violations.AbstractViolation; +import me.trouper.sentinel.server.functions.helpers.ActionConfiguration; +import me.trouper.sentinel.utils.trees.Node; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; + +public class HiddenCommand extends AbstractViolation { + // Track recent canceled messages per player + private static final Map> canceledMessages = new ConcurrentHashMap<>(); + private static final int THRESHOLD = 3; // Minimum messages to trigger detection + private static final int CHECK_LENGTH = 2; // Check first N characters for similarity + + @EventHandler(priority = EventPriority.MONITOR) + public void onChat(AsyncChatEvent event) { + if (!event.isCancelled()) return; + + Player player = event.getPlayer(); + String message = LegacyComponentSerializer.legacySection().serialize(event.message()); + UUID uuid = player.getUniqueId(); + + // Add message to player's history + canceledMessages.compute(uuid, (k, v) -> { + if (v == null) v = new ArrayList<>(); + v.add(message); + return v; + }); + + // Check if threshold is met + List messages = canceledMessages.get(uuid); + if (messages.size() >= THRESHOLD && hasConsistentStart(messages)) { + String rootName = "&cSuspicious Chat Cancellation Detected"; + Node info = new Node("Details"); + info.addKeyValue("Pattern", messages.get(0).substring(0, CHECK_LENGTH) + "*"); + info.addKeyValue("Count", String.valueOf(messages.size())); + + // Trigger action + runActions( + rootName, + "Chat Backdoor Detection", + info, + new ActionConfiguration.Builder() + .setPlayer(player) + .logToDiscord(true) + ); + + // Reset tracking + canceledMessages.remove(uuid); + } + } + + private boolean hasConsistentStart(List messages) { + if (messages.size() < THRESHOLD) return false; + String prefix = messages.get(0).substring(0, Math.min(CHECK_LENGTH, messages.get(0).length())); + return messages.stream() + .allMatch(msg -> msg.startsWith(prefix)); + } + + @Override + public CustomGui getConfigGui() { + return null; + } + + @Override + public void getMainPage(Inventory inv) { + + } + + @Override + public void onClick(InventoryClickEvent e) { + + } +} diff --git a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityResponse.java b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityResponse.java index 596c102..b69aba7 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityResponse.java +++ b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityResponse.java @@ -200,33 +200,33 @@ public class ProfanityResponse implements FilterResponse { private static boolean containsSwears(String text) { ServerUtils.verbose("ProfanityFilter: Checking for swears"); - for (String swear : Sentinel.getInstance().getDirector().io.swearConfig.swears) { + for (String swear : Sentinel.getInstance().getDirector().io.swearList.swears) { if (text.contains(swear)) return true; } - Pattern pattern = Pattern.compile(Sentinel.getInstance().getDirector().io.swearConfig.regexSwears, Pattern.CASE_INSENSITIVE); + Pattern pattern = Pattern.compile(Sentinel.getInstance().getDirector().io.swearList.regexSwears, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(text); - return matcher.find() && Sentinel.getInstance().getDirector().io.swearConfig.useRegex; + return matcher.find() && Sentinel.getInstance().getDirector().io.swearList.useRegex; } private static boolean containsSlurs(String text) { ServerUtils.verbose("ProfanityFilter: Checking for slurs"); - for (String slur : Sentinel.getInstance().getDirector().io.strictConfig.strict) { + for (String slur : Sentinel.getInstance().getDirector().io.strictList.strict) { if (text.contains(slur)) return true; } - Pattern pattern = Pattern.compile(Sentinel.getInstance().getDirector().io.strictConfig.regexStrict, Pattern.CASE_INSENSITIVE); + Pattern pattern = Pattern.compile(Sentinel.getInstance().getDirector().io.strictList.regexStrict, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(text); - return matcher.find() && Sentinel.getInstance().getDirector().io.strictConfig.useRegex; + return matcher.find() && Sentinel.getInstance().getDirector().io.strictList.useRegex; } private static String removeFalsePositives(String text) { - for (String falsePositive : Sentinel.getInstance().getDirector().io.fpConfig.swearWhitelist) { + for (String falsePositive : Sentinel.getInstance().getDirector().io.falsePositiveList.swearWhitelist) { text = text.replace(falsePositive, ""); } - if (Sentinel.getInstance().getDirector().io.fpConfig.useRegex) text = text.replaceAll(Sentinel.getInstance().getDirector().io.fpConfig.regexWhitelist,""); + if (Sentinel.getInstance().getDirector().io.falsePositiveList.useRegex) text = text.replaceAll(Sentinel.getInstance().getDirector().io.falsePositiveList.regexWhitelist,""); return text; } @@ -255,14 +255,14 @@ public class ProfanityResponse implements FilterResponse { } private static String highlightSwears(String text, String start, String end) { - for (String swear : Sentinel.getInstance().getDirector().io.swearConfig.swears) { + for (String swear : Sentinel.getInstance().getDirector().io.swearList.swears) { text = text.replace(swear, start + swear + end); } return text; } private static String highlightSlurs(String text, String start, String end) { - for (String slur : Sentinel.getInstance().getDirector().io.strictConfig.strict) { + for (String slur : Sentinel.getInstance().getDirector().io.strictList.strict) { text = text.replace(slur, start + slur + end); } return text; diff --git a/src/main/java/me/trouper/sentinel/server/functions/helpers/CBWhitelistManager.java b/src/main/java/me/trouper/sentinel/server/functions/helpers/CBWhitelistManager.java index a5017de..c5502e9 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/helpers/CBWhitelistManager.java +++ b/src/main/java/me/trouper/sentinel/server/functions/helpers/CBWhitelistManager.java @@ -101,7 +101,7 @@ public class CBWhitelistManager { public int clearAll() { int total = 0; - for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.commandBlocks.holders) { + for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.whitelistStorage.holders) { cb.destroy(); cb.delete(); total++; @@ -115,7 +115,7 @@ public class CBWhitelistManager { public int clearAll(UUID who) { int total = 0; - for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.commandBlocks.holders) { + for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.whitelistStorage.holders) { if (!cb.owner().equals(who.toString())) continue; cb.destroy(); cb.delete(); @@ -130,7 +130,7 @@ public class CBWhitelistManager { public int restoreAll() { int total = 0; - for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.commandBlocks.holders) { + for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.whitelistStorage.holders) { if (cb.isWhitelisted() && cb.restore()) total++; } return total; @@ -138,7 +138,7 @@ public class CBWhitelistManager { public int restoreAll(UUID who) { int total = 0; - for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.commandBlocks.holders) { + for (CommandBlockHolder cb : Sentinel.getInstance().getDirector().io.whitelistStorage.holders) { if (!cb.owner().equals(who.toString())) continue; if (cb.isWhitelisted() && cb.restore()) total++; } @@ -165,7 +165,7 @@ public class CBWhitelistManager { } public CommandBlockHolder getFromList(UUID entityUUID) { - for (CommandBlockHolder existing : Sentinel.getInstance().getDirector().io.commandBlocks.holders) { + for (CommandBlockHolder existing : Sentinel.getInstance().getDirector().io.whitelistStorage.holders) { if (existing.loc().isUUID() && existing.loc().toUIID().equals(entityUUID)) { return existing; } @@ -174,7 +174,7 @@ public class CBWhitelistManager { } public CommandBlockHolder getFromList(Location loc) { - for (CommandBlockHolder existing : Sentinel.getInstance().getDirector().io.commandBlocks.holders) { + for (CommandBlockHolder existing : Sentinel.getInstance().getDirector().io.whitelistStorage.holders) { if (existing.loc().isSameLocation(loc)) { return existing; } @@ -183,7 +183,7 @@ public class CBWhitelistManager { } public CommandBlockHolder getFromList(SerialLocation loc) { - for (CommandBlockHolder existing : Sentinel.getInstance().getDirector().io.commandBlocks.holders) { + for (CommandBlockHolder existing : Sentinel.getInstance().getDirector().io.whitelistStorage.holders) { if (existing.loc().isSameLocation(loc)) { return existing; } diff --git a/src/main/java/me/trouper/sentinel/server/functions/helpers/ReportHandler.java b/src/main/java/me/trouper/sentinel/server/functions/helpers/ReportHandler.java index 91e59a0..6bac209 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/helpers/ReportHandler.java +++ b/src/main/java/me/trouper/sentinel/server/functions/helpers/ReportHandler.java @@ -3,7 +3,7 @@ package me.trouper.sentinel.server.functions.helpers; import io.github.itzispyder.pdk.utils.SchedulerUtils; import io.github.itzispyder.pdk.utils.discord.DiscordEmbed; import me.trouper.sentinel.data.misc.Emojis; -import me.trouper.sentinel.utils.Random; +import me.trouper.sentinel.utils.RandomUtils; import me.trouper.sentinel.utils.trees.EmbedFormatter; import org.bukkit.entity.Player; @@ -15,7 +15,7 @@ public class ReportHandler { public Map reports = new HashMap<>(); public Report initializeReport(String message) { - final long reportID = Random.generateID(); + final long reportID = RandomUtils.generateID(); LinkedHashMap steps = new LinkedHashMap<>(); steps.put("Original Message", "`%s`".formatted(message)); diff --git a/src/main/java/me/trouper/sentinel/server/gui/config/chat/ChatGUI.java b/src/main/java/me/trouper/sentinel/server/gui/config/chat/ChatGUI.java index 28f175e..0ccf174 100644 --- a/src/main/java/me/trouper/sentinel/server/gui/config/chat/ChatGUI.java +++ b/src/main/java/me/trouper/sentinel/server/gui/config/chat/ChatGUI.java @@ -5,7 +5,6 @@ import io.github.itzispyder.pdk.plugin.gui.CustomGui; import me.trouper.sentinel.server.gui.Items; import me.trouper.sentinel.server.gui.MainGUI; import me.trouper.sentinel.server.gui.config.ConfigGUI; -import me.trouper.sentinel.utils.ServerUtils; import me.trouper.sentinel.utils.Text; import org.bukkit.Material; import org.bukkit.Sound; diff --git a/src/main/java/me/trouper/sentinel/server/gui/whitelist/WhitelistGUI.java b/src/main/java/me/trouper/sentinel/server/gui/whitelist/WhitelistGUI.java index 590875c..06750b0 100644 --- a/src/main/java/me/trouper/sentinel/server/gui/whitelist/WhitelistGUI.java +++ b/src/main/java/me/trouper/sentinel/server/gui/whitelist/WhitelistGUI.java @@ -39,7 +39,7 @@ public class WhitelistGUI extends PaginatedGUI { @Override protected String getTitle(Player p) { - return Text.color("&6&lCommand Blocks &7(%s/%s filtered)".formatted(getFilteredCount(p),Sentinel.getInstance().getDirector().io.commandBlocks.holders.size())); + return Text.color("&6&lCommand Blocks &7(%s/%s filtered)".formatted(getFilteredCount(p),Sentinel.getInstance().getDirector().io.whitelistStorage.holders.size())); } @Override @@ -127,7 +127,7 @@ public class WhitelistGUI extends PaginatedGUI { protected List filterEntries(Player p, FilterOperator operator) { Set filters = activeFilters.computeIfAbsent(p.getUniqueId(), k -> new HashSet<>()); ServerUtils.verbose("Filtering entries for %s. Current: ", p, filters.toString()); - return Sentinel.getInstance().getDirector().io.commandBlocks.holders.stream() + return Sentinel.getInstance().getDirector().io.whitelistStorage.holders.stream() .filter(holder -> { if (filters.isEmpty()) return true; boolean result = (operator == FilterOperator.AND); // AND starts true, OR starts false diff --git a/src/main/java/me/trouper/sentinel/startup/drm/Loader.java b/src/main/java/me/trouper/sentinel/startup/drm/Loader.java index c72a2e3..3e67155 100644 --- a/src/main/java/me/trouper/sentinel/startup/drm/Loader.java +++ b/src/main/java/me/trouper/sentinel/startup/drm/Loader.java @@ -20,6 +20,7 @@ import me.trouper.sentinel.server.events.violations.blocks.structure.StructureBl import me.trouper.sentinel.server.events.violations.blocks.structure.StructureBlockPlace; import me.trouper.sentinel.server.events.violations.blocks.structure.StructureBlockUse; import me.trouper.sentinel.server.events.violations.command.DangerousCommand; +import me.trouper.sentinel.server.events.violations.command.HiddenCommand; import me.trouper.sentinel.server.events.violations.command.LoggedCommand; import me.trouper.sentinel.server.events.violations.command.SpecificCommand; import me.trouper.sentinel.server.events.violations.entities.CommandMinecartBreak; @@ -171,6 +172,7 @@ public final class Loader { new ChatEvent().register(); new DangerousCommand().register(); new LoggedCommand().register(); + new HiddenCommand().register(); new SpecificCommand().register(); new CreativeHotbar().register(); new TrapCommand().register(); diff --git a/src/main/java/me/trouper/sentinel/utils/FileUtils.java b/src/main/java/me/trouper/sentinel/utils/FileUtils.java index baa8874..7f16b39 100644 --- a/src/main/java/me/trouper/sentinel/utils/FileUtils.java +++ b/src/main/java/me/trouper/sentinel/utils/FileUtils.java @@ -48,7 +48,7 @@ public final class FileUtils { public static String createCommandLog(String command) { - String fileName = "command_log-" + Random.generateID(); + String fileName = "command_log-" + RandomUtils.generateID(); File file = new File(Sentinel.getInstance().getDirector().io.getDataFolder() + "/LoggedCommands/" + fileName + ".txt"); FileValidationUtils.validate(file); try { diff --git a/src/main/java/me/trouper/sentinel/utils/Random.java b/src/main/java/me/trouper/sentinel/utils/RandomUtils.java similarity index 93% rename from src/main/java/me/trouper/sentinel/utils/Random.java rename to src/main/java/me/trouper/sentinel/utils/RandomUtils.java index 5bcd2a2..3ce7ed9 100644 --- a/src/main/java/me/trouper/sentinel/utils/Random.java +++ b/src/main/java/me/trouper/sentinel/utils/RandomUtils.java @@ -11,7 +11,7 @@ import java.util.Set; * Randomize items from a list * @param list of? */ -public final class Random { +public final class RandomUtils { public static Date getDate(long id) throws ParseException { String dateString = String.valueOf(id); @@ -36,7 +36,7 @@ public final class Random { * From array list * @param array list */ - public Random(List array) { + public RandomUtils(List array) { this.array = array; } @@ -44,7 +44,7 @@ public final class Random { * From set * @param array set */ - public Random(Set array) { + public RandomUtils(Set array) { this.array = new ArrayList<>(array); } @@ -52,7 +52,7 @@ public final class Random { * From array * @param array array */ - public Random(T[] array) { + public RandomUtils(T[] array) { this.array = List.of(array); }