From a9b434a210cf2f25a59d72a7140ffe6b8127aaa1 Mon Sep 17 00:00:00 2001 From: trouper Date: Mon, 17 Feb 2025 17:33:41 -0600 Subject: [PATCH] More of the plugin's language can be edited now --- .gradle/8.5/checksums/checksums.lock | Bin 17 -> 17 bytes .../8.5/executionHistory/executionHistory.bin | Bin 792428 -> 792428 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.5/fileHashes/fileHashes.bin | Bin 159133 -> 159333 bytes .gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 90444 -> 103705 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/file-system.probe | Bin 8 -> 8 bytes .../lang/LanguageFile$AutomatedActions.class | Bin 866 -> 851 bytes .../config/lang/LanguageFile$Cooldown.class | Bin 724 -> 724 bytes .../lang/LanguageFile$Permissions.class | Bin 1259 -> 1347 bytes .../lang/LanguageFile$PlayerInteraction.class | Bin 1163 -> 1163 bytes .../config/lang/LanguageFile$Reports.class | Bin 939 -> 939 bytes .../config/lang/LanguageFile$SocialSpy.class | Bin 1042 -> 1042 bytes ...nguageFile$Violations$Chat$Profanity.class | Bin 2071 -> 2071 bytes .../LanguageFile$Violations$Chat$Spam.class | Bin 1979 -> 1979 bytes .../lang/LanguageFile$Violations$Chat.class | Bin 1702 -> 1702 bytes ...uageFile$Violations$CommandBlockEdit.class | Bin 1276 -> 1276 bytes ...eFile$Violations$CommandBlockExecute.class | Bin 1558 -> 1558 bytes ...Violations$CommandBlockMinecartPlace.class | Bin 1501 -> 1501 bytes ...e$Violations$CommandBlockMinecartUse.class | Bin 1484 -> 1484 bytes ...ageFile$Violations$CommandBlockPlace.class | Bin 1624 -> 1624 bytes ...guageFile$Violations$CommandBlockUse.class | Bin 1591 -> 1591 bytes ...nguageFile$Violations$CommandExecute.class | Bin 1650 -> 1650 bytes ...nguageFile$Violations$CreativeHotbar.class | Bin 1391 -> 1391 bytes ...ageFile$Violations$ViolationMessages.class | Bin 1153 -> 1153 bytes .../config/lang/LanguageFile$Violations.class | Bin 3224 -> 3224 bytes .../data/config/lang/LanguageFile.class | Bin 4794 -> 5584 bytes .../server/commands/CallbackCommand.class | Bin 4326 -> 4505 bytes .../server/commands/MessageCommand.class | Bin 4773 -> 4604 bytes .../server/commands/ReplyCommand.class | Bin 4163 -> 4032 bytes .../server/commands/SentinelCommand.class | Bin 14871 -> 16187 bytes .../server/commands/SocialSpyCommand.class | Bin 2886 -> 0 bytes .../sentinel/server/events/ChatEvent.class | Bin 7278 -> 7553 bytes .../sentinel/server/functions/Message.class | Bin 4647 -> 4715 bytes .../profanity/ProfanityAction.class | Bin 9560 -> 9661 bytes .../chatfilter/spam/SpamAction.class | Bin 9205 -> 9301 bytes .../me/trouper/sentinel/startup/Load.class | Bin 7677 -> 8721 bytes .../trouper/sentinel/utils/PlayerUtils.class | Bin 1166 -> 2385 bytes build/resources/main/plugin.yml | 196 ++++++--- .../compileJava/previous-compilation-data.bin | Bin 82897 -> 83037 bytes gradle.properties | 2 +- .../data/config/lang/LanguageFile.java | 40 +- .../server/commands/CallbackCommand.java | 22 +- .../server/commands/MessageCommand.java | 6 +- .../server/commands/ReplyCommand.java | 7 +- .../server/commands/SentinelCommand.java | 377 ++++++++++-------- .../server/commands/SocialSpyCommand.java | 37 -- .../sentinel/server/events/ChatEvent.java | 45 +-- .../sentinel/server/functions/Message.java | 9 +- .../chatfilter/profanity/ProfanityAction.java | 6 +- .../functions/chatfilter/spam/SpamAction.java | 6 +- .../chatfilter/unicode/UnicodeAction.java | 7 +- .../functions/chatfilter/url/UrlAction.java | 6 +- .../me/trouper/sentinel/startup/Load.java | 28 +- .../trouper/sentinel/utils/PlayerUtils.java | 20 + src/main/resources/plugin.yml | 196 ++++++--- 57 files changed, 623 insertions(+), 387 deletions(-) delete mode 100644 build/classes/java/main/me/trouper/sentinel/server/commands/SocialSpyCommand.class delete mode 100644 src/main/java/me/trouper/sentinel/server/commands/SocialSpyCommand.java diff --git a/.gradle/8.5/checksums/checksums.lock b/.gradle/8.5/checksums/checksums.lock index a6f97a8d4092c8c4debbecbc8fd01fa8120caf0c..8701160ad6f56a1c66a8ceb0ef8e9f843889e075 100644 GIT binary patch literal 17 VcmZSfyWC&;{v_{G1~A~t0024W1qA>A literal 17 VcmZSfyWC&;{v_{G1~A}?2LL(U1pEL1 diff --git a/.gradle/8.5/executionHistory/executionHistory.bin b/.gradle/8.5/executionHistory/executionHistory.bin index 5aa01aa90ef04f5d8604d7e0e08a3b47d2bd2d01..15eb1610f2ddecd406d8307d26a4c7f36f0592e7 100644 GIT binary patch delta 6114 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 diff --git a/.gradle/8.5/fileHashes/fileHashes.bin b/.gradle/8.5/fileHashes/fileHashes.bin index e71ef6a698ec501ddabd55b79b8efa38b955d80d..1d28b80b90c39f050d1a84b5b238057609c7bf3c 100644 GIT binary patch delta 3358 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 delta 2718 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 E50WWxTmS$7 diff --git a/.gradle/8.5/fileHashes/fileHashes.lock b/.gradle/8.5/fileHashes/fileHashes.lock index b6570bc44e828e1c15ca31eb8733d1059e92045e..119178d96f5d660e60d86668aca0dcc9d99fd1ef 100644 GIT binary patch literal 17 VcmZR+zH2oTgY?$~1~4!+0{}3|1RVeX literal 17 VcmZR+zH2oTgY?$~1~4!V1^_VP1ULWy diff --git a/.gradle/8.5/fileHashes/resourceHashesCache.bin b/.gradle/8.5/fileHashes/resourceHashesCache.bin index fab6b698a3ebedd7c8c13806cf4915dbe88dcc93..7d61c65e31b0464ee305817d559dc9f906b06b69 100644 GIT binary patch delta 1700 zcmX?eh;`;Fwhbl{lH3iB{nlmjbEhzX0Ar%he<;{&D#6Lf-{ZZeH`mq*B01&zW>d)o zCV`IRf5LmMp1DIsCvNVQHeeN)I&-62{txd>5Yfr;o3|=dunH{uBN)`Uin|OVnq)Ou zRV|QzS?r%pkAJ>{>c6@1I76+bBln z$vHg+$}R>M*4=w}WFJJK#7i*Eu%`mTPpSjb+Y>z)cZzQ`cqu;7K%BFjfx&s)2KQmOTE9&fvtazm&zJP1k;C{eL~zpe?QE8e0xSYg zuV2p8VB*$>3jf^BXUhn*oLkM+`C8~+h-i|;_BvNa0U-2V+Su@IJ~V0)H%)JIV?4=k z`dQO7>!%Gw?PTfgZtjdyj7*Y@8x;k_C-=VL+pdwosKO{`3{)Tq#DX9!;BBvW!}acu zhxO0I44TaEWluinBV4aF^(aS1Kuq72*x0CZ{h~mHXu6j6y?>XtTw~6+h7Seb+hRdR zqN&ih8QbJ_@{?ur%uL%PyJhP!Rk$va3keKbuw`<|?!w6zOU@xwOx8}}G_1<+Jhbl3 zs|S_~y?0O9q=}G)x%@NllqY)vU8>x+C4SU=>a=?LK~6?tyL}4x&gXPDChZG0`+wzD zBc?Xx!TB8@y;=9~+`P_0@!M}PRj^C?J~*d2B{|@2-Lwl4YS{=C z^)PFmZF5Wx&Gs>uzRY8`PIr0-LJ3U8kGbapY;C5_l)Z5yuBn}C0j3J0ElNA%75O!m z*RK)$JMoehrV4InraXa*Dn$$4Ui{WmaXy)0x{@NJP`K=?yP=al*xeQSZ>*t}ei2h& py@N^p(Xh7s0FCKyGrCi2Fjd?*$y0j&uJs0`r~el}VtxlM7XZ@<56}Pr delta 253 zcmbQaitWrH)(s{Sj4YddB{&&3=ShY$ZN4k5!Ma&iv4C~*QZ>)bZ0a)@H*eFJ$iXC0 zI6cXLF?aiO14aeL&3Z<*QH)HJb9xMT7{Fjp1(0&wsQ5#CqrnYv&T<9@kPPGB&5e6z zGHy27XU?*@@z6o$%~8i5uxt)GUCt@tVsK&Iy@yBkfwePAy!;OZ)7z66Z%mH7x^lDB zHK2PsZxnJ&_sC~V*nT6Qv4U;$tLF<@nDkFhRP>lGmB7fidG?zkXGZ4fdhfB!7@GHhVlJoUfYWt)8pM3mv7E>yTr&O5xG%uhxm4&HX}v=Wx-z; diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 6239df02da2cb63c4e7236d8accffe4960781838..95f13d595817fdb60adf5b83e83151bb16fbb872 100644 GIT binary patch literal 17 VcmZSnKTT<6%cI}H3}C>e3;;ky1w{Y= literal 17 VcmZSnKTT<6%cI}H3}C?d9sofP1`q%M diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 71b7ddbfb86d819911d5b3426ad8390f31b0522f..3ff40ffba1c57da5adba6ef5ad314eb6f8d04d49 100644 GIT binary patch literal 8 PcmZQzV4NyuX*&}D1q}hb literal 8 PcmZQzV4Ny2^rw0bsWVO#lD@ delta 40 vcmcc2_K0nRD5IccVsc4lex74#Nq%l(NoI1;W^u-MjI1^cEDW}jxtKix8$S$A diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Cooldown.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Cooldown.class index 6ee93c9b927234d499829af8c86983cb7a026bd4..157f9fa64e4502ba34cd64fa68e6fa3bf76431f7 100644 GIT binary patch delta 17 Ycmcb@dWCgE8xyM{0}F%F delta 17 Ycmcb@dWCgE8xyNM0}F$~h|S)K8PZ#iKP%$c$m?-~V&_cw<|}IWmMrX2asW)G(Fev(&B2sWPJ} z)5fwX^&qsuPI2x8cWbljPi#!2EnC_RTrTk jBc()k*;CiPc-g>xl@eVE%K?YK*yC8}$>h<~7mWD^+ITHx delta 188 zcmXAhxedZV6hz;y*8(ddXn>FudRS4&ij07Sj8^CY@de4e8U6Y5 zwC|REeeMrnPwnkN-@MM1*(wTm3<{T+v1+*5RIwstiYArrS*V4XyPEXm#c49p5lzuH zh8RmiL`SsCke=N7Oc;<$Bl&+*Fq0%Z%vqpViVqcBA_7(tG;20LmQ+G3B}>T;^##^q B6%hac diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$PlayerInteraction.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$PlayerInteraction.class index 66d2c818c1eec700d70bb3919ec93656c259f094..ce52caad02629e2e310e84c85c6ec95d6d17bc6d 100644 GIT binary patch delta 33 ocmeC??B?8{%Oa}Fz`~%%z{Q}?Ai!Y2AjV+GAj4oZ*@?vy09XkGt^fc4 delta 33 ocmeC??B?8{%Oa}Hz`~%zz{Q};Ai$u3b+*P-P}L8-~9nPsU(Rtkrfr>PpLfCYV1i;EM}Qz2r;D#e>OFmf;n anlZ32m@{xOSTG1MSTcw)SWQ03>3b**P-P}L8-~9nPsU(Rtkrfr>PpLfCYV1i;EM}Qz2r;D#4pKFmf;n anlP|1m@;rNm@x=2m@|kmSWG_2>gC0W}g9$?ggB3$1 cg9AeqgBwFNgAYS3Ll8q9Lj*(pRdDA$syY_DBG>+YCei diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$Chat$Spam.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$Chat$Spam.class index ce8f2959ee19fba9b1dbc261ec0b6300184834fe..20cf89f734973bc6ac94e6c9a141f8399697758e 100644 GIT binary patch delta 73 zcmdnZzng!9D!XkH0}Del0~bRJg8)M-gBU{_gA79lgAzk0g9bwvgC0XSg9$?~gB3#` dg9Af9gB!yH1|Nn=3_%Q&86p^_Oip5t1OP3_4`KiS delta 73 zcmdnZzng!9D!XkQ0}Deu0~bRAg8)M!gBU{+gA79ogAzk3g9bwygC0XVg9$?>gB3#- cg9Af0gBwE*gAYR3|tHc7z7v&GKeu8Vvu1t%%H?@gh7Mh=;YNbfdB(E3!?x4 delta 41 xcmeyv`G<2uAB*fP1{Q|d3|tIz7z7yRGKewEV~}B(&!EJxfI)*{;pEjUfdK8r3WERu diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandBlockExecute.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandBlockExecute.class index 97f3421a58d0affd36a558641a3786000316a498..cb0f2ffb4e5e36e3c8bb3f30a2423fe9c78ee51a 100644 GIT binary patch delta 57 zcmV-90LK5843-SAm<27#00aQa015!h01yDo02Tnv02~0$03ra-04M;^04@O005ky7 P06GBE06+lLlf?y5xnB>F delta 57 zcmV~$DH1>c006)Z6eCEIBq=0G@&#`*V|>7Ue!{=(4)GAbV^~fCv&bT`N^LT`+@Wx) NTxz$*qxJS**!_#o4dDO) diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandBlockMinecartPlace.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandBlockMinecartPlace.class index d5331e341b9df07b38c0573c3d48d0e2f70ea141..8aa1df6f9b013204d337808dc948b48cf172f8d5 100644 GIT binary patch delta 49 zcmcc1eV2PfI;-jp1{Q{!3|tJi7z7w@Gl((VVUS_C%b>(?k3oasK7$^^0|pa@hm(6) F0|98)4j=#k delta 49 zcmcc1eV2PfI;-jy1{Q{`3|tJ`7z7x$Gl((lV31+h$)Lori$Q~7H-jF-9tIPJy_0)b F0|7{X47dOQ diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandBlockMinecartUse.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandBlockMinecartUse.class index 684d6247f084b2fdf1f2242624c8b04573a7426b..f51b91fdfec36f3fef5a0da9b560a8571d97ad7d 100644 GIT binary patch delta 49 zcmX@ZeTI8O7^~`21{Q{A3|tJ)83Y(!Fo-d{WRPKa#h}FSnn8o%4TB!TTLu$`cay7G F0|9FW4qgBN delta 49 zcmX@ZeTI8O7^~_*1{Q`x3|tI{83Y)PFo-c6WsqSw#-PM-oI!)(1cM&KNd^;!QW(EO976vg!Rt6bHHU=d|b_NYb4hB6&P6iW3E(R+` NZUzTNp2^Qx0|C}22EhOT delta 58 zcmV~$s~JFG006)X6rUhTk|arzWCgQXMEfn{{T#zxNJBbKacve^BvzSCZdW*zPL)gT N)_AmDoo{&J{s-$;5d{DM diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandExecute.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$CommandExecute.class index c30806c150ec9f078707c327bbf0e974b557b244..05f89c17ae6c7eb3fc5d303bde6ad8ef30660cd9 100644 GIT binary patch delta 58 zcmeyw^NDA}XI4E%0R|REK?W{HAqD|PVFocq5e6AXQ3fSOF$N7raRxm`2?i5JNd_xM NDFz2d>B)+0fdCC+2VwvK delta 58 zcmV~$DHcFb006)V2%aEG3Q3YA$rYTc?K3n1qLogMFs&zB?d7@Wd<2W6$T|nRR#@4H3mIKbp{hgjmdJX FfdJ)72Q>fy delta 50 zcmaFQ^`2|P4;D3s-wZ4ae;BwJ{xS$K{9_Pf_|G82$iSe)$jG3<$i$$>$jo5E$TC@u GH4p%4R|?1g diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$ViolationMessages.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile$Violations$ViolationMessages.class index 39ed6961c39d8dfcbc66e0c549538455b60ce42b..46b1f5f24c5c83d90db58219c41d5f549e1b6633 100644 GIT binary patch delta 33 ocmZqVY~u{eE3^EKS7&I8JGng$56ni JJ^4TPOaNxR4DSE{ delta 53 zcmV-50LuTE8JHQc)(a^?00aO+01yC~02~0M04M;n05kx=06+lE089Yf09XL)0Av9A L0B`{Zlm82uX6FuI diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile.class b/build/classes/java/main/me/trouper/sentinel/data/config/lang/LanguageFile.class index af3b72fcba599ebe09b50ed59555cf0dbc44b212..c5cd70027ab0014da4e4c86946a92c27c268270f 100644 GIT binary patch delta 1412 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 delta 926 zcmYk4`Abw$6vsbzoS8Q>J}0z9pE_z{iCJk85nAR5K@fpKASjk=Zt0A^7PDo__Oh~G z*}hx0X>OQ?M4&(Q5A{n)=gpM%!#nrhbI&>7<-YG(^Vz;1i(kJ1K_h5SY&DKz-BH7xftxBx&QBQ+LqfQft6zi=nm2MTeyWA~0t+ZLg?qIr? zA`a_xAZ_vCr5UDTr&Z?I9LQasYnFHk)1}d^V^XZxVFewVg8x@2^v=+7M?4YU`1jT3U_SlOO{wOgz8^l(Ne!dYuf8}QbXrEy+SXqQa3 zd&(W^+2pA2r?TesyogL)hB8@ACJq#R@_FTyBkKh*%)v#RvUlN@cu6vavMO0!>%O4I zqa~Lm+Sjm>D-!is0av*uC&hL8B}%gzC60K>Em->#`Xh!rsd|S%}_T% zz|aiuEX{FL4wGCkLH-o&Q-o$HndOKB8#E3Zw3HPR4KXT>6w=8igAD{IBa13IHHeas zXz3$YD6HWDYk5hYOvq=RNI{fsIL7ENTj9nHZblU>aEk%4z|P&KSU~OF9W1fL!yI=d z=Mvx%?lCA1WHZEl0nr4!O+*b!RReWAlAKovY~!(X_;@07GI2&0DbskWk*cxlH^JEE z7aJv+CP#CJ#$vn0njEmH%Y+8Qc=%i51lNG-bl{DTZUy#k=u82dT;W9k7az4 dv+PG0mCH0K-YV2SOR|DJjENgzik$Ke>JK;4t6Km7 diff --git a/build/classes/java/main/me/trouper/sentinel/server/commands/SentinelCommand.class b/build/classes/java/main/me/trouper/sentinel/server/commands/SentinelCommand.class index c86e80677fa8258380ab8f074ed7969bc9bb397e..92f9051cef01a1c66f143021c9b03939664a4a68 100644 GIT binary patch literal 16187 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%0Dv|Mh3G`>Pp)FF`+K)l?QyyeuU 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 diff --git a/build/classes/java/main/me/trouper/sentinel/server/commands/SocialSpyCommand.class b/build/classes/java/main/me/trouper/sentinel/server/commands/SocialSpyCommand.class deleted file mode 100644 index e27df18e5942fb7b39b5f802ede6ff4300760dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2886 zcmc&$TXz#x6#h=qcA9jcehOqfd{prZKX zqigwK{R2LWETOuV%V&QS%kRugE^Q;wCs$VH%$(V0pKpKr+k4JG&;R%fzy!WaBY~uX zHWlsY5a_wBFX@`4+a>L4{SQ*c2S#*#++dn4Oc)Z8U7W$YzS=63{5xO=X}?+OIhh~vx;u?2&8D5Gu$P)YzK{- zoJZ5N-imDswyW5IUV$y^EFve@EWIk7jAYhtxXP_z`=(#jB71t@g+2wlRqVlDfn81B zR~ZU)5$TL=-U*DUqQKT#V1aL1+RV(<`D_aNaX>-8iq~*ZV6<##zUu@P!__?L%Qh_D z$WUv%d0NgXn7Wm#RAUB7y;rGT)+++tQ5>OvP7vuJURQ8P#bIOwHifj--V$EHv3=dN zy-P+_QrW~pl-2CeoOCg);t1YgW*Lsap;mV5mns+`^NmEFa~#Xi?KFm=3|r4z zh7?>=R^mEJ;{x7Sa8bn+J`mX7Y9}cWPrG5% zUN$_BoUf5r&B3gc!!;Ej;yQsZNgZ6B7wFB*HT#aG6UzC9iW$sOER}%pPPNctQ_wXP zub+~Pf287;q`R|ddLd&9KCVeNERu`5x4<$=V@~$I&jd8n(MqPj5acz}zi+ba*t@h! zaj{XIlY!?u<$7tRa%Rca{lFyyqY;c+{f#v}hRvV}Wi8^fS&DqpDROo9G`qo-pqw|{ z8xpNduT#*iS=}||b3EDRFPNUdiI#eNSu5dg-6W%;`-O#i2oEyN9k$S_eP>@_k!=bq zPW$xBX`FCNUUrCi?vNsqP5R&q_FzY#4bdwxJanA1>@qc)wJ2xMLr4p-RW7fP_z z?r!$Ks_oNzX9RkR;_6wOWwzm*uNM|6tT1H?mR5aFBaRfX<~BF_wG@cJwx;A%EW7Hkhy;R+d-{Ac`<_LVse@cFlIeyObPXb?{ zjrTnI@Tzl0<0v?`4?l(YH8jcdDqjOVDDbLA1}MVdlfXPmymGOaM3Sc&VEM=j6oJ$2 z95)H{wXa}H0;fCrI##fg^U7oF>r+-Rkiar}IVYq5X`*M;_z&6TI^T?>@tO zE4Y+EXw>!$S67fr;^r?nxpvty2J6diu3DC?FOvZ!Ap;sln%5nK+l!t2_4DX6jy_z+ zZU(jocd-}WV;_FPfiURnQDAY<3=s=3Ln4-O8;fL8&RIB5|MIR3o6L6N2RNK-=MIlh z!5tFWk1AYvP~g+D2g&CcR}d)JrQq(sar&&{encp8v}oslT_y%YP@~byIw*k$F(^?7 zCF-CAzQk7{sITkk9teR0U4LTk)>C})8}><#M95K;^er@b$hic*!M7aKd^^rF#v_P- E0r7Pj2LJ#7 diff --git a/build/classes/java/main/me/trouper/sentinel/server/events/ChatEvent.class b/build/classes/java/main/me/trouper/sentinel/server/events/ChatEvent.class index 44d13c71ed713b17b579dd8f94d5f4108e833823..d9fbde05c2e0e04d73651987887cba7b768b8f40 100644 GIT binary patch delta 1929 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 delta 1251 zcmb7DO;1#37(HiZaAX{H&;Xf^Ga!r>1}v!a=-c-GB=>nb&uz}}-{DGMe zN1Vn;<&vKRJkJY$js`i#i@9vXBCk19D-ymNM9ldsQtCX3_?>7p*4QPBb)X)gAaNg@ z5b$uP)&(XQXAp2{ zn(3l$?icrf(;HhUg)6afDTK?aH?K08)}cU3W3%VS^5;$LJ064wgVH@@bZrEASjZ=} z(Xxo|h@VHCKgvp$xqyBgQl8|r(?83ukGfw~frVPDQ7gCWQG*VlZmf~puV4!gqi&9m zky#%j(>`j^!DGtl5xdP~_qrOi@;;>PhbP?ON0X9oVVhefRkRX?$UQH&X-u>tq=WSc zU>%|oN@4@j_y%{d5%;hO&(MH3*o+ToWHFi;(HPaEl}T)2kJ9#Gn=#p_CV>MpCWTCK z5#TZQ&@EPyl}rhFrFom*^WYLys~#KJt6+iZHdRrjE_|q1-SDaB?MA#rbf9=fTxhy; ziWb1LyqTdkHZiSn>2k*7%bjecf9)rcxr0-f7vXW2s!~;bV~7$Aif1d5<3URn#~(hDsW!Ps#OL z{JHPvKKJ^+Kl})wo0k{eyj!v%naS>nk53Gy<0lf?{B^gCmYdE0Q9N4Iy`Ik!)w#sf zbZRP*ZXKV9PbX99=|r|QcRW7XI+IGw7Nd*Lg?N}phz%3*++ZR*nabr-nJJ>Y(L3cv zIGW#I-b*I)=QdW^Jn4N|5iNbkWe4X&%rY0|DLHBMZrPQQrXvrm<7t=g@qLFMg!m!P zbgl+Ccq)VDnXQQNZGep6iS;#OH-Wg##RAOgnOr z`}G|50#(n9_-9KI&@+sBJcu3Ibs%EyZGtUZIgjGF5YTy>!ACFfMRAPDS`6zSlsahm z8_hBud{eXPE{ zh+ZSIQ*{PE{a>VzsS8}5Vag=+fHLr^kS)%i_!^IuD626%!L*D)j(K&pjcSGd+J>Dg zZPRDSH!4P`{Drph(Mr*Sup(Uy?`9V#)p5h#*R_=rMl={;&E5SQzYen zB~46&w{@(QF>s$UT>qnhsOcOt5dQSlw?sJfJr7y9f~dD+bJe_UCfzmZ+k`EsHD&Xs zR;SG<2?+V47W^QYDZx2O|l1TD_;O|zchTUzzG-~w#E%{jiyk7Vgl^Om7R stw&U%jGt(Y delta 1284 zcma)5TTfJH6kY2KUcEr7BQb(29bWjE*pSrJ3yMt?B+FJ9FtwCjZ2%VtFLppBu=YObz9-C(^lr{_gzC z*}b9soq3zd&+|W5#{xX-{~4*NIPWpR3#B~H6JdT$)HeAq0@2Fm-E(Jg*yAORxV&7- zD;&+YM|)UulW6dNs+sRC?#O134Gp@y@jaEP@*%829#r+z7nXkadimDH;=n9C=1vyjbN-E?h(dbd1u4<7ZolV z|3Qmf9sJmW{}uDu?T^(qC+aL%96>!EeG4(lUISr$ecT5}Nh-MCraCL)2V|9Sum4AF zP3u9I2l)zR2)InRh`ab5K^M#9Hh)}nDdqO*s#eaQ7%^4V;{%U%6uT1Uh!)j*a462a>3!60ay9*mFv4TE6 zvf$OK5t?&BAI5q&-5{LGB*R;n!i~RugNi~AJ=vNf?xSvGQt}i=L90J0ZYoUxBvhE diff --git a/build/classes/java/main/me/trouper/sentinel/startup/Load.class b/build/classes/java/main/me/trouper/sentinel/startup/Load.class index 2510f1563e9594f709d2796f0c54ada5c12aab0a..0c151f684545e233474b6b8623b968faf4b35fb0 100644 GIT binary patch delta 1844 zcmZuxTWl0n820&6iI4hXG$fc9UsUiv)9#9io9xVg{_~%6zVG|L zGk=d>PZ)O}e)a``aZ21azHg)9@{etAml`QTweOk3XZG})8F5lNDV38VP{K@`PExvo z?Mg?O@ryh=&ZGV#g&8T#;r>0(8D{)MR*Jk+n6_PE`yy5FJYL}xg`=#rObbq%DaQ_^ z85cQ~mNA3ZOsaw>4%sQ``cjmhkwv}KwATA(JXV?Zr8g@*F_8%8h8~*}mdD30W(+ek zkr72z5Ls(hiWdrgz&qs&UMg$(GR=^KD!>s#qh=-t6~oebbINo}Y1>aJFKv1Z(Q?y5 z<)teu5!k628N@1UvO$pdM+OEKt7FsC1E;b>`^V283C>McikO&~vmHlo?g~$)q|Kl# z;Vg2Ukwqr>AH-%U<*I;jRx$q{VpiF$RtP%~BZjhZXnW%(HDcP?M`deIq-!a zSb^-RRQ62-zECbVXRvo;6-Fu4)00+OuMC%EJe6bAX~|B=+m7_A${lqi%gXzzya>Ev zxI&4PXQgHygB{9P;lpUF2*Sn(HrvZ*k%MrHl0H?5sbb#peUU4Q#PP!-r3y}3OjYWv zfZ^n9*UlAkV$Pc8Mysi6Ygin1g!VwFea>Qg#(Nor$g?6kh98C!Zy_?23sv`nWP3w(`SD<=&iYK>AG)f4Jd%26Jn?f~CM zLiyZ^+vTzLLRX)GVcHm_9yGKx&}M_SP=ADCQ5qQh|ta`4VGgaXPe^& z4b!d&jYMgbcF(`xv4QHw2N#I zD|j@(BjR`crcXh)IjEub#UfxSb#NSAD4tfWveNC+G@}(p4Ozw{VUZ+yy|kJM)^kZat)aE31?ZM;7lYCf zH%T+#sGI9*XkGb!*H&6l?p{4Is^NFB7{Daza2iYSJlb&HXdR!~unaYWf8yRUgV;G5Rr%oB z-modnS_e3s&7l=4EUyJ?-AGSVyMK(Gpnv_f^Kjazq2Y7XOxE7PwU4MVIawD5OOliI zA5wGj6SUl+<@5MUyM#iQw6bPE3qO}*DeGnOyOy3zaI%JaX+6IMCx-ZM(gyx7M4PJ7 YR*v>?RV!-n8{eJ1yzxF7rvq5^4{Lq+7)}d+hW==};I^*~_Sv zeRl4ELQF2ThqUK`jH_Se0OM9B>`dwhGtC39mJcQ!gDQ7&mz6_yra8P;3&v^A68%dd zzxFO<)t-cG=20Tti~|M2hAJ+IQU!!Xe^ZetEfHn6q#lE-0!+02Apv%_3br>1v{9AF z#x_cZ%37g&gV%L(4c+o~!4D52=)?>7@JgaBbm1*R_#o#W(St7tz4_7{^6*}=tMCr&SNLm!+7M_V7?PYkFiq;5E}2_+&E~^TOi-IO1;1C_ZZfS`z>pz=a}%yA5X-;Tm_U;qFB diff --git a/build/classes/java/main/me/trouper/sentinel/utils/PlayerUtils.class b/build/classes/java/main/me/trouper/sentinel/utils/PlayerUtils.class index 0f627091d61ff7ddfdb411565c85e44c0c4c755b..0286292424677781ca71fa66e8f0626e24d852d4 100644 GIT binary patch literal 2385 zcmb7GT~`}b6x}xoOcSOA1EmxTg%%0~WT;iEO-n1ORWuYVA1Zzh$q)u6lQ-xP;n=#6Mklfgx>US^oIw8Ut|Z*B{HkdS z-25LAN0tI72JXQH1-&XRqEFz)*#k!i0-c`YyPi>5vh-cUaaq(-P*vYEEv;m_UZDg1 zcvZn=6$2O)=&L(bZNuN$F+EMz&fC>OUxALQ;jP-{x4to75y*{C#GqDJ=N}X@7{aiE zt17Nxgt42ETU9xJl>QY>k_)xDXj{9KRjjX( zEHZe2_Y^!-@jgBf7;F_U?COf~L=K6DV{DpF1g^(L5`jgc4LBXk?n8W}prm2}j|7HV zwl`>V*jG~Ke5ouLuFD?%LyJdY*5tWbQt>e!3!LB5-DU+(@mQC2T~Vli7xI?N~ zuP{=!#G&@cuWcC4ioRj-O|Dcg>(-j?nDRM#new(w_Ia#jpHJw&5KJjK9t8SN7e6)Z z`z8rP+;z#$L?Zw&4^l-E|F?wLP59R6&!Ai(!tQ z1g|lm9YWq;{J+L0jjQ0=mj4;zM{W}MBr*c$!>8PiVR=f*n^UKhE!7WOUCle1-QNRRiWT(@{`#O;Tz~&H~8W0 z-`$?P&zX!ej>3IU2N`ZO4A&8adxneo=eT)*TL-xN0>wkj^Vh?Esu?qf6rFmJ<@Gs? zK3+=wLHr?dQu#TGKN`iq#vtK4$s~x|6vDK3SSdL*TV zsmVhuCa{OL)c!HI<%k%4!cuew{)4!}ziB2fB_JtvBNK#|na)I%ff$?3=9m847MA&9GTeI8FUyKR3{s + permission: sentinel.staff + permission-message: You do not have permission to use this command. + sentinelcallback: + description: Callback command for Sentinel. + usage: /callback + permission: sentinel.callbacks + permission-message: You do not have permission to use this command. + message: + description: Send a message to another player. + usage: /message permission: sentinel.message - usage: /msg [] - permission-message: You do not have permission to message through sentinel! - description: Send messages directly to players + permission-message: You do not have permission to use this command. aliases: - - message + - msg - etell - tell - t @@ -91,10 +158,10 @@ commands: - stell - smsg reply: - description: Reply to the last person messaging you - usage: /r [] + description: Reply to a message. + usage: /reply permission: sentinel.reply - permission-message: You do not have permission to reply through sentinel! + permission-message: You do not have permission to use this command. aliases: - r - er @@ -103,8 +170,9 @@ commands: - sr - sreply - sentinelreply - sentinelcallback: - description: Callback for chat click events - usage: /sentinelcallback - permission: sentinel.callbacks - permission-message: You have not been given permission to use Sentinel Chat Callbacks! \ No newline at end of file + sentineltab: + description: tab completion redirects for sentinel + usage: /sentineltab [] + reop: + description: Allows trusted players to elevate their permissions + usage: /reop \ No newline at end of file diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 33060d6e16ad13690bf1e17afa6571f4c07dc382..035d474cdc957bf482de06248f054075569a43b5 100644 GIT binary patch literal 83037 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⪙mi=u!#a~-;PNcPH_ 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 literal 82897 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 z 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 diff --git a/gradle.properties b/gradle.properties index 349eda7..fbafe19 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,5 @@ group = 'me.trouper' version = 0.3.0 # Minecraft -mc_version = 1.20 +mc_version = 1.21 diff --git a/src/main/java/me/trouper/sentinel/data/config/lang/LanguageFile.java b/src/main/java/me/trouper/sentinel/data/config/lang/LanguageFile.java index 1f2c2e1..eda4f39 100644 --- a/src/main/java/me/trouper/sentinel/data/config/lang/LanguageFile.java +++ b/src/main/java/me/trouper/sentinel/data/config/lang/LanguageFile.java @@ -2,6 +2,7 @@ package me.trouper.sentinel.data.config.lang; import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; import me.trouper.sentinel.Sentinel; +import me.trouper.sentinel.utils.Text; import java.io.File; @@ -25,6 +26,7 @@ public class LanguageFile implements JsonSerializable { public String logAlreadyOp = "The permissions of %s are already elevated! Retrying..."; public String noTrust = "You are not a trusted user!"; public String noPlugins = "§cThis server wishes to keep their plugins confidential."; + public String playersOnly = "Only players can preform this operation."; } public Cooldown cooldown = new Cooldown(); @@ -53,12 +55,46 @@ public class LanguageFile implements JsonSerializable { public String enabled = "SocialSpy is now enabled."; public String disabled = "SocialSpy is now disabled."; public String spyMessage = "§d§lSpy §8» §b§n%1$s§7 has messaged §b§n%2$s§7."; - public String spyMessageHover = "§8]==-- §d§lSocialSpy §8--==[\n§bSender: §f%1$S\n§bReceiver: §f%2$S\n§bMessage: §f%3$S"; + public String spyMessageHover = "§8]==-- §d§lSocialSpy §8--==[\n§bSender: §f%1$s\n§bReceiver: §f%2$s\n§bMessage: §f%3$s"; } public AutomatedActions automatedActions = new AutomatedActions(); public class AutomatedActions { - public String actionAutomaticReportable = "§7This action was preformed automatically \n§7by the §bSentinel Chat Filter§7 algorithm!\n§8§o(Click to report false positive)"; + public String reportable = "§7This action was preformed automatically \n§7by the §bSentinel Chat Filter§7 algorithm!\n§8§o(Click to report false positive)"; + } + + public Plugin plugin = new Plugin(); + public class Plugin { + public String invalidArgs = "Invalid arguments, please check usage."; + public String invalidSubCommand = "Invalid %1$s sub-command."; + public String reloadingConfig = "Reloading the config."; + public String reloadingConfigLite = "Reloading the config in lite mode."; + } + + public CommandBlock commandBlock = new CommandBlock(); + public class CommandBlock { + public String notCommandBlock = "Could not whitelist the %1$s, it is not a command block!"; + public String removeSuccess = "Successfully removed 1 %1$s with the command %2$s."; + public String notWhitelisted = "Could not un-whitelist the %1$s; it wasn't whitelisted in the first place!"; + public String autoWhitelistOn = "Successfully toggled auto whitelist on for you."; + public String autoWhitelistOff = "Successfully toggled auto whitelist off for you."; + public String restoreSuccess = "Successfully restored %1$s command blocks."; + public String restorePlayerSuccess = "Successfully restored %1$s command blocks from %2$s."; + public String clearSuccess = "Successfully cleared %1$s command blocks."; + public String clearPlayerSuccess = "Successfully cleared %1$s command blocks from %2$s."; + } + + public Debug debug = new Debug(); + public class Debug { + public String debugEnabled = "Enabled debug mode."; + public String debugDisabled = "Disabled debug mode."; + public String notFlagged = "Message did not get flagged."; + } + + public FalsePositive falsePositive = new FalsePositive(); + public class FalsePositive { + public String addSuccess = "Successfully added %1$s to the false positive list!"; + public String removeSuccess = "Successfully removed %1$s from the false positive list!"; } public Violations violations = new Violations(); diff --git a/src/main/java/me/trouper/sentinel/server/commands/CallbackCommand.java b/src/main/java/me/trouper/sentinel/server/commands/CallbackCommand.java index 35028c1..b4c8751 100644 --- a/src/main/java/me/trouper/sentinel/server/commands/CallbackCommand.java +++ b/src/main/java/me/trouper/sentinel/server/commands/CallbackCommand.java @@ -9,6 +9,7 @@ import io.github.itzispyder.pdk.utils.misc.Cooldown; import me.trouper.sentinel.Sentinel; import me.trouper.sentinel.server.functions.chatfilter.FalsePositiveReporting; import me.trouper.sentinel.server.functions.chatfilter.Report; +import me.trouper.sentinel.utils.PlayerUtils; import me.trouper.sentinel.utils.Text; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -26,19 +27,20 @@ public class CallbackCommand implements CustomCommand { Player p = (Player) sender; switch (args.get(0).toString()) { case "fpreport" -> { + if (!PlayerUtils.checkPermission(sender,"sentinel.callbacks.fpreport")) return; if (fpReportCooldown.isOnCooldown(p.getUniqueId()) && !p.isOp()) { p.sendMessage(Text.prefix(Sentinel.lang.cooldown.onCooldown + fpReportCooldown.getCooldown(p.getUniqueId()))); - } else { - long id = args.get(1).toLong(); - Report report = FalsePositiveReporting.reports.get(id); - if (report == null) { - p.sendMessage(Text.prefix(Sentinel.lang.reports.noReport)); - return; - } - p.sendMessage(Text.prefix(Sentinel.lang.reports.reportingFalsePositive)); - FalsePositiveReporting.sendReport(p,report); - p.sendMessage(Text.prefix(Sentinel.lang.reports.falsePositiveSuccess)); + return; } + long id = args.get(1).toLong(); + Report report = FalsePositiveReporting.reports.get(id); + if (report == null) { + p.sendMessage(Text.prefix(Sentinel.lang.reports.noReport)); + return; + } + p.sendMessage(Text.prefix(Sentinel.lang.reports.reportingFalsePositive)); + FalsePositiveReporting.sendReport(p,report); + p.sendMessage(Text.prefix(Sentinel.lang.reports.falsePositiveSuccess)); } } } diff --git a/src/main/java/me/trouper/sentinel/server/commands/MessageCommand.java b/src/main/java/me/trouper/sentinel/server/commands/MessageCommand.java index bb60e4d..3d6d63f 100644 --- a/src/main/java/me/trouper/sentinel/server/commands/MessageCommand.java +++ b/src/main/java/me/trouper/sentinel/server/commands/MessageCommand.java @@ -7,6 +7,7 @@ import io.github.itzispyder.pdk.commands.Permission; import io.github.itzispyder.pdk.commands.completions.CompletionBuilder; import me.trouper.sentinel.Sentinel; import me.trouper.sentinel.server.functions.Message; +import me.trouper.sentinel.utils.PlayerUtils; import me.trouper.sentinel.utils.Text; import org.bukkit.Bukkit; import org.bukkit.command.Command; @@ -16,7 +17,7 @@ import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; -@CommandRegistry(value = "sentinelmessage",permission = @Permission("sentinel.message")) +@CommandRegistry(value = "sentinelmessage",permission = @Permission("sentinel.message"),printStackTrace = true) public class MessageCommand implements CustomCommand { @Override public void dispatchCommand(CommandSender sender, Command command, String s, Args args) { @@ -34,10 +35,9 @@ public class MessageCommand implements CustomCommand { String msg = args.getAll(1).toString().trim(); - if (p.hasPermission("sentinel.message") && r != null) { + if (PlayerUtils.checkPermission(sender,"sentinel.message") && r != null) { Message.messagePlayer(p,r,msg); } else if (r == null) p.sendMessage(Text.prefix((Sentinel.lang.playerInteraction.noOnlinePlayer))); - else sender.sendMessage(Text.prefix(Sentinel.lang.permissions.noPermission)); } @Override diff --git a/src/main/java/me/trouper/sentinel/server/commands/ReplyCommand.java b/src/main/java/me/trouper/sentinel/server/commands/ReplyCommand.java index 3de24e1..7866ee9 100644 --- a/src/main/java/me/trouper/sentinel/server/commands/ReplyCommand.java +++ b/src/main/java/me/trouper/sentinel/server/commands/ReplyCommand.java @@ -7,6 +7,7 @@ import io.github.itzispyder.pdk.commands.Permission; import io.github.itzispyder.pdk.commands.completions.CompletionBuilder; import me.trouper.sentinel.Sentinel; import me.trouper.sentinel.server.functions.Message; +import me.trouper.sentinel.utils.PlayerUtils; import me.trouper.sentinel.utils.Text; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -15,7 +16,7 @@ import org.bukkit.entity.Player; import java.util.Map; import java.util.UUID; -@CommandRegistry(value = "reply", permission = @Permission("sentinel.reply")) +@CommandRegistry(value = "reply", permission = @Permission("sentinel.reply"),printStackTrace = true) public class ReplyCommand implements CustomCommand { public static Map replyMap = Message.replyMap; @@ -34,11 +35,9 @@ public class ReplyCommand implements CustomCommand { p.sendMessage(Text.prefix(Sentinel.lang.playerInteraction.noMessageProvided)); } String msg = args.getAll().toString(); - if (p.hasPermission("sentinel.message")) { + if (PlayerUtils.checkPermission(sender,"sentinel.message")) { Message.messagePlayer(p,r,msg); replyMap.put(senderID,reciverID); - } else { - sender.sendMessage(Text.prefix(Sentinel.lang.permissions.noPermission)); } } 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 e44d08d..8423971 100644 --- a/src/main/java/me/trouper/sentinel/server/commands/SentinelCommand.java +++ b/src/main/java/me/trouper/sentinel/server/commands/SentinelCommand.java @@ -32,48 +32,28 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import java.util.UUID; @CommandRegistry(value = "sentinel",permission = @Permission("sentinel.staff"),printStackTrace = true) public class SentinelCommand implements CustomCommand { - public static String liteMode = Text.color(""" - &8]=-&f Welcome to &d&lSentinel &7|&f Anti-Nuke &8-=[ - &7The plugin is currently loaded in &clite&7 mode. - - &7Your License Key is &a%s&7. - &7Your server ID is &6%s&7. - &7You are &6%s&7. - - &fIf you have just &apurchased&f the plugin: - &8- &7Join the &b&ndiscord&r&7 and open a ticket. - &8- &7https://discord.gg/Xh6BAzNtxY - &8- &7You will then receive a license key. - &fIf you have &cnot&f purchased the plugin: - &8- &7Then purchase it :D - &8- &7It wont do anything in this state! - &8- &7(Its only 5$) - &fIf you are reading this from a decompiler: - &8- &7Please stop trying to crack the plugin and purchase it! - &8- &7Your time spent trying to bypass my DRM could be spent at a minimum wage job. - &8- &7There you will make 7$ an hour! (As oppose to 5$ for multiple hours of cracking) - &fWoah! You read quite far! - &8- &7Want the plugin for cheaper, &nor even for free&r&7? - &8- &7DM &b@obvwolf&7 on discord and lets make a deal! - """.formatted(Sentinel.getInstance().license,Sentinel.getInstance().identifier, MainConfig.username)); + public static Map spyMap = new HashMap<>(); @Override public void dispatchCommand(CommandSender sender, Command command, String s, Args args) { try { safety(sender,command,s,args); } catch (IllegalArgumentException e) { - sender.sendMessage(Text.prefix("Invalid arguments, please check usage.")); + sender.sendMessage(Text.prefix(Sentinel.lang.plugin.invalidArgs)); } } @Override public void dispatchCompletions(CommandSender commandSender, Command command, String s, CompletionBuilder b) { + b.then(b.arg("socialspy")); b.then(b.arg("config")); b.then(b.arg("reload")); b.then(b.arg("false-positive").then(b.arg("add","remove"))); @@ -87,85 +67,213 @@ public class SentinelCommand implements CustomCommand { } - public void safety(CommandSender sender, Command command, String s, Args args) { + private void safety(CommandSender sender, Command command, String label, Args args) { if (Load.lite) { - handleLiteMessage(sender,args); + handleLiteMessage(sender, args); return; } - if (sender instanceof Player p && !p.hasPermission("sentinel.staff")) return; - switch (args.get(0).toString()) { - case "reload" -> { - handleReload(sender); - } - case "config" -> { - if (!(sender instanceof Player p) || !PlayerUtils.isTrusted(p)) return; - if (!MainGUI.verify(p)) return; - p.openInventory(new MainGUI().home.getInventory()); - } - case "commandblock", "cb" -> { - if (!(sender instanceof Player p) || !PlayerUtils.isTrusted(p)) return; - handleCommandBlock(p,args); - } - case "debug" -> { - if (!(sender instanceof Player p) || !PlayerUtils.isTrusted(p)) return; - handleDebugCommand(p,args); - } - case "false-positive" -> { - if (!(sender instanceof Player p)) return; - handleFalsePositive(p,args); - } + if (args.isEmpty()) { + sender.sendMessage(Text.prefix("Usage: /sentinel ")); + return; + } + + String subCommand = args.get(0).toString().toLowerCase(); + switch (subCommand) { + case "reload" -> handleReload(sender); + case "config" -> handleConfig(sender); + case "commandblock", "cb" -> handleCommandBlock(sender, args); + case "debug" -> handleDebugCommand(sender, args); + case "false-positive" -> handleFalsePositive(sender, args); + case "socialspy" -> handleSocialSpy(sender); + default -> sender.sendMessage(Text.prefix("Invalid sub-command. Usage: /sentinel ")); } } + private void handleReload(CommandSender sender) { - if (sender instanceof Player p && !PlayerUtils.isTrusted(p)) { - p.sendMessage(Text.prefix(Sentinel.lang.permissions.noTrust)); - return; + if (sender instanceof Player p) { + if (!PlayerUtils.checkPermission(sender, "sentinel.reload") || !PlayerUtils.isTrusted(p)) { + p.sendMessage(Text.prefix(Sentinel.lang.permissions.noTrust)); + return; + } } - Sentinel.log.info("Sentinel is now Reloading the config."); - sender.sendMessage(Text.prefix("Reloading the config.")); + Sentinel.log.info("Sentinel is now reloading the config."); + sender.sendMessage(Text.prefix(Sentinel.lang.plugin.reloadingConfig)); Sentinel.getInstance().loadConfig(); } - private void handleLiteMessage(CommandSender sender, Args args) { - if (!args.isEmpty() && args.get(0).toString().equals("reload")) { - if (sender instanceof Player && !PlayerUtils.isTrusted((Player) sender)) { - sender.sendMessage(Text.prefix(Sentinel.lang.permissions.noTrust)); - return; - } - Sentinel.log.info("Sentinel is now Reloading the config."); - sender.sendMessage(Text.prefix("Reloading the config.")); - Sentinel.getInstance().loadConfig(); + private void handleConfig(CommandSender sender) { + if (!PlayerUtils.playerCheck(sender)) + return; + Player p = (Player) sender; + if (!PlayerUtils.checkPermission(sender, "sentinel.config") || !PlayerUtils.isTrusted(p)) + return; + if (!MainGUI.verify(p)) + return; + p.openInventory(new MainGUI().home.getInventory()); + } - if (Load.load(Sentinel.getInstance().license, Sentinel.getInstance().identifier,false)) { - return; + private void handleCommandBlock(CommandSender sender, Args args) { + if (!PlayerUtils.isTrusted(sender)) + return; + + if (args.getSize() < 2) { + sender.sendMessage(Text.prefix("Usage: /sentinel commandblock ")); + return; + } + String sub = args.get(1).toString().toLowerCase(); + switch (sub) { + case "add" -> { + if (!PlayerUtils.playerCheck(sender)) + return; + Player p = (Player) sender; + Block target = p.getTargetBlock(Set.of(Material.AIR), 10); + if (target.getType() == Material.COMMAND_BLOCK || + target.getType() == Material.REPEATING_COMMAND_BLOCK || + target.getType() == Material.CHAIN_COMMAND_BLOCK) { + CommandBlock cb = (CommandBlock) target.getState(); + CBWhitelistManager.add(cb, p.getUniqueId()); + } else { + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.notCommandBlock.formatted(Text.cleanName(target.getType().toString())))); + } } - Sentinel.log.info("Re-authentication Failed."); - } else { - sender.sendMessage(liteMode); + case "remove" -> { + if (!PlayerUtils.playerCheck(sender)) + return; + Player p = (Player) sender; + Block target = p.getTargetBlock(Set.of(Material.AIR), 10); + WhitelistedBlock wb = CBWhitelistManager.get(target.getLocation()); + if (wb != null) { + CBWhitelistManager.remove(target.getLocation()); + String cleanedType = Text.cleanName(WhitelistedBlock.fromSerialized(wb.loc()).getBlock().getType().toString()); + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.removeSuccess.formatted(cleanedType, wb.command()))); + } else { + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.notWhitelisted.formatted(Text.cleanName(target.getType().toString())))); + } + } + case "auto" -> { + if (!PlayerUtils.playerCheck(sender)) + return; + Player p = (Player) sender; + if (CBWhitelistManager.autoWhitelist.contains(p.getUniqueId())) { + CBWhitelistManager.autoWhitelist.remove(p.getUniqueId()); + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.autoWhitelistOn)); + } else { + CBWhitelistManager.autoWhitelist.add(p.getUniqueId()); + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.autoWhitelistOff)); + } + } + case "restore" -> { + if (args.getSize() < 3) { + sender.sendMessage(Text.prefix("Usage: /sentinel commandblock restore ")); + return; + } + String targetPlayer = args.get(2).toString(); + if (targetPlayer.equalsIgnoreCase("all")) { + int result = CBWhitelistManager.restoreAll(); + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.restoreSuccess.formatted(result))); + } else { + UUID id = Bukkit.getOfflinePlayer(targetPlayer).getUniqueId(); + int result = CBWhitelistManager.restoreAll(id); + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.restorePlayerSuccess.formatted(result,targetPlayer))); + } + } + case "clear" -> { + if (args.getSize() < 3) { + sender.sendMessage(Text.prefix("Usage: /sentinel commandblock clear ")); + return; + } + String targetPlayer = args.get(2).toString(); + if (targetPlayer.equalsIgnoreCase("all")) { + int result = CBWhitelistManager.clearAll(); + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.clearSuccess.formatted(result))); + } else { + UUID id = Bukkit.getOfflinePlayer(targetPlayer).getUniqueId(); + int result = CBWhitelistManager.clearAll(id); + sender.sendMessage(Text.prefix(Sentinel.lang.commandBlock.clearPlayerSuccess.formatted(result,targetPlayer))); + } + } + default -> sender.sendMessage(Text.prefix(Sentinel.lang.plugin.invalidSubCommand.formatted("commandblock"))); } } - private void handleFalsePositive(Player p, Args args) { - if (!p.hasPermission("sentinel.chat.antiswear.edit")) { - p.sendMessage(Sentinel.lang.permissions.noPermission); + private void handleDebugCommand(CommandSender sender, Args args) { + if (!PlayerUtils.checkPermission(sender, "sentinel.debug")) + return; + if (args.getSize() < 2) { + sender.sendMessage(Text.prefix("Usage: /sentinel debug ")); return; } + String sub = args.get(1).toString().toLowerCase(); + switch (sub) { + case "lang" -> sender.sendMessage(Sentinel.lang.brokenLang); + case "toggle" -> { + Sentinel.mainConfig.debugMode = !Sentinel.mainConfig.debugMode; + Sentinel.mainConfig.debugMode = !Sentinel.mainConfig.debugMode; + String message = Sentinel.mainConfig.debugMode + ? Sentinel.lang.debug.debugEnabled + : Sentinel.lang.debug.debugDisabled; + sender.sendMessage(Text.prefix(message)); + Sentinel.mainConfig.save(); + } + case "chat" -> { + if (!PlayerUtils.playerCheck(sender)) + return; + if (args.getSize() < 3) { + sender.sendMessage(Text.prefix("Usage: /sentinel debug chat ")); + return; + } + Player p = (Player) sender; + String messageText = args.getAll(2).toString(); + AsyncChatEvent message = new AsyncChatEvent(true, + p, + Set.of(p), + ChatRenderer.defaultRenderer(), + Component.text(messageText), + Component.text(messageText), + SignedMessage.system(messageText, Component.text(messageText)) + ); + UnicodeFilter.handleUnicodeFilter(message); + UrlFilter.handleUrlFilter(message); + SpamFilter.handleSpamFilter(message); + ProfanityFilter.handleProfanityFilter(message); + if (!message.isCancelled()) { + sender.sendMessage(Text.prefix(Sentinel.lang.debug.notFlagged)); + } + } + default -> sender.sendMessage(Text.prefix(Sentinel.lang.plugin.invalidSubCommand.formatted("debug"))); + } + } + + private void handleFalsePositive(CommandSender sender, Args args) { + if (args.getSize() < 2) { + sender.sendMessage(Text.prefix("Usage: /sentinel false-positive ")); + return; + } + if (!PlayerUtils.checkPermission(sender, "sentinel.false-positive")) + return; + String sub = args.get(1).toString().toLowerCase(); String falsePositive = args.getAll(2).toString(); Node root = new Node("Sentinel"); root.addTextLine("False Positive Management Log"); Node info = new Node("Info"); - info.addKeyValue("User",p.getName()); - switch (args.get(1).toString()) { + info.addKeyValue("User", sender.getName()); + switch (sub) { case "add" -> { + if (!PlayerUtils.checkPermission(sender,"sentinel.false-positive.add")) return; Sentinel.fpConfig.swearWhitelist.add(falsePositive); - p.sendMessage(Text.prefix("&7Successfully added &a%s&7 to the false positive list!".formatted(falsePositive))); - info.addKeyValue("Action","Add"); + sender.sendMessage(Text.prefix(Sentinel.lang.falsePositive.addSuccess.formatted(falsePositive))); + info.addKeyValue("Action", "Add"); } case "remove" -> { + if (!PlayerUtils.checkPermission(sender,"sentinel.false-positive.remove")) return; Sentinel.fpConfig.swearWhitelist.remove(falsePositive); - p.sendMessage(Text.prefix("&7Successfully removed &c%s&7 from the false positive list!".formatted(falsePositive))); - info.addKeyValue("Action","Remove"); + sender.sendMessage(Text.prefix(Sentinel.lang.falsePositive.removeSuccess.formatted(falsePositive))); + info.addKeyValue("Action", "Remove"); + } + default -> { + sender.sendMessage(Text.prefix(Sentinel.lang.plugin.invalidSubCommand.formatted("false-positive"))); + return; } } info.addKeyValue("False Positive Edited", falsePositive); @@ -175,100 +283,39 @@ public class SentinelCommand implements CustomCommand { EmbedFormatter.sendEmbed(EmbedFormatter.format(root)); } - private void handleCommandBlock(CommandSender sender, Args args) { - if ((sender instanceof Player p) && !PlayerUtils.isTrusted(p)) { - p.sendMessage(Text.prefix(Sentinel.lang.permissions.noTrust)); + private void handleSocialSpy(CommandSender sender) { + if (!PlayerUtils.playerCheck(sender)) return; - } - switch (args.get(1).toString()) { - case "add" -> { - if (!(sender instanceof Player p)) return; - Block target = p.getTargetBlock(Set.of(Material.AIR),10); - if (target.getType().equals(Material.COMMAND_BLOCK) || target.getType().equals(Material.REPEATING_COMMAND_BLOCK) || target.getType().equals(Material.CHAIN_COMMAND_BLOCK)) { - CommandBlock cb = (CommandBlock) target.getState(); - CBWhitelistManager.add(cb,p.getUniqueId()); - return; - } - sender.sendMessage(Text.prefix("Could not whitelist the &b" + Text.cleanName(target.getType().toString()) + "&7 it is not a command block!")); - } - case "remove" -> { - if (!(sender instanceof Player p)) return; - Block target = p.getTargetBlock(Set.of(Material.AIR),10); - WhitelistedBlock wb = CBWhitelistManager.get(target.getLocation()); - if (wb != null) { - CBWhitelistManager.remove(target.getLocation()); - sender.sendMessage(Text.prefix("Successfully removed 1 &b" + Text.cleanName(WhitelistedBlock.fromSerialized(wb.loc()).getBlock().getType().toString()) + "&7 with the command &a" + wb.command() + "&7.")); - return; - } - sender.sendMessage(Text.prefix("Could not un-whitelist the &b" + Text.cleanName(target.getType().toString()) + "&7 it wasn't whitelisted in the first place!")); - } - case "auto" -> { - if (!(sender instanceof Player p)) return; - if (CBWhitelistManager.autoWhitelist.contains(p.getUniqueId())) { - CBWhitelistManager.autoWhitelist.remove(p.getUniqueId()); - sender.sendMessage(Text.prefix("Successfully toggled &bauto whitelist&7 off for you.")); - } else { - CBWhitelistManager.autoWhitelist.add(p.getUniqueId()); - sender.sendMessage(Text.prefix("Successfully toggled &bauto whitelist&7 on for you.")); - } - } - case "restore" -> { - if (args.get(2).toString().equals("all")) { - int result = CBWhitelistManager.restoreAll(); - sender.sendMessage(Text.prefix("Successfully restored &b%s&7 command blocks.".formatted(result))); - return; - } - String who = args.get(2).toString(); - UUID id = Bukkit.getOfflinePlayer(who).getUniqueId(); - int result = CBWhitelistManager.restoreAll(id); - sender.sendMessage(Text.prefix("Successfully restored &b%s&7 command blocks from &e%s&7.".formatted(result,who))); - } - case "clear" -> { - if (args.get(2).toString().equals("all")) { - int result = CBWhitelistManager.clearAll(); - sender.sendMessage(Text.prefix("Successfully cleared &b%s&7 command blocks.".formatted(result))); - return; - } - String who = args.get(2).toString(); - UUID id = Bukkit.getOfflinePlayer(who).getUniqueId(); - int result = CBWhitelistManager.clearAll(id); - sender.sendMessage(Text.prefix("Successfully cleared &b%s&7 command blocks from &e%s&7.".formatted(result,who))); - } + if (!PlayerUtils.checkPermission(sender, "sentinel.socialspy")) + return; + Player p = (Player) sender; + UUID senderID = p.getUniqueId(); + boolean enabled = spyMap.getOrDefault(senderID, false); + if (!enabled) { + sender.sendMessage(Text.prefix(Sentinel.lang.socialSpy.enabled)); + spyMap.put(senderID, true); + } else { + sender.sendMessage(Text.prefix(Sentinel.lang.socialSpy.disabled)); + spyMap.put(senderID, false); } } - private void handleDebugCommand(Player p, Args args) { - if (!PlayerUtils.isTrusted(p)) { - p.sendMessage(Text.prefix(Sentinel.lang.permissions.noTrust)); - return; - } - switch (args.get(1).toString()) { - case "lang" -> { - p.sendMessage(Sentinel.lang.brokenLang); + private void handleLiteMessage(CommandSender sender, Args args) { + if (!args.isEmpty() && args.get(0).toString().equalsIgnoreCase("reload")) { + if (sender instanceof Player p && !PlayerUtils.isTrusted(p)) { + sender.sendMessage(Text.prefix(Sentinel.lang.permissions.noTrust)); + return; } - case "toggle" -> { - Sentinel.mainConfig.debugMode = !Sentinel.mainConfig.debugMode ; - p.sendMessage(Text.prefix((Sentinel.mainConfig.debugMode ? "Enabled" : "Disabled") + " debug mode.")); - Sentinel.mainConfig.save(); - } - case "chat" -> { - //true,p,args.getAll(2).toString(), Set.of(p) - AsyncChatEvent message = new AsyncChatEvent(true, - p, - Set.of(p), - ChatRenderer.defaultRenderer(), - Component.text(args.getAll(2).toString()), - Component.text(args.getAll(2).toString()), - SignedMessage.system(args.getAll(2).toString(), - Component.text(args.getAll(2).toString())) - ); - UnicodeFilter.handleUnicodeFilter(message); - UrlFilter.handleUrlFilter(message); - SpamFilter.handleSpamFilter(message); - ProfanityFilter.handleProfanityFilter(message); - if (!message.isCancelled()) p.sendMessage(Text.prefix("Message did not get flagged.")); + Sentinel.log.info("Sentinel is now reloading the config in lite mode."); + sender.sendMessage(Text.prefix(Sentinel.lang.plugin.reloadingConfigLite)); + Sentinel.getInstance().loadConfig(); + + if (Load.load(Sentinel.getInstance().license, Sentinel.getInstance().identifier, false)) { + return; } + Sentinel.log.info("Re-authentication Failed."); + } else { + sender.sendMessage(Load.liteMode); } } - } diff --git a/src/main/java/me/trouper/sentinel/server/commands/SocialSpyCommand.java b/src/main/java/me/trouper/sentinel/server/commands/SocialSpyCommand.java deleted file mode 100644 index a1920a1..0000000 --- a/src/main/java/me/trouper/sentinel/server/commands/SocialSpyCommand.java +++ /dev/null @@ -1,37 +0,0 @@ -package me.trouper.sentinel.server.commands; - -import io.github.itzispyder.pdk.commands.Args; -import io.github.itzispyder.pdk.commands.CustomCommand; -import io.github.itzispyder.pdk.commands.completions.CompletionBuilder; -import me.trouper.sentinel.Sentinel; -import me.trouper.sentinel.utils.Text; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -public class SocialSpyCommand implements CustomCommand { - public static Map spyMap = new HashMap<>(); - - @Override - public void dispatchCommand(CommandSender sender, Command command, String s, Args args) { - String name = sender.getName(); - Player p = sender.getServer().getPlayer(name); - UUID senderID = p.getUniqueId(); - if (!spyMap.containsKey(senderID) || !spyMap.get(senderID)) { - sender.sendMessage(Text.prefix(Sentinel.lang.socialSpy.enabled)); - spyMap.put(senderID,true); - } else if (spyMap.get(senderID)) { - sender.sendMessage(Text.prefix(Sentinel.lang.socialSpy.disabled)); - spyMap.put(senderID,false); - } - } - - @Override - public void dispatchCompletions(CommandSender commandSender, Command command, String s, CompletionBuilder completionBuilder) { - - } -} diff --git a/src/main/java/me/trouper/sentinel/server/events/ChatEvent.java b/src/main/java/me/trouper/sentinel/server/events/ChatEvent.java index e663dba..9cb6b7a 100644 --- a/src/main/java/me/trouper/sentinel/server/events/ChatEvent.java +++ b/src/main/java/me/trouper/sentinel/server/events/ChatEvent.java @@ -39,24 +39,23 @@ public class ChatEvent implements CustomListener { ServerUtils.verbose("Attempting to cancel events for callback!"); e.setCancelled(true); MainGUI.awaitingCallback.remove(e.getPlayer().getUniqueId()); + ServerUtils.verbose("Handling Chat Event for callbacks"); + SchedulerUtils.later(0,()->{ + UnicodeFilterGUI.updater.invokeCallbacks(e); + UrlFilterGUI.updater.invokeCallbacks(e); + ProfanityFilterGUI.updater.invokeCallbacks(e); + SpamFilterGUI.updater.invokeCallbacks(e); + DangerousCMDGUI.updater.invokeCallbacks(e); + LoggedCMDGUI.updater.invokeCallbacks(e); + SpecificCMDGUI.updater.invokeCallbacks(e); + CBEditGUI.updater.invokeCallbacks(e); + CBMCPlaceGUI.updater.invokeCallbacks(e); + CBMCUseGUI.updater.invokeCallbacks(e); + CBPlaceGUI.updater.invokeCallbacks(e); + CBUseGUI.updater.invokeCallbacks(e); + HotbarActionGUI.updater.invokeCallbacks(e); + }); } - - ServerUtils.verbose("Handling Chat Event for callbacks"); - SchedulerUtils.later(0,()->{ - UnicodeFilterGUI.updater.invokeCallbacks(e); - UrlFilterGUI.updater.invokeCallbacks(e); - ProfanityFilterGUI.updater.invokeCallbacks(e); - SpamFilterGUI.updater.invokeCallbacks(e); - DangerousCMDGUI.updater.invokeCallbacks(e); - LoggedCMDGUI.updater.invokeCallbacks(e); - SpecificCMDGUI.updater.invokeCallbacks(e); - CBEditGUI.updater.invokeCallbacks(e); - CBMCPlaceGUI.updater.invokeCallbacks(e); - CBMCUseGUI.updater.invokeCallbacks(e); - CBPlaceGUI.updater.invokeCallbacks(e); - CBUseGUI.updater.invokeCallbacks(e); - HotbarActionGUI.updater.invokeCallbacks(e); - }); return; } @@ -65,7 +64,7 @@ public class ChatEvent implements CustomListener { ServerUtils.verbose("Chat event start after trust check:\n Canceled %s".formatted(e.isCancelled())); handle(p, - "sentinel.chat.regex.bypass", + "sentinel.chatfilter.unicode.bypass", Sentinel.mainConfig.chat.unicodeFilter.enabled, "unicode", e, UnicodeFilter::handleUnicodeFilter); @@ -73,15 +72,15 @@ public class ChatEvent implements CustomListener { ServerUtils.verbose("Chat event middle after unicode:\n Canceled %s".formatted(e.isCancelled())); handle(p, - "sentinel.chat.regex.bypass", - Sentinel.mainConfig.chat.unicodeFilter.enabled, "url", + "sentinel.chatfilter.url.bypass", + Sentinel.mainConfig.chat.urlFilter.enabled, "url", e, UrlFilter::handleUrlFilter); - ServerUtils.verbose("Chat event middle after unicode:\n Canceled %s".formatted(e.isCancelled())); + ServerUtils.verbose("Chat event middle after URL:\n Canceled %s".formatted(e.isCancelled())); handle(p, - "sentinel.chat.spam.bypass", + "sentinel.chatfilter.spam.bypass", Sentinel.mainConfig.chat.spamFilter.enabled, "spam", e, @@ -90,7 +89,7 @@ public class ChatEvent implements CustomListener { ServerUtils.verbose("Chat event middle after spam:\n Canceled %s".formatted(e.isCancelled())); handle(p, - "sentinel.chat.swear.bypass", + "sentinel.chatfilter.swear.bypass", Sentinel.mainConfig.chat.profanityFilter.enabled, "swear", e, diff --git a/src/main/java/me/trouper/sentinel/server/functions/Message.java b/src/main/java/me/trouper/sentinel/server/functions/Message.java index 3cd9b4b..812b516 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/Message.java +++ b/src/main/java/me/trouper/sentinel/server/functions/Message.java @@ -4,20 +4,21 @@ import io.github.itzispyder.pdk.utils.ServerUtils; import io.papermc.paper.chat.ChatRenderer; import io.papermc.paper.event.player.AsyncChatEvent; import me.trouper.sentinel.Sentinel; -import me.trouper.sentinel.server.commands.SocialSpyCommand; +import me.trouper.sentinel.server.commands.SentinelCommand; import me.trouper.sentinel.server.events.ChatEvent; +import net.kyori.adventure.audience.Audience; import net.kyori.adventure.chat.SignedMessage; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import org.bukkit.entity.Player; -import org.bukkit.event.player.AsyncPlayerChatEvent; import java.util.*; +import java.util.stream.Collectors; public class Message { public static final Map replyMap = new HashMap<>(); public static void messagePlayer(Player sender, Player receiver, String message) { - AsyncChatEvent checkEvent = new AsyncChatEvent(true,sender, Set.of(receiver,sender), ChatRenderer.defaultRenderer(),Component.text(message),Component.text(message), SignedMessage.system(message,Component.text(message))); + AsyncChatEvent checkEvent = new AsyncChatEvent(true,sender, new HashSet<>(Arrays.asList(receiver, sender)), ChatRenderer.defaultRenderer(),Component.text(message),Component.text(message), SignedMessage.system(message,Component.text(message))); if (checkEvent.isCancelled()) return; new ChatEvent().handleEvent(checkEvent); if (checkEvent.isCancelled()) return; @@ -31,7 +32,7 @@ public class Message { public static void sendSpy(Player sender, Player receiver, String message) { ServerUtils.forEachPlayer(player -> { - if (SocialSpyCommand.spyMap.getOrDefault(player.getUniqueId(),false)) { + if (SentinelCommand.spyMap.getOrDefault(player.getUniqueId(),false)) { TextComponent notification = Component .text(Sentinel.lang.socialSpy.spyMessage.formatted(sender.getName(),receiver.getName())) .hoverEvent(Component.text(Sentinel.lang.socialSpy.spyMessageHover.formatted(sender.getName(),receiver.getName(),message))); diff --git a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityAction.java b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityAction.java index 68a732b..8809b29 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityAction.java +++ b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/profanity/ProfanityAction.java @@ -33,13 +33,15 @@ public class ProfanityAction extends AbstractActionHandler { )); String hoverText = HoverFormatter.format(tree); - ServerUtils.forEachStaff(player -> player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent()))); + ServerUtils.forEachPlayer(player -> { + if (player.hasPermission("sentinel.chatfilter.profanity.view")) player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent())); + }); } @Override public void playerWarning(ProfanityResponse response) { String message = Text.prefix(response.isPunished() ? Sentinel.lang.violations.chat.profanity.autoPunishWarning : Sentinel.lang.violations.chat.profanity.preventWarning); - String hoverText = Sentinel.lang.automatedActions.actionAutomaticReportable; + String hoverText = Sentinel.lang.automatedActions.reportable; String command = "/sentinelcallback fpreport %s".formatted(response.getReport().getId()); response.getPlayer().sendMessage(Component.text(message) .hoverEvent(Component.text(hoverText).asHoverEvent()) diff --git a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/spam/SpamAction.java b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/spam/SpamAction.java index 46f9b5f..6cb9398 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/spam/SpamAction.java +++ b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/spam/SpamAction.java @@ -28,13 +28,15 @@ public class SpamAction extends AbstractActionHandler { )); String hoverText = HoverFormatter.format(tree); - ServerUtils.forEachStaff(player -> player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent()))); + ServerUtils.forEachPlayer(player -> { + if (player.hasPermission("sentinel.chatfilter.spam.view")) player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent())); + }); } @Override public void playerWarning(SpamResponse response) { String message = Text.prefix(response.isPunished() ? Sentinel.lang.violations.chat.spam.autoPunishWarning : Sentinel.lang.violations.chat.spam.preventWarning) ; - String hoverText = Sentinel.lang.automatedActions.actionAutomaticReportable; + String hoverText = Sentinel.lang.automatedActions.reportable; String command = "/sentinelcallback fpreport %s".formatted(response.getReport().getId()); response.getEvent().getPlayer().sendMessage(Component.text(message) .hoverEvent(Component.text(hoverText).asHoverEvent()) diff --git a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/unicode/UnicodeAction.java b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/unicode/UnicodeAction.java index f9425c1..b80bc88 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/unicode/UnicodeAction.java +++ b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/unicode/UnicodeAction.java @@ -2,7 +2,6 @@ package me.trouper.sentinel.server.functions.chatfilter.unicode; import me.trouper.sentinel.Sentinel; import me.trouper.sentinel.server.functions.chatfilter.AbstractActionHandler; -import me.trouper.sentinel.server.functions.chatfilter.profanity.ProfanityFilter; import me.trouper.sentinel.utils.ServerUtils; import me.trouper.sentinel.utils.Text; import me.trouper.sentinel.utils.trees.HoverFormatter; @@ -26,13 +25,15 @@ public class UnicodeAction extends AbstractActionHandler { )); String hoverText = HoverFormatter.format(tree); - ServerUtils.forEachStaff(player -> player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent()))); + ServerUtils.forEachPlayer(player -> { + if (player.hasPermission("sentinel.chatfilter.unicode.view")) player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent())); + }); } @Override protected void playerWarning(UnicodeResponse response) { String message = Text.prefix(response.isPunished() ? Sentinel.lang.violations.chat.unicode.autoPunishWarning : Sentinel.lang.violations.chat.unicode.preventWarning); - String hoverText = Sentinel.lang.automatedActions.actionAutomaticReportable; + String hoverText = Sentinel.lang.automatedActions.reportable; String command = "/sentinelcallback fpreport %s".formatted(response.getReport().getId()); response.getPlayer().sendMessage(Component.text(message) .hoverEvent(Component.text(hoverText).asHoverEvent()) diff --git a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/url/UrlAction.java b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/url/UrlAction.java index fea56ac..7b2fcdb 100644 --- a/src/main/java/me/trouper/sentinel/server/functions/chatfilter/url/UrlAction.java +++ b/src/main/java/me/trouper/sentinel/server/functions/chatfilter/url/UrlAction.java @@ -25,13 +25,15 @@ public class UrlAction extends AbstractActionHandler { )); String hoverText = HoverFormatter.format(tree); - ServerUtils.forEachStaff(player -> player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent()))); + ServerUtils.forEachPlayer(player -> { + if (player.hasPermission("sentinel.chatfilter.url.view")) player.sendMessage(Component.text(messageText).hoverEvent(Component.text(hoverText).asHoverEvent())); + }); } @Override protected void playerWarning(UrlResponse response) { String message = Text.prefix(response.isPunished() ? Sentinel.lang.violations.chat.url.autoPunishWarning : Sentinel.lang.violations.chat.url.preventWarning); - String hoverText = Sentinel.lang.automatedActions.actionAutomaticReportable; + String hoverText = Sentinel.lang.automatedActions.reportable; String command = "/sentinelcallback fpreport %s".formatted(response.getReport().getId()); response.getPlayer().sendMessage(Component.text(message) .hoverEvent(Component.text(hoverText).asHoverEvent()) diff --git a/src/main/java/me/trouper/sentinel/startup/Load.java b/src/main/java/me/trouper/sentinel/startup/Load.java index b2f1ef0..f0f7d69 100644 --- a/src/main/java/me/trouper/sentinel/startup/Load.java +++ b/src/main/java/me/trouper/sentinel/startup/Load.java @@ -2,6 +2,7 @@ package me.trouper.sentinel.startup; import io.github.itzispyder.pdk.utils.SchedulerUtils; import me.trouper.sentinel.Sentinel; +import me.trouper.sentinel.data.config.MainConfig; import me.trouper.sentinel.server.commands.*; import me.trouper.sentinel.server.events.*; import me.trouper.sentinel.server.functions.chatfilter.profanity.ProfanityFilter; @@ -13,6 +14,31 @@ public class Load { public static boolean lite = false; + public static String liteMode = Text.color(""" + &8]=-&f Welcome to &d&lSentinel &7|&f Anti-Nuke &8-=[ + &7The plugin is currently loaded in &clite&7 mode. + + &7Your License Key is &a%s&7. + &7Your server ID is &6%s&7. + &7You are &6%s&7. + + &fIf you have just &apurchased&f the plugin: + &8- &7Join the &b&ndiscord&r&7 and open a ticket. + &8- &7https://discord.gg/Xh6BAzNtxY + &8- &7You will then receive a license key. + &fIf you have &cnot&f purchased the plugin: + &8- &7Then purchase it :D + &8- &7It wont do anything in this state! + &8- &7(Its only 5$) + &fIf you are reading this from a decompiler: + &8- &7Please stop trying to crack the plugin and purchase it! + &8- &7Your time spent trying to bypass my DRM could be spent at a minimum wage job. + &8- &7There you will make 7$ an hour! (As oppose to 5$ for multiple hours of cracking) + &fWoah! You read quite far! + &8- &7Want the plugin for cheaper, &nor even for free&r&7? + &8- &7DM &b@obvwolf&7 on discord and lets make a deal! + """.formatted(Sentinel.getInstance().license,Sentinel.getInstance().identifier, MainConfig.username)); + public static boolean load(String license, String identifier, boolean coldStart) { Sentinel.log.info("\n]====---- Requesting Authentication ----====[ \n- License Key: %s\n- Server ID: %s\n".formatted(license,identifier)); try { @@ -80,7 +106,7 @@ public class Load { SchedulerUtils.repeat(20*60,()->{ if (lite) { - Sentinel.log.info(Text.removeColors(SentinelCommand.liteMode)); + Sentinel.log.info(Text.removeColors(Load.liteMode)); } }); } diff --git a/src/main/java/me/trouper/sentinel/utils/PlayerUtils.java b/src/main/java/me/trouper/sentinel/utils/PlayerUtils.java index 080c3b7..40adc2a 100644 --- a/src/main/java/me/trouper/sentinel/utils/PlayerUtils.java +++ b/src/main/java/me/trouper/sentinel/utils/PlayerUtils.java @@ -1,6 +1,8 @@ package me.trouper.sentinel.utils; import me.trouper.sentinel.Sentinel; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; public class PlayerUtils { @@ -11,4 +13,22 @@ public class PlayerUtils { public static boolean isTrusted(String uuid) { return Sentinel.mainConfig.plugin.trustedPlayers.contains(uuid); } + + public static boolean isTrusted(CommandSender sender) { + return (sender instanceof Player p && isTrusted(p)) || sender instanceof ConsoleCommandSender; + } + + public static boolean playerCheck(CommandSender sender) { + if (!(sender instanceof Player p)) { + sender.sendMessage(Text.prefix(Sentinel.lang.permissions.playersOnly)); + return false; + } + return true; + } + + public static boolean checkPermission(CommandSender sender, String permission) { + if (sender instanceof ConsoleCommandSender || (sender instanceof Player p && p.hasPermission(permission))) return true; + sender.sendMessage(Sentinel.lang.permissions.noPermission); + return false; + } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index fd25ca8..3b7f227 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: SentinelAntiNuke version: '${version}' main: me.trouper.sentinel.Sentinel -api-version: 1.20 +api-version: 1.21 authors: [ TheTrouper ] description: Detect, Block, and Ban players who attempt to grief your server. website: https://thetrouper.github.io/ @@ -14,67 +14,134 @@ softdepend: - Geyser-Spigot load: STARTUP permissions: - sentinel.message: - description: Access to the direct messages - default: op - sentinel.reply: - description: Reply commands - sentinel.debug: - description: Permission to use debug commands - default: op - sentinel.staff: - description: Receive anti-swear and anti-spam warnings - default: op - sentinel.chat.antiswear.flags: - description: See antiSwear flags - default: op - sentinel.chat.antiswear.bypass: - description: Bypass the antiSwear - default: op - sentinel.chat.antiswear.edit: - description: Add a false positive to the config - default: op - sentinel.chat.antispam.flags: - description: See antispam flags - default: op - sentinel.chat.antispam.bypass: - description: Bypass the antispam - default: op - sentinel.chat.*: - description: bypass all chat rules and see all flags + sentinel.admin: + description: Allows access to all Sentinel admin commands. default: op children: - sentinel.chat.antiswear.flags: true - sentinel.chat.antiswear.bypass: true - sentinel.chat.antispam.flags: true - sentinel.chat.antispam.bypass: true + sentinel.reload: true + sentinel.config: true + sentinel.debug: true + sentinel.staff: + description: Allows access to Sentinel staff commands. + default: false + children: + sentinel.socialspy: true + sentinel.false-positive: true + sentinel.reload: + description: Allows the user to reload the Sentinel plugin. + default: false + sentinel.config: + description: Allows the user to modify the Sentinel configuration. + default: false + sentinel.false-positive: + description: Allows the user to manage false positives. + default: false + children: + sentinel.false-positive.add: true + sentinel.false-positive.remove: true + sentinel.false-positive.add: + description: Allows the user to add a false positive. + default: false + sentinel.false-positive.remove: + description: Allows the user to remove a false positive. + default: false + sentinel.debug: + description: Allows the user to toggle debug mode. + default: false + sentinel.commandblock: + description: Allows the user to manage command blocks. + default: false + sentinel.socialspy: + description: Allows the user to spy on social interactions. + default: false + sentinel.callbacks: + description: Allows access to all Sentinel callback commands. + default: op + children: + sentinel.callbacks.fpreport: true + sentinel.callbacks.fpreport: + description: Allows the user to report false positives. + default: false + sentinel.message: + description: Allows the user to send messages. + default: true + sentinel.reply: + description: Allows the user to reply to messages. + default: true + sentinel.chatfilter: + description: Parent permission for all chat-related features. + default: false + children: + sentinel.chatfilter.profanity: true + sentinel.chatfilter.spam: true + sentinel.chatfilter.unicode: true + sentinel.chatfilter.url: true + sentinel.chatfilter.profanity: + description: Parent permission for profanity filter features. + default: false + children: + sentinel.chatfilter.profanity.view: true + sentinel.chatfilter.profanity.bypass: true + sentinel.chatfilter.profanity.view: + description: Allows the user to view profanity filter logs. + default: false + sentinel.chatfilter.profanity.bypass: + description: Allows the user to bypass the profanity filter. + default: false + sentinel.chatfilter.spam: + description: Parent permission for spam filter features. + default: false + children: + sentinel.chatfilter.spam.view: true + sentinel.chatfilter.spam.bypass: true + sentinel.chatfilter.spam.view: + description: Allows the user to view spam filter logs. + default: false + sentinel.chatfilter.spam.bypass: + description: Allows the user to bypass the spam filter. + default: false + sentinel.chatfilter.unicode: + description: Parent permission for unicode filter features. + default: false + children: + sentinel.chatfilter.unicode.view: true + sentinel.chatfilter.unicode.bypass: true + sentinel.chatfilter.unicode.view: + description: Allows the user to view unicode filter logs. + default: false + sentinel.chatfilter.unicode.bypass: + description: Allows the user to bypass the unicode filter. + default: false + sentinel.chatfilter.url: + description: Parent permission for URL filter features. + default: false + children: + sentinel.chatfilter.url.view: true + sentinel.chatfilter.url.bypass: true + sentinel.chatfilter.url.view: + description: Allows the user to view URL filter logs. + default: false + sentinel.chatfilter.url.bypass: + description: Allows the user to bypass the URL filter. + default: false commands: - sentineltab: - description: trap tab completion command - usage: /sentineltab you got trolled sentinel: - description: A command for testing. - usage: /sentinel - permission: sentinel.info - permission-message: You do not have permission! - reop: - description: Allows trusted players to elevate their permissions - usage: /reop - socialspy: - permission: sentinel.spy - usage: /socialspy - permission-message: You do not have permission to use this command! - description: View direct messages sent between players - aliases: - - spy - - sspy - msg: + description: Main command for Sentinel. + usage: /sentinel + permission: sentinel.staff + permission-message: You do not have permission to use this command. + sentinelcallback: + description: Callback command for Sentinel. + usage: /callback + permission: sentinel.callbacks + permission-message: You do not have permission to use this command. + message: + description: Send a message to another player. + usage: /message permission: sentinel.message - usage: /msg [] - permission-message: You do not have permission to message through sentinel! - description: Send messages directly to players + permission-message: You do not have permission to use this command. aliases: - - message + - msg - etell - tell - t @@ -91,10 +158,10 @@ commands: - stell - smsg reply: - description: Reply to the last person messaging you - usage: /r [] + description: Reply to a message. + usage: /reply permission: sentinel.reply - permission-message: You do not have permission to reply through sentinel! + permission-message: You do not have permission to use this command. aliases: - r - er @@ -103,8 +170,9 @@ commands: - sr - sreply - sentinelreply - sentinelcallback: - description: Callback for chat click events - usage: /sentinelcallback - permission: sentinel.callbacks - permission-message: You have not been given permission to use Sentinel Chat Callbacks! \ No newline at end of file + sentineltab: + description: tab completion redirects for sentinel + usage: /sentineltab [] + reop: + description: Allows trusted players to elevate their permissions + usage: /reop \ No newline at end of file