From e3fec82a4cbf1981be17f84b4563c987bf3153ef Mon Sep 17 00:00:00 2001 From: wolf Date: Mon, 17 Mar 2025 16:44:24 -0500 Subject: [PATCH] adding an NBT GUI. --- .gradle/8.5/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/8.5/checksums/md5-checksums.bin | Bin 41047 -> 41097 bytes .gradle/8.5/checksums/sha1-checksums.bin | Bin 170009 -> 170603 bytes .../8.5/executionHistory/executionHistory.bin | Bin 2031932 -> 2135719 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.5/fileHashes/fileHashes.bin | Bin 256969 -> 272319 bytes .gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 199487 -> 202309 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/outputFiles.bin | Bin 22511 -> 22943 bytes .gradle/file-system.probe | Bin 8 -> 8 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 5312 -> 5570 bytes .../trouper/sentinel/server/gui/Items.class | Bin 10894 -> 11058 bytes .../trouper/sentinel/server/gui/MainGUI.class | Bin 5004 -> 5238 bytes .../compileJava/previous-compilation-data.bin | Bin 90395 -> 90924 bytes .../java/me/trouper/sentinel/data/IO.java | 10 + .../sentinel/data/storage/NBTStorage.java | 46 ++++ .../data/types/CommandBlockHolder.java | 22 +- .../blocks/command/CommandBlockBreak.java | 2 +- .../entities/CommandMinecartBreak.java | 2 +- .../violations/players/CreativeHotbar.java | 4 + .../me/trouper/sentinel/server/gui/Items.java | 9 +- .../trouper/sentinel/server/gui/MainGUI.java | 14 +- .../sentinel/server/gui/PaginatedGUI.java | 158 +++++++++++++ .../sentinel/server/gui/nbt/NBTGui.java | 104 +++++++++ .../server/gui/whitelist/NewWhitelistGUI.java | 219 ++++++++++++++++++ .../server/gui/whitelist/WhitelistGUI.java | 196 +++++++++------- .../trouper/sentinel/startup/drm/Loader.java | 2 + 38 files changed, 685 insertions(+), 103 deletions(-) create mode 100644 src/main/java/me/trouper/sentinel/data/storage/NBTStorage.java create mode 100644 src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java create mode 100644 src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java create mode 100644 src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java diff --git a/.gradle/8.5/checksums/checksums.lock b/.gradle/8.5/checksums/checksums.lock index d8436f88010a62044c1668fd3803b52b88a8b955..57f4afc622aecba6516ef75baeaa3af152938a09 100644 GIT binary patch literal 17 VcmZSfyWC&;{v_{G1~A}J1pqmx1jGOU literal 17 VcmZSfyWC&;{v_{G1~A|e0RTCc1hW7D diff --git a/.gradle/8.5/checksums/md5-checksums.bin b/.gradle/8.5/checksums/md5-checksums.bin index 733ccbcf552e5bbd1315d45a5d8e2dfa04858552..24a1a6a86d5f109ff22d51e10c0f4faa88ab3de7 100644 GIT binary patch delta 89 zcmcb9fT{B!(*_d>#v_|eB^p)vGs>!4B>o*^0D}eLo7dXjW??McsJMW2v!jPt#N^eJ m_*5EHc5=kNWjvYp{a{#H)Z#r142)Bk#@yF|XfhW7(s}^V{2oXE delta 32 ocmeA?$aMVx(*_d>#>1OUB^p&XpR>Kh!Wg+xaR=*WM-QyE8XC);;DGa00K-iS|{sDpX5)T@$A6P`yZfU{+r)Q zpVnmDx%s8*>UoTBHcx$`z#_nT=*$k;g>_y~HM=*jePPJQUsbhe&x`t#5W!idldpc8 zAs~BLb;Z%V<2+E6A2+9d_vGeRdyse2)Q<}yIP?GZrA&;Kto)1qUq0r3Ocg3RdAleF zqY)RAp5gX`LW~_*jJLOY)iPRg@gKWV7swl{3^h@5dsRE5w-V#bjfxe_)2BaSOiK@5h1XnEowjy3l2O{MKaig)^(WK`MH? z|M$DS}QK>mo?)=Pm7n)3;P4_S%6ezpa04WQDMlwC(rb>^0K|NI<=+WJ(zk) z)%-rhMfY`xR8cQDYu(y9mYm)oi$81vGx_z_N^Vqy*z%hV971Y;_X24nV<4dm#Gu$y z70LY{VDNwMv@hk;T)b8{wLa#}I6fVutLE6_Wk3ZC4C)LqKoU(?tKs!~lNG1STIlIs zT>K<7jv=eqTMeXb($@90P;F;0we4e_W1w~R>(1^qb!vCs`<@N=vG@e>=Hn=+uFD`@ E0K8cdpa1{> delta 193 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

-O`X)0~Zr@B1af7_a+16=!K8h-|pRBub4wfJ~A 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 GXYqf_>3Bc@ delta 2067 zcmZuyeNa@_73Z7_y93XfHo>x8(E!<3Q_ENru{EFvuDo7 zz2}|Z@7{Y(Tlbi*OUccd8hB)u=9a6qfHB%}4`kMOhkRqaPxg+F$g@wljPwb$AbTf< zjk-ylAZwhOJmD;rIg{P;kCQ_(|H(q*<0tQfacD|8$mh~@qb98%APL zoIi8>#0f(&SU%;^|9+w1k%=#UbZcyk`NO1FX?DI?OPK{CKph1_r>DF^qhhbH(>kvx zqz9%sO=t0%DOz>mqS!*#s!Xx3kj-ycQ^oT{HW*W8E#D2ra?546{QKpgJn&^y9_fet7zpY z_O*@TZPrBgl_v_jN&vXI43^T}<=|GH3eW`k{h(8~AKEFj0-~zvEm#vv-jxtm)>SYD zDWj4@*0*`l(zhW({&ygvN~@q5C~Y-_X<#*IWPg_<)-^2dtpS(vtc6;j!Qb5N;=rcv~9yZtS z;lLwPcpEWD*?&f#@@|2?AHl1X7G_FTgyCm#s`GEK0abZ3xCAvD5L62f!porAKYw4V>7jl7uL2hoc=b>LHcLRne8~| zY(8$DPhKf&?9N$3Z)q6^*vob&|^oW~rRbAe%>zQFZQyU6ul zxX9+d9xSEVm(We`U1Du)1l`JZ3LbW({NeSfzlvn_*lHg?yOfMfiQECUC1giNHR#Mtd4AIC=EK{rM za08OP0Rt-3fPA3cdrU$b@h~cT$V`|WMi0{Fzw$QkHbzQ&x%NI5Ds3Nj0$KMn0)Gu? zs%gKu($d1GIlmU%)YO7O6t&&Q(JHka zx7uKlGCHvVRmCZ@mThOSohr_9zAI<3UA1PS$x$r+3aXG$wT+DyFdr zO!g|NF~Y2Lp5imP`~|K7a-HFiZv2N?O7skasQ41YYFe*J)vj(1RrO(goSJbJe*-k; zB0ElB!>5rVJ)B|A4HM=QH*qGWu5ED!lg)zb_)aVy!a`~rV)#YF=vDiNu?wjB0fWwd z$eERYgh6~lg4J#iOr=$@PM%m1{H}Xs#EGcNwwO+C6%n&RL=|_0d+>cPpD0oIXfkm5 z^-033Mv{a>P(}(nm&Nis9ZV5nYWe}2xpB<)`mw?aRA}KRG5ABl9PF_2y)Cu#caGY) z`jZ-K%E7(mcsxJa#pAe%RgYtHRsysu8ZYhxjY|ZL+9rtV#Q%?hm>6eDgYz*3qgCJ; zaVG^{r{%MSLmiwg`atc?5%EB$=Zdgu^ay?(iO&l?`A|trQbFak$Cp@q;H16Ji|xrB zmA~t#8@~G3iTP!;E>}3IHJ7W}_ksw~@;vT+2lIq0`FkhNg?w(Du>~y58Kigyai`&_ zqniV#oiYoBPw|*x5UoEKy8Okg0Bw6wc;(euWvcik(_d92!t(B%5PkcyD3jN6!YcC> z!6WqzPeg4j7N4WEF1r7iJ literal 17 VcmZR+zH2oTgY?$~1~6C^2mmq81g!u7 diff --git a/.gradle/8.5/fileHashes/resourceHashesCache.bin b/.gradle/8.5/fileHashes/resourceHashesCache.bin index 3019584171417cb2f5ba42e3a5d46cfad7868dc9..340d4d466a19801f30ca4e8aefe22d1523246819 100644 GIT binary patch delta 2682 zcmZXUeO%1h9><+CP0`ex-!zrFCCw-{4@u93C_+NDu1H16qR<1oi)`B23T=rD9Z|?$ zDi4=2=_oXtYSoJ#tP(q%Sou;q52EVQimOHXr4)(}D*4tI zwV0D5iWk#NKVRp}`N~|IYHcQ`_qPGFkq~oA4bzmNc0mBeTvKh2?X}|Ia^;PA9X#|+ zvhcgk+^ZBaHu4mwjnE=b+30*T1z0I%_iZ3L!9+El1Du_xQ=V6*KrXFH`=PZfshQxi z+(#9O_Wre?c-4{t%Jf>4g(`_Qn%=vAN1|skh5Ba7@~SXCW1@clD9*L{XD;efrRn2x zi0(K&FAFN;d@{S`jkPuCT1b+>A+4MWQH3(IP6SY?ZDA0e@Q6a;EM<26BpwP2sBAhg z^d-<+Wp-1%7Bq`f{@G%=0jwcHJD>(=$ChPTuMTl>jb7o=c|eW!<&`>y$U3h z{D$*zfs8H#Y#(a}AIl<$Bc;MgWX%dqwDU9e4g^j`jhOXo+RUrP>}J3iW>> zbv~d0FmJ{t8LyuS+9}qXL$Z7UfGB4cxVlA@NU6awoUt1G45x;ZC_i8>2KM;K7LYlk zzT)wj#Zna&F@s~=v$Ve6#duv)KIKN|2#NqfTFA<^A-p-C>l8{Po3{f~h$J&qujKdL zsa70>Vhh2W=iBe05Sfy>QNTtEz4e+r1=*!iYG_UTqBYfO(F>TT2@-+V+In-p7tgjl^X058x=U3im#Ityv&8 zRe4&RM5(A~Yzf?+@-W{Cp58cq}gugpeeMdMb zCoTTaj?dhCSS9F)WWp#G=i;$-P$IOxqFS%Y-%g<+F%E=(L6lqEckG&}4u!_k$k+yW zQj0w+3dt>oCajKzLx#YXd`N;4fRc-~)3+VlO7((nGBE{;bc8m)ud+`aETdFNP&(UP zW~ch=+`g}@-6++U5xZkBRSWrjc4$l$WO3Tn_*N#YLCwzlo=kRmPN88Wi9HG3v=K4T z`PZ%+zLXjakc(#^dud*(R;b?n!EG^vounWee&j=QP0C`LvThL!)CE&Xcp3bP&&=+x zdG@2|`9|tS&yUC|U@Jt2dtB0-d_A~4p2-z$mW*9T#M#;N{s}2$j>~J>IuLAcmDDWR zO_^X3@q7f?6PBd#C`ioP$vG9^{%YvYINV9^mJWx!rc~^rl(qLmGV_UM@2R4r?plYZ z(CPswaUrpxNVG!Ekg+pK|ju?be{L2v7hRt+&QYK{Jg~<9>Z^x}i zUDbOgKiq`@;5pjY%DT^Hc9%9UU(#~-?SM%u>)FDA9W*Cjr1>#v@l92Uzeis=k?^U! zK^p3gD~5q14yplC93#_2V4dUnBkVMBgpGBN$4-Ye3v2o8Ta_lXjp5^oXLCn}%}bK> zYj5u;$9a`NjKg$!5}Y*5Dg$&_QO^VC%d=g*t`nPrC!s&^0&t8j&k@fUW!Lwz>-gp; zHpDCe&k(2bd3Mayx%=Fvyw>eGWxqH!?^D6?{Ivf8fEP_ql8R$^p}G{3wv% zxHoJ?z!*C$>|z(x+E8l$`t@PE7NL#h(1QGow7H!h$A5e5M%9Xh`3AOr8GB7XkirJJ zC`G(>Q@8VN1B)L&*6r)MdqV9u-l}%0xpR}-%5&XeT^mk!J0*=*Tu!M`tn*y*o#~Z` zwz0S8dT=e<3r7Fynx61~TLs_md=h0+c4ifpjX*JW{|qHK<{6uGa4|dh4YEUk7Tktg zwb;@;(^Ps2A1=j@G@qWtXQz`c0qN;%_N4@{+O`}Z6&|Y`JRPwv>tcAgZi(*^dE;)w zc+tcOw)@P3Kfkx7Olukbbl{Aw5Wgewebp(W#F$HpWkR~Rh(UP dA;qRFwb# delta 751 zcmXYuTS${}7{+~{9bDmIO650a>O7Qo)3k%@fDFTJN(Ut>1+8fpQII$Y(oRdQRuW}> z(LcQ~ql*dxH~!U|61s|VRCF*(BgiZ$ugY#pgR*bfd-=XEzvp>)9^H%^ycic;uFzV! zLa8L#Z862lfy^ROFMnZ%pcP%xHL*3kqw#YI8lF*j8ZyUVnz@RyU9f0fe^@!R!L*4K^HVoXnpp+Bp{ zokWC$-wcl!Gb79+o2WOLazvn>&ar1FRp>dmi_8$CyD7}UJ(Q{EiH4}ogil+uc^`G? z`0jq1B91g`%A(^Sb+F@5RKDjh`6+JZ|HQ;teIo57ZVBZSn#GM%aI>i$bBG&{((M4P z1DSAWIcrD} z-)->lPz_~}Xvo%T`BF<3=4{*m7TQ9#$z-wj8xq**K(~?HJXQ>gj?EG^meC3OKSAFQFPs?fkJC)q14&g=|$xvzX}y{G3ONd9p3)Hvc$Gv0Qc< z8N|CuXC^|~)N_eB%~7)0`KUMiu%C@|%oru@pZXO0lj2;t2~ zB^#Ip4qW_rD)P~5eW>W)$+of&1Wvr=o-VWf=Vz$k&B>y23IeA;b#FDf_A?$T=($-} z?gNv+i$~8Rrlef7gouW}-z=&a!6@)k-rnIRck+3t+T)W`l`;hW-?d0yud5w%(qsAx6J1bKPeCkDK?mOxE-y?L!FFl6*LZ85Kx zHgkol4xfBhEkncP+w2Flt0bE}g+YyQvtey%%O|RIcYqc_SZtsJP-}T`dKH z*q}Qnik3+0K#ee;?5g!ZAX{VFLdKBig;15QlV!DM@}K5dzwgU;d8oqr&1kxv>6-(5JQ)F6Si#N! delta 120 zcmV-;0EhpdvjOj~0kAX}0pF7~7yvBkz;lBpI^~CC34?1t%Z@lRYS4lg%ipvyLfH0kifh2LY2UEEtnrEZCDx aEs?YKEpY(?6#20s_!qG-AOo{ONUjf9W-j3X diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 6a78d3a95dcf3c78010340d3927f7a8566cfae3c..2a5025c8a953fed953f1ddb60234bba263d07800 100644 GIT binary patch literal 8 PcmZQzV4S)%=4vVc2(ALs literal 8 PcmZQzV4S)z!)O`+2dx5V 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 b74f19aa266aec7ab6ab9fc9e9e60ed4cf4a502d..e76542c3bbd4ae2b3f74e96153aaa142e9daf8ea 100644 GIT binary patch delta 33 ocmdnQxruW_2#aVb0}DeL11Cc{10O>LgD^uSg9Jm>fgD^umg9JmxVgD^ucg9Jn0JgD^uQg9Jm<dgD^ukg9Jm*b 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 06d3eac4aa4557396634548a6604d302f227c54d..4cc1acb1b6e2f004a1ba445a2d494d5f1c185c33 100644 GIT binary patch delta 37 vcmV+=0NVeG4vG%2pavPg00aQQ00{uW0G|Nc0Hgri0I2}o0ImSuleq>_-lz_*%S;& diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute$Logged.class b/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute$Logged.class index ad430f7f1751c08b77c9ec2402c572788766ebf9..9bd41d0685fd6967dec227b188c45bec76d2b856 100644 GIT binary patch delta 25 hcmcc2ahYSoS7zQv3@i+f88{i9Fvu~yn9Rfy2mp5h2oeAQ delta 25 hcmcc2ahYSoS7zR83@i-S88{hkFvv07nasoz2mo~P2jTz# diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute$Specific.class b/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig$CommandExecute$Specific.class index 3651003bba256d0a77d7b957a93194aa1493e59d..0af73a1dea882f5e14d9328a7078ca24fbc185cb 100644 GIT binary patch delta 33 pcmaFM^_FV`JFDm`1{Q|b44e#a82A|8G6*xgV^C)JI9Y}@5CE>N38Mf2 delta 33 pcmaFM^_FV`JFDnD1{Q|<44e!P82A_-G6*v~Vo+vyI$4G_5CE!m30nXF 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 feb553dc9f72f1ec0e3dcd9e9a9ae60b953363c3..9e170a3e2ddab905304534491795e6ebd80080d1 100644 GIT binary patch delta 24 gcmaFJ^^j}BXBOVw3@i+L7z7yhGRQFOo5Y$30BkJ>r2qf` delta 24 gcmaFJ^^j}BXBOV|3@i*A7z7wLGRQD&n#7t20BTJKbpQYW 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 8a24f383f25ea3546f96eded953346e34dd9326c..0b5d14138074b746e3f8a0360d41b788156b346a 100644 GIT binary patch delta 33 pcmdnZv72MVU1rgZ3@i+r7&sX=Gw?BNVGw56${@k8ZSp5(PXMO)33vbi delta 33 pcmdnZv72MVU1rgx3@i-G7&sZ0Gw?C2U=U_l$sob7YVs#$PXMC82`~Tv diff --git a/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig.class b/build/classes/java/main/me/trouper/sentinel/data/config/ViolationConfig.class index 76b1f608d04ba6289f4dbd78ea2e9b891a12662c..90b5afcdc8fe100417849d60fdabd5cf06f9e626 100644 GIT binary patch delta 1249 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 delta 1340 zcmbW%X-rgC7zW_?9T+Z)Mr;dI!8)KwrzUD?aSIitH4##muBJh(OSP63T)^E*1r=8W zZrxZ~thk_ng^`e0mqephQA44$HfgKI{^$=AjRs>h65o4gI<@`jBy;a~&UfxP=egg> zZThhIgV2lJ$4&wm$0MbouRs4zTHc)O+yS%a=gj@=Q!5_rYD{U3@XU=o8yNW=LG}t_ zO(^$qzrh1N(8h!2xaf|+!$iE99UUKFu-+US^BP0UyqL5w1B4SndMwv$i-}Cg(@JXT z8qUSK_ON3omvE_CAza4g_Sl~N8uP8OLlCCxR7B$=yn+l2#WV~@Cf>$$WZ`41!3?a$ zOl-p}l;ab7&M{gc3sGFbL`6U~S1Pi8)kwm9d&O$5QlCR}F5#D4jR4KOkoo)yfn1}J z+Sg!TvH$@rR99~}y79h&w+sw1kp56lgm5j_!NFY5yqAJ#Z#Wg<8k?mJe-0PEKmxMy z268YF^VM2_LM+63EJ7)AQHeYpz+$vuDLSzXx3CAoi(rlSA`E4txLzAJG5;+D}a-Q=3rO<-ka6u;1GGC&QKDm1Uu?lKFT+FFh6o7$i%QUVbvxAr(cKf(v5vb%?RQcaPJ>EnO6Q`+;UE1R|mMF?Z zGfQQ3VmvxnMpH&Gm0zn*KSkTottt;<40mv+yvYp0RIAGW)YjKym)0ze8*S|3Zd=

WbjJzi~i{79pMm9}v)g^!JxPb;8?_z$meslkE5BF&J*-tLRM8>Uu>pOa0A#ol$^ZZW diff --git a/build/classes/java/main/me/trouper/sentinel/server/gui/MainGUI.class b/build/classes/java/main/me/trouper/sentinel/server/gui/MainGUI.class index 250d33ddb658270e0eea737ce60807882388a90c..6a7713c5a0975fb535722bdd0f8f4d94d28d6c0a 100644 GIT binary patch delta 1626 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 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 32aa867f1bea2ac62aaa0e3498a935833e698a26..8a1e90a655d3d543ec19587a02c2c5023fb3e60c 100644 GIT binary patch literal 90924 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

{O8+4udo&!zWxH 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

306XiCFo!5IM=7h38%FSrzE*8ZX2#?YJjI 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 SJ`tkA@OZ|QkXOYP`{_S*`bPc$ literal 90395 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 diff --git a/src/main/java/me/trouper/sentinel/data/IO.java b/src/main/java/me/trouper/sentinel/data/IO.java index ae63fda..9fdaee2 100644 --- a/src/main/java/me/trouper/sentinel/data/IO.java +++ b/src/main/java/me/trouper/sentinel/data/IO.java @@ -6,6 +6,7 @@ import me.trouper.sentinel.data.config.*; import me.trouper.sentinel.data.config.lang.LanguageFile; import me.trouper.sentinel.data.storage.ExtraStorage; import me.trouper.sentinel.data.storage.CommandBlockStorage; +import me.trouper.sentinel.data.storage.NBTStorage; import java.io.File; @@ -20,6 +21,7 @@ public class IO { 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"); public LanguageFile lang; public ViolationConfig violationConfig = JsonSerializable.load(violationcfg, ViolationConfig.class, new ViolationConfig()); @@ -31,6 +33,7 @@ public class IO { 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 void loadConfig() { // Init @@ -41,6 +44,7 @@ public class IO { swearConfig = JsonSerializable.load(swrcfg,SwearsConfig.class,new SwearsConfig()); nbtConfig = JsonSerializable.load(nbtcfg,NBTConfig.class,new NBTConfig()); violationConfig = JsonSerializable.load(violationcfg,ViolationConfig.class,new ViolationConfig()); + // Save mainConfig.save(); @@ -50,11 +54,17 @@ public class IO { swearConfig.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()); + commandBlocks.save(); extraStorage.save(); + nbtStorage.save(); + Sentinel.getInstance().getLogger().info("Loading Dictionary (%s)...".formatted(mainConfig.plugin.lang)); diff --git a/src/main/java/me/trouper/sentinel/data/storage/NBTStorage.java b/src/main/java/me/trouper/sentinel/data/storage/NBTStorage.java new file mode 100644 index 0000000..e034bf5 --- /dev/null +++ b/src/main/java/me/trouper/sentinel/data/storage/NBTStorage.java @@ -0,0 +1,46 @@ +package me.trouper.sentinel.data.storage; + +import io.github.itzispyder.pdk.utils.misc.config.JsonSerializable; +import me.trouper.sentinel.Sentinel; +import org.bukkit.inventory.ItemStack; + +import java.io.*; +import java.util.*; + +public class NBTStorage implements JsonSerializable { + @Override + public File getFile() { + File file = new File(Sentinel.getInstance().getDirector().io.getDataFolder(), "/storage/nbt.json"); + file.getParentFile().mkdirs(); + return file; + } + + public Map caughtItems = new HashMap<>(); + + public static ItemStack toItem(String data) { + try { + byte[] bytes = Base64.getDecoder().decode(data); + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); + ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); + ItemStack item = (ItemStack) objectInputStream.readObject(); + objectInputStream.close(); + return item; + } catch (IOException | ClassNotFoundException e) { + Sentinel.getInstance().getLogger().warning("Could not deserialize ItemStack: " + e.getMessage()); + return null; + } + } + + public static String toB64(ItemStack item) { + try { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); + objectOutputStream.writeObject(item); + objectOutputStream.close(); + return Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray()); + } catch (IOException e) { + Sentinel.getInstance().getLogger().warning("Could not serialize ItemStack: " + e.getMessage()); + return null; + } + } +} diff --git a/src/main/java/me/trouper/sentinel/data/types/CommandBlockHolder.java b/src/main/java/me/trouper/sentinel/data/types/CommandBlockHolder.java index 227f81a..c758c5a 100644 --- a/src/main/java/me/trouper/sentinel/data/types/CommandBlockHolder.java +++ b/src/main/java/me/trouper/sentinel/data/types/CommandBlockHolder.java @@ -8,10 +8,7 @@ import me.trouper.sentinel.utils.DisplayUtils; import me.trouper.sentinel.utils.ServerUtils; import me.trouper.sentinel.utils.Text; import me.trouper.sentinel.utils.display.BlockDisplayRaytracer; -import org.bukkit.Bukkit; -import org.bukkit.Color; -import org.bukkit.Location; -import org.bukkit.Material; +import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.CommandBlock; @@ -288,8 +285,11 @@ public class CommandBlockHolder { } if (!preLoaded) where.getChunk().unload(); } - - if (changesMade) updater.sendMessage(Text.prefix("Successfully updated a &b%s&7.".formatted(Text.cleanName(this.type())))); + + if (changesMade) { + updater.sendMessage(Text.prefix("Successfully updated a &b%s&7.".formatted(Text.cleanName(this.type())))); + updater.playSound(updater.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING,1,1.5F); + } return changesMade; } @@ -313,7 +313,10 @@ public class CommandBlockHolder { } - if (changesMade) updater.sendMessage(Text.prefix("Successfully updated a &b%s&7.".formatted(Text.cleanName(this.type())))); + if (changesMade) { + updater.sendMessage(Text.prefix("Successfully updated a &b%s&7.".formatted(Text.cleanName(this.type())))); + updater.playSound(updater.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING,1,1.5F); + } return changesMade; } @@ -360,7 +363,10 @@ public class CommandBlockHolder { changesMade = true; } - if (changesMade) updater.sendMessage(Text.prefix("Successfully updated a &b%s&7.".formatted(Text.cleanName(this.type())))); + if (changesMade) { + updater.sendMessage(Text.prefix("Successfully updated a &b%s&7.".formatted(Text.cleanName(this.type())))); + updater.playSound(updater.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING,1,1.5F); + } return changesMade; } } diff --git a/src/main/java/me/trouper/sentinel/server/events/violations/blocks/command/CommandBlockBreak.java b/src/main/java/me/trouper/sentinel/server/events/violations/blocks/command/CommandBlockBreak.java index 0c1cd0e..27170f9 100644 --- a/src/main/java/me/trouper/sentinel/server/events/violations/blocks/command/CommandBlockBreak.java +++ b/src/main/java/me/trouper/sentinel/server/events/violations/blocks/command/CommandBlockBreak.java @@ -45,7 +45,7 @@ public class CommandBlockBreak extends AbstractViolation{ if (!Sentinel.getInstance().getDirector().io.violationConfig.commandBlockBreak.enabled) { ServerUtils.verbose("Not enabled, deletion allowed."); - holder.delete(); + if (!holder.isWhitelisted()) holder.delete(); return; } diff --git a/src/main/java/me/trouper/sentinel/server/events/violations/entities/CommandMinecartBreak.java b/src/main/java/me/trouper/sentinel/server/events/violations/entities/CommandMinecartBreak.java index 31a14fc..2ee70d8 100644 --- a/src/main/java/me/trouper/sentinel/server/events/violations/entities/CommandMinecartBreak.java +++ b/src/main/java/me/trouper/sentinel/server/events/violations/entities/CommandMinecartBreak.java @@ -48,7 +48,7 @@ public class CommandMinecartBreak extends AbstractViolation { if (!Sentinel.getInstance().getDirector().io.violationConfig.commandBlockMinecartBreak.enabled) { ServerUtils.verbose("Not enabled, deletion allowed."); - holder.delete(); + if (!holder.isWhitelisted()) holder.delete(); return; } diff --git a/src/main/java/me/trouper/sentinel/server/events/violations/players/CreativeHotbar.java b/src/main/java/me/trouper/sentinel/server/events/violations/players/CreativeHotbar.java index cd7bcb7..efb8a69 100644 --- a/src/main/java/me/trouper/sentinel/server/events/violations/players/CreativeHotbar.java +++ b/src/main/java/me/trouper/sentinel/server/events/violations/players/CreativeHotbar.java @@ -2,6 +2,7 @@ package me.trouper.sentinel.server.events.violations.players; import io.github.itzispyder.pdk.plugin.gui.CustomGui; import me.trouper.sentinel.Sentinel; +import me.trouper.sentinel.data.storage.NBTStorage; import me.trouper.sentinel.server.events.violations.AbstractViolation; import me.trouper.sentinel.server.functions.helpers.ActionConfiguration; import me.trouper.sentinel.server.functions.itemchecks.ItemCheck; @@ -42,6 +43,9 @@ public class CreativeHotbar extends AbstractViolation { if (new ItemCheck().passes(i)) return; ServerUtils.verbose("NBT: Item doesn't pass, performing action"); + Sentinel.getInstance().getDirector().io.nbtStorage.caughtItems.put(NBTStorage.toB64(i),p.getUniqueId().toString()); + Sentinel.getInstance().getDirector().io.nbtStorage.save(); + ActionConfiguration.Builder config = new ActionConfiguration.Builder() .setEvent(e) .setPlayer(p) diff --git a/src/main/java/me/trouper/sentinel/server/gui/Items.java b/src/main/java/me/trouper/sentinel/server/gui/Items.java index 0b2019e..2a0adba 100644 --- a/src/main/java/me/trouper/sentinel/server/gui/Items.java +++ b/src/main/java/me/trouper/sentinel/server/gui/Items.java @@ -82,9 +82,16 @@ public class Items { .enchant(Enchantment.PROTECTION, 64) .flag(ItemFlag.HIDE_ENCHANTS) .build(); + public static final ItemStack NBT = ItemBuilder.create() + .material(Material.HONEY_BOTTLE) + .name(Text.color("&aNBT Honeypot")) + .lore(Text.color("&8&l➥&7 View caught NBT")) + .enchant(Enchantment.PROTECTION, 64) + .flag(ItemFlag.HIDE_ENCHANTS) + .build(); public static ItemStack configItem(String valueName, Material material, String description) { - ServerUtils.verbose("Items#configItem: Creating a config item:\n Value Name -> %s\nMaterial in use -> %s".formatted(valueName,material.toString())); + ServerUtils.verbose("Creating a config item:\n Value Name -> %s\nMaterial in use -> %s".formatted(valueName,material.toString())); List desc = Arrays.stream(description.split("\n")).toList(); diff --git a/src/main/java/me/trouper/sentinel/server/gui/MainGUI.java b/src/main/java/me/trouper/sentinel/server/gui/MainGUI.java index 5d7bd5c..85c40ad 100644 --- a/src/main/java/me/trouper/sentinel/server/gui/MainGUI.java +++ b/src/main/java/me/trouper/sentinel/server/gui/MainGUI.java @@ -3,6 +3,8 @@ package me.trouper.sentinel.server.gui; import io.github.itzispyder.pdk.plugin.gui.CustomGui; import me.trouper.sentinel.Sentinel; import me.trouper.sentinel.server.gui.config.ConfigGUI; +import me.trouper.sentinel.server.gui.nbt.NBTGui; +import me.trouper.sentinel.server.gui.whitelist.NewWhitelistGUI; import me.trouper.sentinel.server.gui.whitelist.WhitelistGUI; import me.trouper.sentinel.utils.PlayerUtils; import me.trouper.sentinel.utils.Text; @@ -23,13 +25,17 @@ public class MainGUI { .size(27) .onDefine(this::blankPage) .defineMain(this::mainClick) - .define(11,Items.CREDITS) - .define(13,Items.WHITELIST,this::openWhitelist) - .define(15,Items.CONFIG,this::openConfig) + .define(10,Items.CREDITS) + .define(12,Items.WHITELIST,this::openWhitelist) + .define(14,Items.NBT,this::openNBT) + .define(16,Items.CONFIG,this::openConfig) .build(); private void openWhitelist(InventoryClickEvent e) { - e.getWhoClicked().openInventory(new WhitelistGUI().createGUI((Player) e.getWhoClicked()).getInventory()); + e.getWhoClicked().openInventory(new NewWhitelistGUI().createGUI((Player) e.getWhoClicked()).getInventory()); + } + private void openNBT(InventoryClickEvent e) { + e.getWhoClicked().openInventory(new NBTGui().createGUI((Player) e.getWhoClicked()).getInventory()); } private void openConfig(InventoryClickEvent e) { diff --git a/src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java b/src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java new file mode 100644 index 0000000..1fbdbef --- /dev/null +++ b/src/main/java/me/trouper/sentinel/server/gui/PaginatedGUI.java @@ -0,0 +1,158 @@ +package me.trouper.sentinel.server.gui; + +import io.github.itzispyder.pdk.plugin.builders.ItemBuilder; +import io.github.itzispyder.pdk.plugin.gui.CustomGui; +import me.trouper.sentinel.Sentinel; +import me.trouper.sentinel.data.types.CommandBlockHolder; +import me.trouper.sentinel.utils.ServerUtils; +import me.trouper.sentinel.utils.Text; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import java.util.*; + +public abstract class PaginatedGUI { + + protected static final int ITEMS_PER_PAGE = 45; + protected static final Map currentPages = new HashMap<>(); + protected static final Map> activeFilters = new HashMap<>(); + protected static final Map chosenOperator = new HashMap<>(); + + public CustomGui createGUI(Player p) { + ServerUtils.verbose("Creating GUI for player: %s", p.getName()); + int page = currentPages.compute(p.getUniqueId(), (k, v) -> realizePage(p, v == null ? 0 : v)); + return CustomGui.create() + .title(getTitle(p)) + .size(54) + .onDefine(inv -> setupPage(p, inv)) + .defineMain(e -> handleMainClick(p, e)) + .define(45, createNavigationItem("Previous", page - 1), e -> changePage(p, -1)) + .define(49, createFilterItem(p), e -> openFilterMenu(p)) + .define(53, createNavigationItem("Next", page + 1), e -> changePage(p, 1)) + .build(); + } + + protected abstract String getTitle(Player p); + + protected void setupPage(Player p, Inventory inv) { + ServerUtils.verbose("Setting up page for player: %s", p.getName()); + int page = currentPages.compute(p.getUniqueId(), (k, v) -> realizePage(p, v == null ? 0 : v)); + List filtered = filterEntries(p, chosenOperator.computeIfAbsent(p.getUniqueId(), v -> FilterOperator.AND)); + ServerUtils.verbose("Current page: %d, Total entries: %d", page, filtered.size()); + + // Clear previous items + for (int i = 0; i < ITEMS_PER_PAGE; i++) { + inv.setItem(i, null); + } + + // Add paginated items + for (int i = page * ITEMS_PER_PAGE; i < (page + 1) * ITEMS_PER_PAGE && i < filtered.size(); i++) { + T item = filtered.get(i); + inv.setItem(i % ITEMS_PER_PAGE, createDisplayItem(item)); + } + + // Add persistent bottom items + inv.setItem(45, createNavigationItem("Previous", realizePage(p, page - 1))); + inv.setItem(49, createFilterItem(p)); + inv.setItem(53, createNavigationItem("Next", realizePage(p, page + 1))); + } + + protected abstract void handleMainClick(Player p, InventoryClickEvent e); + + protected abstract ItemStack createDisplayItem(T item); + + protected void openFilterMenu(Player p) { + ServerUtils.verbose("Creating filter menu for %s", p); + Set filters = activeFilters.computeIfAbsent(p.getUniqueId(), k -> new HashSet<>()); + + CustomGui.GuiBuilder filterGui = CustomGui.create() + .title(Text.color("&6&lFilters")) + .size(27) + .defineMain(e -> e.setCancelled(true)) + .define(26, Items.BACK, e -> { + p.playSound(p.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 1, 0.8F); + p.openInventory(createGUI(p).getInventory()); + }); + + addFilterItems(filterGui, p, filters); + + p.openInventory(filterGui.build().getInventory()); + } + + protected abstract void addFilterItems(CustomGui.GuiBuilder filterGui, Player p, Set filters); + + protected void toggleFilter(Player p, String filter) { + Set filters = activeFilters.computeIfAbsent(p.getUniqueId(), k -> new HashSet<>()); + ServerUtils.verbose("%s is now toggling the %s filter. Current %s", p, filter, filters); + if (filters.contains(filter)) filters.remove(filter); + else filters.add(filter); + ServerUtils.verbose("Current filters for %s: %s", p, filters); + openFilterMenu(p); + } + + protected int getFilterCount(Player p) { + return activeFilters.getOrDefault(p.getUniqueId(), new HashSet<>()).size(); + } + + protected void changePage(Player p, int direction) { + int current = currentPages.getOrDefault(p.getUniqueId(), 0); + int newPage = realizePage(p, current + direction); + currentPages.put(p.getUniqueId(), newPage); + p.openInventory(createGUI(p).getInventory()); + } + + protected int realizePage(Player p, int requested) { + int validRequested = Math.max(0, requested); + int totalEntries = filterEntries(p, chosenOperator.computeIfAbsent(p.getUniqueId(), v -> FilterOperator.AND)).size(); + int maxPages = Math.max(0, Math.ceilDiv(totalEntries, ITEMS_PER_PAGE) - 1); + return Math.min(validRequested, maxPages); + } + + private ItemStack createNavigationItem(String direction, int pageTo) { + return new ItemBuilder() + .material(Material.ARROW) + .name(Text.color("&b" + direction + "&7 Page")) + .lore(Text.color("&7 > &b" + pageTo)) + .build(); + } + + private ItemStack createFilterItem(Player p) { + List operatorList = new ArrayList<>(); + FilterOperator chosen = chosenOperator.computeIfAbsent(p.getUniqueId(), v -> FilterOperator.AND); + for (FilterOperator value : FilterOperator.values()) { + if (value.equals(chosen)) operatorList.add(Text.color("&b&n" + value.name())); + else operatorList.add(Text.color("&b" + value.name())); + } + return new ItemBuilder() + .material(Material.HOPPER) + .name(Text.color("&6&lFilters")) + .lore(Text.color("&7Filters Selected: &e" + getFilterCount(p))) + .lore(Text.color("&7Shift-Click to cycle filter operator.")) + .lore(Text.color("&7Operator: ")) + .lore(operatorList) + .build(); + } + + protected abstract List filterEntries(Player p, FilterOperator operator); + + public enum FilterOperator { + AND, // All conditions must be met + OR, // At least one condition must be met + NAND, // At least one condition must NOT be met + XOR; // Exactly one condition must be met + + public boolean apply(boolean currentValue, boolean newCondition) { + return switch (this) { + case AND -> currentValue & newCondition; + case OR -> currentValue | newCondition; + case NAND -> !(currentValue & newCondition); + case XOR -> currentValue ^ newCondition; + }; + } + } +} \ No newline at end of file diff --git a/src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java b/src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java new file mode 100644 index 0000000..2335c2c --- /dev/null +++ b/src/main/java/me/trouper/sentinel/server/gui/nbt/NBTGui.java @@ -0,0 +1,104 @@ +package me.trouper.sentinel.server.gui.nbt; + +import io.github.itzispyder.pdk.plugin.builders.ItemBuilder; +import io.github.itzispyder.pdk.plugin.gui.CustomGui; +import io.github.itzispyder.pdk.utils.misc.Pair; +import me.trouper.sentinel.Sentinel; +import me.trouper.sentinel.data.storage.NBTStorage; +import me.trouper.sentinel.server.gui.PaginatedGUI; +import me.trouper.sentinel.utils.ServerUtils; +import me.trouper.sentinel.utils.Text; +import org.bukkit.Bukkit; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.*; +import java.util.stream.Collectors; + +public class NBTGui extends PaginatedGUI> { + + private final NBTStorage nbtStorage; + + public NBTGui() { + this.nbtStorage = Sentinel.getInstance().getDirector().io.nbtStorage; + } + + @Override + protected String getTitle(Player p) { + return Text.color("&6&lItem Ownership &7(" + getFilterCount(p) + " items)"); + } + + @Override + protected void handleMainClick(Player p, InventoryClickEvent e) { + int slot = e.getSlot(); + if (slot >= 45) return; + if (e.getInventory().getItem(slot) == null) return; + int page = currentPages.compute(p.getUniqueId(), (k, v) -> realizePage(p, v == null ? 0 : v)); + List> filtered = filterEntries(p, chosenOperator.computeIfAbsent(p.getUniqueId(), v -> FilterOperator.AND)); + int index = page * ITEMS_PER_PAGE + slot; + if (index < filtered.size()) { + Map.Entry entry = filtered.get(index); + ItemStack item = NBTStorage.toItem(entry.getKey()); + if (item != null) { + if (e.isLeftClick()) { + p.getInventory().addItem(item); + p.playSound(p.getLocation(), Sound.ENTITY_ITEM_PICKUP, 1, 1F); + } else if (e.isRightClick()) { + nbtStorage.caughtItems.remove(entry.getKey()); + p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1, 2F); + p.openInventory(createGUI(p).getInventory()); + } + } + } + } + + @Override + protected ItemStack createDisplayItem(Map.Entry entry) { + ItemStack item = NBTStorage.toItem(entry.getKey()); + if (item == null) return null; + + List lore = new ArrayList<>(); + lore.add(Text.color("&7Owner: " + Bukkit.getOfflinePlayer(UUID.fromString(entry.getValue())).getName())); + lore.add(""); + lore.add(Text.color("&eLeft-Click to give item")); + lore.add(Text.color("&eRight-Click to delete item")); + + return new ItemBuilder() + .material(item.getType()) + .name(Text.color("&b" + item.getType().name())) + .lore(lore) + .build(); + } + + @Override + protected void addFilterItems(CustomGui.GuiBuilder filterGui, Player p, Set filters) { + // Add any specific filter items here if needed + } + + @Override + 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 nbtStorage.caughtItems.entrySet().stream() + .filter(entry -> { + if (filters.isEmpty()) return true; + boolean result = (operator == FilterOperator.AND); // AND starts true, OR starts false + for (String filter : filters) { + boolean conditionMet = switch (filter) { + case "OWNER" -> entry.getValue().equals(p.getUniqueId().toString()); + default -> false; + }; + result = operator.apply(result, conditionMet); + // Early exit for AND (false means no need to check further) + if (operator == FilterOperator.AND && !result) return false; + // Early exit for OR (true means we already pass) + if (operator == FilterOperator.OR && result) return true; + } + return result; + }) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java b/src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java new file mode 100644 index 0000000..3f608a1 --- /dev/null +++ b/src/main/java/me/trouper/sentinel/server/gui/whitelist/NewWhitelistGUI.java @@ -0,0 +1,219 @@ +package me.trouper.sentinel.server.gui.whitelist; + +import io.github.itzispyder.pdk.commands.Args; +import io.github.itzispyder.pdk.plugin.builders.ItemBuilder; +import io.github.itzispyder.pdk.plugin.gui.CustomGui; +import io.github.itzispyder.pdk.utils.misc.config.ConfigUpdater; +import io.papermc.paper.event.player.AsyncChatEvent; +import me.trouper.sentinel.Sentinel; +import me.trouper.sentinel.data.config.ViolationConfig; +import me.trouper.sentinel.data.types.CommandBlockHolder; +import me.trouper.sentinel.server.gui.Items; +import me.trouper.sentinel.server.gui.MainGUI; +import me.trouper.sentinel.server.gui.PaginatedGUI; +import me.trouper.sentinel.utils.ServerUtils; +import me.trouper.sentinel.utils.Text; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickEvent; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.function.BiConsumer; +import java.util.stream.Collectors; + +public class NewWhitelistGUI extends PaginatedGUI { + + @Override + protected String getTitle(Player p) { + return Text.color("&6&lCommand Blocks &7(" + getFilterCount(p) + " filters)"); + } + + @Override + protected void handleMainClick(Player p, InventoryClickEvent e) { + int slot = e.getSlot(); + if (slot >= 45) return; + if (e.getInventory().getItem(slot) == null) return; + int page = currentPages.compute(p.getUniqueId(), (k, v) -> realizePage(p, v == null ? 0 : v)); + List filtered = filterEntries(p, chosenOperator.computeIfAbsent(p.getUniqueId(), v -> FilterOperator.AND)); + int index = page * ITEMS_PER_PAGE + slot; + if (index < filtered.size()) { + CommandBlockHolder holder = filtered.get(index); + p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1, 0.8F); + openManagementMenu(p, holder); + } + } + + @Override + protected ItemStack createDisplayItem(CommandBlockHolder holder) { + Material type = holder.getType(); + String name = holder.isCart() ? + "Minecart: " + holder.loc().toUIID() : + String.format("X: %d, Y: %d, Z: %d", + (int) holder.loc().x(), + (int) holder.loc().y(), + (int) holder.loc().z()); + + List lore = new ArrayList<>(); + lore.add(Text.color("&7Owner: " + Bukkit.getOfflinePlayer(holder.owner()).getName())); + lore.add(Text.color("&7Command: &f" + holder.command())); + lore.add(Text.color("&7Type: &f" + holder.type())); + lore.add(Text.color("&7Whitelisted: " + (holder.isWhitelisted() ? "&aYes" : "&cNo"))); + lore.add(Text.color("&7Present: " + (holder.present() ? "&aYes" : "&cNo"))); + lore.add(""); + lore.add(Text.color("&eClick to manage!")); + + return new ItemBuilder() + .material(type) + .name(Text.color("&b" + name)) + .lore(lore) + .build(); + } + + @Override + protected void addFilterItems(CustomGui.GuiBuilder filterGui, Player p, Set filters) { + filterGui.define(0, createFilterToggleItem("Your Blocks", Material.PLAYER_HEAD, filters.contains("OWNER")), e -> toggleFilter(p, "OWNER")); + filterGui.define(1, createFilterToggleItem("Other Owners", Material.SPYGLASS, filters.contains("OTHER_OWNERS")), e -> toggleFilter(p, "OTHER_OWNERS")); + filterGui.define(2, createFilterToggleItem("Current World", Material.TARGET, filters.contains("CURRENT_WORLD")), e -> toggleFilter(p, "CURRENT_WORLD")); + filterGui.define(3, createFilterToggleItem("Whitelisted Blocks", Material.PAPER, filters.contains("WHITELISTED")), e -> toggleFilter(p, "WHITELISTED")); + filterGui.define(4, createFilterToggleItem("Not Whitelisted Only", Material.BARRIER, filters.contains("NOT_WHITELISTED")), e -> toggleFilter(p, "NOT_WHITELISTED")); + filterGui.define(5, createFilterToggleItem("Missing Command Blocks", Material.GLASS, filters.contains("NOT_PRESENT")), e -> toggleFilter(p, "NOT_PRESENT")); + filterGui.define(6, createFilterToggleItem("Repeating Command Blocks", Material.REPEATING_COMMAND_BLOCK, filters.contains("REPEAT")), e -> toggleFilter(p, "REPEAT")); + filterGui.define(7, createFilterToggleItem("Chain Command Blocks", Material.CHAIN_COMMAND_BLOCK, filters.contains("CHAIN")), e -> toggleFilter(p, "CHAIN")); + filterGui.define(8, createFilterToggleItem("Impulse Command Blocks", Material.COMMAND_BLOCK, filters.contains("IMPULSE")), e -> toggleFilter(p, "IMPULSE")); + filterGui.define(9, createFilterToggleItem("Minecart Commands", Material.COMMAND_BLOCK_MINECART, filters.contains("MINECART")), e -> toggleFilter(p, "MINECART")); + } + + @Override + 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() + .filter(holder -> { + if (filters.isEmpty()) return true; + boolean result = (operator == FilterOperator.AND); // AND starts true, OR starts false + for (String filter : filters) { + boolean conditionMet = switch (filter) { + case "OWNER" -> holder.owner().equals(p.getUniqueId().toString()); + case "CURRENT_WORLD" -> holder.loc().world().equals(p.getWorld().getName()); + case "OTHER_OWNERS" -> !holder.owner().equals(p.getUniqueId().toString()); + case "MINECART" -> holder.getType().equals(Material.COMMAND_BLOCK_MINECART); + case "REPEAT" -> holder.getType().equals(Material.REPEATING_COMMAND_BLOCK); + case "CHAIN" -> holder.getType().equals(Material.CHAIN_COMMAND_BLOCK); + case "IMPULSE" -> holder.getType().equals(Material.COMMAND_BLOCK); + case "WHITELISTED" -> holder.isWhitelisted(); + case "NOT_WHITELISTED" -> !holder.isWhitelisted(); + case "NOT_PRESENT" -> !holder.present(); + default -> false; + }; + result = operator.apply(result, conditionMet); + // Early exit for AND (false means no need to check further) + if (operator == FilterOperator.AND && !result) return false; + // Early exit for OR (true means we already pass) + if (operator == FilterOperator.OR && result) return true; + } + return result; + }) + .collect(Collectors.toList()); + } + + private void openManagementMenu(Player p, CommandBlockHolder holder) { + ServerUtils.verbose("Opening management menu for %s", holder.owner()); + boolean whitelisted = holder.isWhitelisted(); + CustomGui menu = CustomGui.create() + .title(Text.color("&l ⬇ &6&lManaging Command Block")) + .size(9) + .defineMain(e -> e.setCancelled(true)) + .define(0, createDisplayItem(holder)) + .define(2, createActionItem(whitelisted ? "Un-Whitelist" : "Whitelist", whitelisted ? Material.BARRIER : Material.PAPER), e -> { + holder.setWhitelisted(!whitelisted); + p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1, 1F); + openManagementMenu(p, holder); + }) + .define(3, createActionItem("Teleport", Material.ENDER_PEARL), e -> { + if (holder.loc().isUUID()) { + // Handle minecart teleport + Entity entity = Bukkit.getEntity(holder.loc().toUIID()); + if (entity == null) { + e.getInventory().setItem(e.getSlot(), new ItemBuilder() + .material(Material.BARRIER) + .name("&cTeleport Unavailable") + .lore("&7This entity is not loaded.") + .build()); + p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1, 1F); + return; + } + p.teleport(entity.getLocation()); + } else { + p.teleport(holder.loc().translate()); + } + p.playSound(p.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1, 0.5F); + p.closeInventory(); + }) + .define(4, createActionItem("Restore", Material.DISPENSER), e -> { + holder.restore(); + p.openInventory(createGUI(p).getInventory()); + p.playSound(p.getLocation(), Sound.BLOCK_AMETHYST_BLOCK_RESONATE, 1, 1F); + }) + .define(5, createActionItem("Destroy (Shift-Click)", Material.NETHERITE_PICKAXE), e -> { + if (!e.isShiftClick()) return; + holder.destroy(); + p.playSound(p.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1, 2F); + p.openInventory(createGUI(p).getInventory()); + }) + .define(6, createActionItem("Take Ownership", Material.NAME_TAG), e -> { + holder.setOwner(p.getUniqueId().toString()); + p.playSound(p.getLocation(), Sound.ENTITY_VILLAGER_TRADE, 1, 1F); + openManagementMenu(p, holder); + }) + .define(8, Items.BACK, e -> { + p.playSound(p.getLocation(), Sound.ITEM_BOOK_PAGE_TURN, 1, 0.8F); + p.openInventory(createGUI(p).getInventory()); + }) + .build(); + + p.openInventory(menu.getInventory()); + } + + private ItemStack createActionItem(String name, Material mat) { + return new ItemBuilder() + .material(mat) + .name(Text.color("&b" + name)) + .lore(Text.color("&7Click to " + name.toLowerCase())) + .build(); + } + + private ItemStack createFilterToggleItem(String name, Material mat, boolean active) { + return new ItemBuilder() + .material(mat) + .name(Text.color((active ? "&a" : "&c") + name)) + .lore(Text.color("&7Click to " + (active ? "disable" : "enable"))) + .build(); + } + + public static ConfigUpdater updater = new ConfigUpdater<>(Sentinel.getInstance().getDirector().io.violationConfig); + + protected void queuePlayer(Player player, BiConsumer action, String currentValue) { + MainGUI.awaitingCallback.add(player.getUniqueId()); + player.closeInventory(); + updater.queuePlayer(player, 20*60, (e)->{ + e.setCancelled(true); + return LegacyComponentSerializer.legacySection().serialize(e.message()); + }, (cfg, newValue) -> { + action.accept(cfg,new Args(newValue.split("\\s+"))); + cfg.save(); + player.sendMessage(Text.prefix("Value updated successfully")); + player.openInventory(getConfigGui().getInventory()); + }); + player.sendMessage(Component.text(Text.prefix("Enter the new value in chat. The value is currently set to &b%s&7. (Click to insert)".formatted(currentValue))).clickEvent(ClickEvent.suggestCommand(currentValue))); + } +} \ No newline at end of file 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 16d1cec..ac87c66 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 @@ -24,44 +24,45 @@ public class WhitelistGUI { private static final Map currentPages = new HashMap<>(); private static final Map> activeFilters = new HashMap<>(); private static final Map chosenOperator = new HashMap<>(); + private static final Map chosenPlayer = new HashMap<>(); - public CustomGui createGUI(Player player) { - ServerUtils.verbose("Creating GUI for player: %s", player.getName()); - int page = currentPages.compute(player.getUniqueId(), (k,v) -> realizePage(player,realizePage(player,(v == null ? 0 : v)))); + public CustomGui createGUI(Player p) { + ServerUtils.verbose("Creating GUI for player: %s", p.getName()); + int page = currentPages.compute(p.getUniqueId(), (k,v) -> realizePage(p,realizePage(p,(v == null ? 0 : v)))); return CustomGui.create() - .title(Text.color("&6&lCommand Blocks &7(" + getFilterCount(player) + " filters)")) + .title(Text.color("&6&lCommand Blocks &7(" + getFilterCount(p) + " filters)")) .size(54) - .onDefine(inv -> setupPage(player, inv)) + .onDefine(inv -> setupPage(p, inv)) .defineMain(e -> { e.setCancelled(true); - handleMainClick(player, e); + handleMainClick(p, e); }) .define(45, createNavigationItem("Previous",page - 1), e -> { - player.playSound(player.getLocation(),Sound.BLOCK_NOTE_BLOCK_HAT,1,0.9F); - changePage(player, -1); + p.playSound(p.getLocation(),Sound.BLOCK_NOTE_BLOCK_HAT,1,0.9F); + changePage(p, -1); }) - .define(49, createFilterItem(player), e -> { + .define(49, createFilterItem(p), e -> { if (e.isShiftClick()) { - FilterOperator op = chosenOperator.computeIfAbsent(player.getUniqueId(),v-> FilterOperator.AND); + FilterOperator op = chosenOperator.computeIfAbsent(p.getUniqueId(),v-> FilterOperator.AND); FilterOperator[] values = FilterOperator.values(); - chosenOperator.put(player.getUniqueId(),values[(op.ordinal() + 1) % values.length]); - e.getClickedInventory().setItem(e.getSlot(),createFilterItem(player)); - player.playSound(player.getLocation(),Sound.BLOCK_NOTE_BLOCK_HAT,1,1.3F); + chosenOperator.put(p.getUniqueId(),values[(op.ordinal() + 1) % values.length]); + e.getClickedInventory().setItem(e.getSlot(),createFilterItem(p)); + p.playSound(p.getLocation(),Sound.BLOCK_NOTE_BLOCK_HAT,1,1.3F); return; } - openFilterMenu(player); + openFilterMenu(p); }) .define(53, createNavigationItem("Next",page + 1), e -> { - player.playSound(player.getLocation(),Sound.BLOCK_NOTE_BLOCK_HAT,1,1.1F); - changePage(player, 1); + p.playSound(p.getLocation(),Sound.BLOCK_NOTE_BLOCK_HAT,1,1.1F); + changePage(p, 1); }) .build(); } - private void setupPage(Player player, Inventory inv) { - ServerUtils.verbose("Setting up page for player: %s", player.getName()); - int page = currentPages.compute(player.getUniqueId(), (k,v) -> realizePage(player,realizePage(player,(v == null ? 0 : v)))); - List filtered = filterEntries(player,chosenOperator.computeIfAbsent(player.getUniqueId(),v->FilterOperator.AND)); + private void setupPage(Player p, Inventory inv) { + ServerUtils.verbose("Setting up page for player: %s", p.getName()); + int page = currentPages.compute(p.getUniqueId(), (k,v) -> realizePage(p,realizePage(p,(v == null ? 0 : v)))); + List filtered = filterEntries(p,chosenOperator.computeIfAbsent(p.getUniqueId(),v->FilterOperator.AND)); ServerUtils.verbose("Current page: %d, Total entries: %d", page, filtered.size()); // Clear previous items @@ -76,24 +77,24 @@ public class WhitelistGUI { } // Add persistent bottom items - inv.setItem(45, createNavigationItem("Previous",realizePage(player, page - 1))); - inv.setItem(49, createFilterItem(player)); - inv.setItem(53, createNavigationItem("Next", realizePage(player,page + 1))); + inv.setItem(45, createNavigationItem("Previous",realizePage(p, page - 1))); + inv.setItem(49, createFilterItem(p)); + inv.setItem(53, createNavigationItem("Next", realizePage(p,page + 1))); } - private void handleMainClick(Player player, InventoryClickEvent e) { + private void handleMainClick(Player p, InventoryClickEvent e) { int slot = e.getSlot(); if (slot >= 45) return; if (e.getInventory().getItem(slot) == null) return; - int page = currentPages.compute(player.getUniqueId(), (k,v) -> realizePage(player,realizePage(player,(v == null ? 0 : v)))); - List filtered = filterEntries(player,chosenOperator.computeIfAbsent(player.getUniqueId(),v->FilterOperator.AND)); + int page = currentPages.compute(p.getUniqueId(), (k,v) -> realizePage(p,realizePage(p,(v == null ? 0 : v)))); + List filtered = filterEntries(p,chosenOperator.computeIfAbsent(p.getUniqueId(),v->FilterOperator.AND)); int index = page * 45 + slot; if (index < filtered.size()) { CommandBlockHolder holder = filtered.get(index); - player.playSound(player.getLocation(),Sound.BLOCK_NOTE_BLOCK_CHIME,1,0.8F); - openManagementMenu(player, holder); + p.playSound(p.getLocation(),Sound.BLOCK_NOTE_BLOCK_CHIME,1,0.8F); + openManagementMenu(p, holder); } } @@ -114,7 +115,7 @@ public class WhitelistGUI { //ServerUtils.verbose("Name is %s", name); List lore = new ArrayList<>(); - lore.add(Text.color("&7Owner: " + Bukkit.getOfflinePlayer(holder.owner()).getName())); + lore.add(Text.color("&7Owner: " + Bukkit.getOfflinePlayer(UUID.fromString(holder.owner())).getName())); //ServerUtils.verbose("Got owner"); lore.add(Text.color("&7Command: &f" + holder.command())); //ServerUtils.verbose("Got command"); @@ -136,7 +137,7 @@ public class WhitelistGUI { .build(); } - private void openManagementMenu(Player player, CommandBlockHolder holder) { + private void openManagementMenu(Player p, CommandBlockHolder holder) { ServerUtils.verbose("Opening management menu for %s", holder.owner()); boolean whitelisted = holder.isWhitelisted(); @@ -147,8 +148,8 @@ public class WhitelistGUI { .define(0,createDisplayItem(holder)) .define(2, createActionItem(whitelisted ? "Un-Whitelist" : "Whitelist", whitelisted ? Material.BARRIER : Material.PAPER), e -> { holder.setWhitelisted(!whitelisted); - player.playSound(player.getLocation(),Sound.BLOCK_NOTE_BLOCK_PLING,1,1F); - openManagementMenu(player,holder); + p.playSound(p.getLocation(),Sound.BLOCK_NOTE_BLOCK_PLING,1,1F); + openManagementMenu(p,holder); }) .define(3, createActionItem("Teleport", Material.ENDER_PEARL), e -> { if (holder.loc().isUUID()) { @@ -160,39 +161,39 @@ public class WhitelistGUI { .name("&cTeleport Unavailable") .lore("&7This entity is not loaded.") .build()); - player.playSound(player.getLocation(),Sound.BLOCK_NOTE_BLOCK_BASS,1,1F); + p.playSound(p.getLocation(),Sound.BLOCK_NOTE_BLOCK_BASS,1,1F); return; } - player.teleport(entity.getLocation()); + p.teleport(entity.getLocation()); } else { - player.teleport(holder.loc().translate()); + p.teleport(holder.loc().translate()); } - player.playSound(player.getLocation(),Sound.ENTITY_ENDERMAN_TELEPORT,1,0.5F); - player.closeInventory(); + p.playSound(p.getLocation(),Sound.ENTITY_ENDERMAN_TELEPORT,1,0.5F); + p.closeInventory(); }) .define(4, createActionItem("Restore", Material.DISPENSER), e -> { holder.restore(); - player.openInventory(createGUI(player).getInventory()); - player.playSound(player.getLocation(),Sound.BLOCK_AMETHYST_BLOCK_RESONATE,1,1F); + p.openInventory(createGUI(p).getInventory()); + p.playSound(p.getLocation(),Sound.BLOCK_AMETHYST_BLOCK_RESONATE,1,1F); }) .define(5, createActionItem("Destroy (Shift-Click)", Material.NETHERITE_PICKAXE), e -> { if (!e.isShiftClick()) return; holder.destroy(); - player.playSound(player.getLocation(),Sound.ENTITY_GENERIC_EXPLODE,1,2F); - player.openInventory(createGUI(player).getInventory()); + p.playSound(p.getLocation(),Sound.ENTITY_GENERIC_EXPLODE,1,2F); + p.openInventory(createGUI(p).getInventory()); }) .define(6,createActionItem("Take Ownership",Material.NAME_TAG), e -> { - holder.setOwner(player.getUniqueId().toString()); - player.playSound(player.getLocation(),Sound.ENTITY_VILLAGER_TRADE,1,1F); - openManagementMenu(player,holder); + holder.setOwner(p.getUniqueId().toString()); + p.playSound(p.getLocation(),Sound.ENTITY_VILLAGER_TRADE,1,1F); + openManagementMenu(p,holder); }) .define(8,Items.BACK,e->{ - player.playSound(player.getLocation(),Sound.ITEM_BOOK_PAGE_TURN,1,0.8F); - player.openInventory(createGUI(player).getInventory()); + p.playSound(p.getLocation(),Sound.ITEM_BOOK_PAGE_TURN,1,0.8F); + p.openInventory(createGUI(p).getInventory()); }) .build(); - player.openInventory(menu.getInventory()); + p.openInventory(menu.getInventory()); } private ItemStack createActionItem(String name, Material mat) { @@ -207,7 +208,8 @@ public class WhitelistGUI { private enum Filter { OWNER, CURRENT_WORLD, OTHER_OWNERS, MINECART, REPEAT, CHAIN, IMPULSE, - WHITELISTED, NOT_WHITELISTED, NOT_PRESENT + WHITELISTED, NOT_WHITELISTED, NOT_PRESENT, + USER } public enum FilterOperator { @@ -226,9 +228,9 @@ public class WhitelistGUI { } } - private List filterEntries(Player player, FilterOperator operator) { - Set filters = activeFilters.computeIfAbsent(player.getUniqueId(), v -> new HashSet<>()); - ServerUtils.verbose("Filtering entries for %s. Current: ", player,filters.toString()); + private List filterEntries(Player p, FilterOperator operator) { + Set filters = activeFilters.computeIfAbsent(p.getUniqueId(), v -> new HashSet<>()); + ServerUtils.verbose("Filtering entries for %s. Current: ", p,filters.toString()); return Sentinel.getInstance().getDirector().io.commandBlocks.holders.stream() .filter(holder -> { if (filters.isEmpty()) return true; @@ -237,9 +239,9 @@ public class WhitelistGUI { for (Filter filter : filters) { boolean conditionMet = switch (filter) { - case OWNER -> holder.owner().equals(player.getUniqueId().toString()); - case CURRENT_WORLD -> holder.loc().world().equals(player.getWorld().getName()); - case OTHER_OWNERS -> !holder.owner().equals(player.getUniqueId().toString()); + case OWNER -> holder.owner().equals(p.getUniqueId().toString()); + case CURRENT_WORLD -> holder.loc().world().equals(p.getWorld().getName()); + case OTHER_OWNERS -> !holder.owner().equals(p.getUniqueId().toString()); case MINECART -> holder.getType().equals(Material.COMMAND_BLOCK_MINECART); case REPEAT -> holder.getType().equals(Material.REPEATING_COMMAND_BLOCK); case CHAIN -> holder.getType().equals(Material.CHAIN_COMMAND_BLOCK); @@ -247,6 +249,7 @@ public class WhitelistGUI { case WHITELISTED -> holder.isWhitelisted(); case NOT_WHITELISTED -> !holder.isWhitelisted(); case NOT_PRESENT -> !holder.present(); + case USER -> holder.owner().equals(chosenPlayer.get(p.getUniqueId())); }; result = operator.apply(result, conditionMet); @@ -262,42 +265,49 @@ public class WhitelistGUI { .collect(Collectors.toList()); } - private void openFilterMenu(Player player) { - ServerUtils.verbose("Creating filter menu for %s", player); - Set filters = activeFilters.computeIfAbsent(player.getUniqueId(), k -> new HashSet<>()); + private void openFilterMenu(Player p) { + ServerUtils.verbose("Creating filter menu for %s", p); + Set filters = activeFilters.computeIfAbsent(p.getUniqueId(), k -> new HashSet<>()); CustomGui filterGui = CustomGui.create() .title(Text.color("&6&lFilters")) .size(27) .defineMain(e -> e.setCancelled(true)) .define(0, createFilterToggleItem("Your Blocks", Material.PLAYER_HEAD, filters.contains(Filter.OWNER)), - e -> toggleFilter(player, Filter.OWNER)) + e -> toggleFilter(p, Filter.OWNER)) .define(1, createFilterToggleItem("Other Owners", Material.SPYGLASS, filters.contains(Filter.OTHER_OWNERS)), - e -> toggleFilter(player, Filter.OTHER_OWNERS)) + e -> toggleFilter(p, Filter.OTHER_OWNERS)) .define(2, createFilterToggleItem("Current World", Material.TARGET, filters.contains(Filter.CURRENT_WORLD)), - e -> toggleFilter(player, Filter.CURRENT_WORLD)) + e -> toggleFilter(p, Filter.CURRENT_WORLD)) .define(3, createFilterToggleItem("Whitelisted Blocks", Material.PAPER, filters.contains(Filter.WHITELISTED)), - e -> toggleFilter(player, Filter.WHITELISTED)) + e -> toggleFilter(p, Filter.WHITELISTED)) .define(4, createFilterToggleItem("Not Whitelisted Only", Material.BARRIER, filters.contains(Filter.NOT_WHITELISTED)), - e -> toggleFilter(player, Filter.NOT_WHITELISTED)) + e -> toggleFilter(p, Filter.NOT_WHITELISTED)) .define(5, createFilterToggleItem("Missing Command Blocks", Material.GLASS, filters.contains(Filter.NOT_PRESENT)), - e -> toggleFilter(player, Filter.NOT_PRESENT)) + e -> toggleFilter(p, Filter.NOT_PRESENT)) .define(6, createFilterToggleItem("Repeating Command Blocks", Material.REPEATING_COMMAND_BLOCK, filters.contains(Filter.REPEAT)), - e -> toggleFilter(player, Filter.REPEAT)) + e -> toggleFilter(p, Filter.REPEAT)) .define(7, createFilterToggleItem("Chain Command Blocks", Material.CHAIN_COMMAND_BLOCK, filters.contains(Filter.CHAIN)), - e -> toggleFilter(player, Filter.CHAIN)) + e -> toggleFilter(p, Filter.CHAIN)) .define(8, createFilterToggleItem("Impulse Command Blocks", Material.COMMAND_BLOCK, filters.contains(Filter.IMPULSE)), - e -> toggleFilter(player, Filter.IMPULSE)) + e -> toggleFilter(p, Filter.IMPULSE)) .define(9, createFilterToggleItem("Minecart Commands", Material.COMMAND_BLOCK_MINECART, filters.contains(Filter.MINECART)), - e -> toggleFilter(player, Filter.MINECART)) + e -> toggleFilter(p, Filter.MINECART)) + .define(10, createFilterToggleItemValue("Specific Player",Material.BOW,filters.contains(Filter.USER),chosenPlayer.getOrDefault(p.getUniqueId(),"null")), + e -> { + if (e.isLeftClick()) toggleFilter(p,Filter.USER); + else if (e.isRightClick()) { + Callback + } + }) .define(26, Items.BACK, e-> { - player.playSound(player.getLocation(),Sound.ITEM_BOOK_PAGE_TURN,1,0.8F); - player.openInventory(createGUI(player).getInventory()); + p.playSound(p.getLocation(),Sound.ITEM_BOOK_PAGE_TURN,1,0.8F); + p.openInventory(createGUI(p).getInventory()); }) .build(); - player.openInventory(filterGui.getInventory()); + p.openInventory(filterGui.getInventory()); } private ItemStack createFilterToggleItem(String name, Material mat, boolean active) { @@ -308,30 +318,40 @@ public class WhitelistGUI { .build(); } - private void toggleFilter(Player player, Filter filter) { - Set filters = activeFilters.computeIfAbsent(player.getUniqueId(), k -> new HashSet<>()); - ServerUtils.verbose("%s is now toggling the %s filter. Current %s", player,filter,filters); + private ItemStack createFilterToggleItemValue(String name, Material mat, boolean active, String value) { + return new ItemBuilder() + .material(mat) + .name(Text.color((active ? "&a" : "&c") + name)) + .lore(Text.color("&7Value&f: &b" + value)) + .lore(Text.color("&7Left Click to " + (active ? "disable" : "enable"))) + .lore(Text.color("&7Right Click to set value.")) + .build(); + } + + private void toggleFilter(Player p, Filter filter) { + Set filters = activeFilters.computeIfAbsent(p.getUniqueId(), k -> new HashSet<>()); + ServerUtils.verbose("%s is now toggling the %s filter. Current %s", p,filter,filters); if (filters.contains(filter)) filters.remove(filter); else filters.add(filter); - ServerUtils.verbose("Current filters for %s: %s", player,filters); - openFilterMenu(player); + ServerUtils.verbose("Current filters for %s: %s", p,filters); + openFilterMenu(p); } - private int getFilterCount(Player player) { - return activeFilters.getOrDefault(player.getUniqueId(), new HashSet<>()).size(); + private int getFilterCount(Player p) { + return activeFilters.getOrDefault(p.getUniqueId(), new HashSet<>()).size(); } - private void changePage(Player player, int direction) { - int current = currentPages.getOrDefault(player.getUniqueId(), 0); - int newPage = realizePage(player, current + direction); - currentPages.put(player.getUniqueId(), newPage); - player.openInventory(createGUI(player).getInventory()); + private void changePage(Player p, int direction) { + int current = currentPages.getOrDefault(p.getUniqueId(), 0); + int newPage = realizePage(p, current + direction); + currentPages.put(p.getUniqueId(), newPage); + p.openInventory(createGUI(p).getInventory()); } - private int realizePage(Player player, int requested) { + private int realizePage(Player p, int requested) { int validRequested = Math.max(0, requested); - int totalEntries = filterEntries(player, - chosenOperator.computeIfAbsent(player.getUniqueId(), v -> FilterOperator.AND)).size(); + int totalEntries = filterEntries(p, + chosenOperator.computeIfAbsent(p.getUniqueId(), v -> FilterOperator.AND)).size(); int maxPages = Math.max(0, Math.ceilDiv(totalEntries, 45) - 1); return Math.min(validRequested, maxPages); } @@ -344,9 +364,9 @@ public class WhitelistGUI { .build(); } - private ItemStack createFilterItem(Player player) { + private ItemStack createFilterItem(Player p) { List operatorList = new ArrayList<>(); - FilterOperator chosen = chosenOperator.computeIfAbsent(player.getUniqueId(),v->FilterOperator.AND); + FilterOperator chosen = chosenOperator.computeIfAbsent(p.getUniqueId(),v->FilterOperator.AND); for (FilterOperator value : FilterOperator.values()) { if (value.equals(chosen)) operatorList.add(Text.color("&b&n" + value.name())); else operatorList.add(Text.color("&b" + value.name())); @@ -354,7 +374,7 @@ public class WhitelistGUI { return new ItemBuilder() .material(Material.HOPPER) .name(Text.color("&6&lFilters")) - .lore(Text.color("&7Filters Selected: &e" + getFilterCount(player))) + .lore(Text.color("&7Filters Selected: &e" + getFilterCount(p))) .lore(Text.color("&7Shift-Click to cycle filter operator.")) .lore(Text.color("&7Operator: ")) .lore(operatorList) 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 55a4742..340e0b0 100644 --- a/src/main/java/me/trouper/sentinel/startup/drm/Loader.java +++ b/src/main/java/me/trouper/sentinel/startup/drm/Loader.java @@ -19,6 +19,7 @@ import me.trouper.sentinel.server.events.violations.blocks.structure.StructureBl import me.trouper.sentinel.server.events.violations.command.DangerousCommand; 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.CommandMinecartEdit; import me.trouper.sentinel.server.events.violations.players.*; import me.trouper.sentinel.server.events.violations.whitelist.CommandBlockExecute; import me.trouper.sentinel.server.events.extras.ShadowRealmEvents; @@ -150,6 +151,7 @@ public final class Loader { PacketEvents.getAPI().getEventManager().registerListener(new PluginCloakingPacket(), PacketListenerPriority.NORMAL); PacketEvents.getAPI().getEventManager().registerListener(new ShadowRealmEvents(), PacketListenerPriority.HIGHEST); PacketEvents.getAPI().getEventManager().registerListener(new CommandBlockEdit(), PacketListenerPriority.NORMAL); + PacketEvents.getAPI().getEventManager().registerListener(new CommandMinecartEdit(), PacketListenerPriority.NORMAL); // Events new AntiBanEvents().register();