From 4efccd3968f114ab5f61a0619442f9f2a587d6b1 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Sun, 5 Jul 2026 13:38:47 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20encapsulation,=20star=20imports,=20check?= =?UTF-8?q?style=20warnings=20(520=E2=86=9241),=20remove=20casts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/main/com/loki/lochat/LoChat.class | Bin 3692 -> 3692 bytes .../loki/lochat/commands/CommandManager.class | Bin 6126 -> 6126 bytes .../loki/lochat/commands/CustomCommand.class | Bin 2565 -> 2565 bytes .../commands/CustomCommandsCommand.class | Bin 7578 -> 7578 bytes .../admin/broadcast/DiscordCommand.class | Bin 2634 -> 2634 bytes .../admin/chat/ClearChatConfigCommand.class | Bin 3040 -> 3040 bytes .../commands/admin/system/LoChatCommand.class | Bin 3203 -> 3203 bytes .../messaging/IgnoreListCommand.class | Bin 2216 -> 2216 bytes .../commands/moderation/ban/BanCommand.class | Bin 3325 -> 3843 bytes .../moderation/mute/MuteBlameCommand.class | Bin 2329 -> 2329 bytes .../moderation/mute/MuteCommand.class | Bin 3511 -> 4619 bytes .../moderation/mute/MuteHistoryCommand.class | Bin 2689 -> 2689 bytes .../moderation/mute/MuteListCommand.class | Bin 1730 -> 1730 bytes .../commands/nick/PlayerInfoCommand.class | Bin 3609 -> 3609 bytes .../loki/lochat/commands/rp/RollCommand.class | Bin 5000 -> 5000 bytes .../com/loki/lochat/config/BaseConfig.class | Bin 3653 -> 3730 bytes .../lochat/config/core/ConfigAccessor.class | Bin 5706 -> 5706 bytes .../loki/lochat/core/PluginInitializer.class | Bin 5378 -> 5378 bytes .../core/filter/AdvancedMessageFilter.class | Bin 4395 -> 4395 bytes .../loki/lochat/core/filter/MuteFilter.class | Bin 1951 -> 1951 bytes .../core/filter/filters/SwearFilter.class | Bin 7660 -> 7660 bytes .../core/registry/ServiceRegistry.class | Bin 4027 -> 4027 bytes .../core/service/mute/MuteDataStorage$1.class | Bin 779 -> 779 bytes .../core/service/mute/MuteDataStorage.class | Bin 7072 -> 7072 bytes .../service/mute/MuteHistoryManager$1.class | Bin 956 -> 956 bytes .../service/mute/MuteHistoryManager.class | Bin 7879 -> 7873 bytes .../service/mute/MutePermissionChecker.class | Bin 1933 -> 1933 bytes .../model/MuteData$MuteHistoryEntry.class | Bin 1016 -> 1116 bytes .../loki/lochat/gradient/GradientModule.class | Bin 6829 -> 6829 bytes .../commands/GradientAdminCommand.class | Bin 11109 -> 11109 bytes .../commands/GradientColorCommand.class | Bin 6448 -> 6448 bytes .../commands/GradientPrefixCommand.class | Bin 4959 -> 4959 bytes .../gradient/data/GradientDataManager.class | Bin 10384 -> 10384 bytes .../gradient/util/DisplayNameUtil.class | Bin 5383 -> 5383 bytes .../integrations/PlaceholderAPIHook.class | Bin 2536 -> 3056 bytes .../discord/DiscordMessageService.class | Bin 6024 -> 6024 bytes .../lochat/listener/ChatEventListener.class | Bin 3895 -> 3741 bytes .../lochat/managers/AutoMessageManager.class | Bin 8448 -> 8448 bytes ...stomCommandManager$CustomCommandData.class | Bin 2544 -> 2544 bytes .../managers/CustomCommandManager.class | Bin 7463 -> 7463 bytes .../loki/lochat/managers/EmojiManager.class | Bin 4760 -> 4760 bytes .../managers/commands/MessageSender.class | Bin 4386 -> 4386 bytes .../renderer/EnhancedChatRenderer.class | Bin 6171 -> 5758 bytes .../utils/platform/AdventureManager.class | Bin 2900 -> 2908 bytes .../lochat/utils/platform/FoliaUtil.class | Bin 4048 -> 4060 bytes .../loki/lochat/commands/CommandManager.java | 39 +++++-- .../loki/lochat/commands/CustomCommand.java | 4 +- .../admin/broadcast/DiscordCommand.java | 5 +- .../admin/chat/ClearChatConfigCommand.java | 5 +- .../commands/admin/system/LoChatCommand.java | 5 +- .../commands/messaging/IgnoreListCommand.java | 4 +- .../commands/moderation/ban/BanCommand.java | 63 +++++++----- .../moderation/mute/MuteBlameCommand.java | 9 +- .../commands/moderation/mute/MuteCommand.java | 93 +++++++++++------ .../moderation/mute/MuteHistoryCommand.java | 5 +- .../moderation/mute/UnmuteCommand.java | 5 +- .../loki/lochat/commands/rp/DoCommand.java | 3 +- .../loki/lochat/commands/rp/MeCommand.java | 3 +- .../loki/lochat/commands/rp/TryCommand.java | 3 +- .../loki/lochat/config/AppearanceConfig.java | 40 ++++---- .../com/loki/lochat/config/BaseConfig.java | 8 +- .../com/loki/lochat/config/FiltersConfig.java | 66 ++++++------ .../loki/lochat/config/MessagesConfig.java | 97 ++++++++++-------- .../com/loki/lochat/config/MuteConfig.java | 20 ++-- .../com/loki/lochat/config/SoundsConfig.java | 24 ++--- .../lochat/config/core/ConfigAccessor.java | 3 +- .../core/filter/AdvancedMessageFilter.java | 6 +- .../core/filter/filters/SwearFilter.java | 4 +- .../lochat/core/registry/ServiceRegistry.java | 16 ++- .../lochat/core/service/MuteServiceImpl.java | 4 +- .../core/service/PunishmentServiceImpl.java | 40 ++++++-- .../core/service/messaging/IgnoreService.java | 7 +- .../core/service/mute/MuteDataStorage.java | 11 +- .../core/service/mute/MuteHistoryManager.java | 7 +- .../com/loki/lochat/data/model/MuteData.java | 4 +- .../commands/GradientColorCommand.java | 13 ++- .../commands/GradientPrefixCommand.java | 11 +- .../gradient/data/GradientDataManager.java | 7 +- .../lochat/gradient/util/GradientUtil.java | 2 +- .../integrations/PlaceholderAPIHook.java | 72 ++++++------- .../lochat/listener/ChatEventListener.java | 4 +- .../lochat/managers/AutoMessageManager.java | 6 +- .../lochat/renderer/EnhancedChatRenderer.java | 30 +++--- .../utils/platform/AdventureManager.java | 4 +- .../loki/lochat/utils/platform/FoliaUtil.java | 5 +- 85 files changed, 466 insertions(+), 291 deletions(-) diff --git a/bin/main/com/loki/lochat/LoChat.class b/bin/main/com/loki/lochat/LoChat.class index 631806c200098537586df584d3826c6d09d92ee0..0ea54569cad3b4f7cf84aa7aa5e229d95029cd51 100644 GIT binary patch delta 101 zcmaDO^G0UFZf-{7$ql@slP_}XF#3U6!aO>RA(I_=92qkvH}RM==72@d14RqKEJ0o! h#u6|q7|5ysvK$#}!2Ih#egl{#$*05EGTDt!4FE#=9tZ#c delta 101 zcmaDO^G0UFZf-`S$ql@slP_}XF#3X7!aO>R!IK?$92wImH}RM=W`jk~14Z+}EJ0o! h#$qrl7|1FIvK$$!!Tjq$em$5a$*05EJlTy;4FEvd9sK|R diff --git a/bin/main/com/loki/lochat/commands/CommandManager.class b/bin/main/com/loki/lochat/commands/CommandManager.class index 16fe5838c77b68676d92db4ab14c673c18a1d484..2c4cd05dec02008e0a8a8c32fcb40631e04aa085 100644 GIT binary patch delta 252 zcmWNLJ4iwS7)H;3X$h3-(#;wiGK?VN_5g!kP+Arg^w1y;qQK}yLzWc|<|AxyyNhiu zHZ%!N(bV45?&N-_#vuRoJLiMr+OFMrGrcxlOwhw5{Y*8RX2QsY=wp@ubIdSLgazU( za>^3-Ec3z&uY`G5^2sXStkEKh%R2vTNH3c*%$7{EEn#*f#;&B;lMFE_6PGIc(%?Y8 zNXQRKX>%yQ92p*tjX_Qraw=BRI-{F&yj);%iNzH`uAM)t=D$&rR&uNBomOTT$iZ9A|sR-<(Uv=C+kah0ED+QtpET3 delta 252 zcmWNMJ1j#17=^$8#?nNCn_ks$2NkM>OFcrosxJ~@Dw;~PL>XGIG+{6p8EkiHHw#0j zCY{7&H`z_y?_`wlujhOx=N!-RoaU?P@27(hT?`PwZnez3aUZ6KA;OF>LxdEg>=Naa zF>aaQkxA+}G??O@X+DYZt)#~+f6PfY3o^)}#8{RjE0SeZO03BZad}`}Y9ypdT0Y3g z7aP)MQ-0VoI@vb**dgRTSqD}YpSJqh!(<p}Z?5#sHS<*6yI}PnPSGzV diff --git a/bin/main/com/loki/lochat/commands/CustomCommand.class b/bin/main/com/loki/lochat/commands/CustomCommand.class index b71d046d8712b1582c6c96151f3e2259a3dda0ba..b65e438728e08069b31e699d2fabeb37d5f0310e 100644 GIT binary patch delta 53 zcmZn_X%*QZ%poYmz{()Zz{McKAjlxfAj2RwS%ssESBgP^L7G7V$d_V}pS+vn45RAg H4$fKt#GVMC delta 53 zcmZn_X%*QZ%poYqz{()Rz{McUAjlxXAj2R!S%ssESCT=1L5e|wK^jQPP2SCMhEZj5 H2WKq+!<-0~ diff --git a/bin/main/com/loki/lochat/commands/CustomCommandsCommand.class b/bin/main/com/loki/lochat/commands/CustomCommandsCommand.class index f144c3084babff84a80ca55e0a49ebcdc52d73af..755e3469ce599dd2fb3ce06e710a25625da42725 100644 GIT binary patch delta 251 zcmWNL&q@Mu6otRRFf2wQ(QziVzyu48z&{ZaiU4<=r$iDRU-e1ugt39u!HC=s@0 z#zb+t?9gME5eeQ&GG>oY_W2^klr-OD_~C$G4*BCq&4X{A9Bxj~IaN(_ktyKfoHZ^8 zQ;_aUj=AEDYbxAO<(7tcOZFY^P!t(bnhY#W^WU>fnROlnts*d0Y-(z}QPv$a>Qd|o c_@j!3X6BQm20os#cp=NHJZVy+tyaR_e|HTpssI20 delta 251 zcmWNLKTAS!6o#LRVOU&=LhscyP${J%s5GGqHfx|_e;hI*GbO7bF+s^$a1wq?NKl(= zXkVbM$tC&%E+Ku14hPP8d4~5qeXDQ1Ul_WJ8QeH9aAJ<`jHs6MF^^y13MK*BK|(UC ztkEOPGZEfcXTSzSHu+$SPqz7Dhi`WIA;yF_zwE22*>xnalS1cEJ$e3OX>4RzAS)lz z(w*agBO%9>Ii*6Ly4<$#4reF|ymCHz@oJjul39u@awTddk+{a9qK3;Qy^6-I6jw$3 bUWI&P&x52IOFZJG!5&RcXmLYZ&G~!(Kc_D^ diff --git a/bin/main/com/loki/lochat/commands/admin/broadcast/DiscordCommand.class b/bin/main/com/loki/lochat/commands/admin/broadcast/DiscordCommand.class index 0eee7524df41f2dfa31889a08105a9ecb488d087..5dd5f3fa0dd5997241fece36a30aa954ebb33993 100644 GIT binary patch delta 63 zcmX>la!O=_H3zR40}F#V11Ez710RFrWDkxKM!Cs*IWk#Y8MqnTCTnv}5%dDGycu{I Sd>KR-{21gI0w!PJtO5Xqcnl-} delta 63 zcmX>la!O=_H3zRK0}F!~11Ezx10RFLWDkxKM%l@GIWk#Y7`Pc+Cu?&~5%dJIycl>H Sd>BL+d>P~z{3l=FtO5Xp6bu*u diff --git a/bin/main/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.class b/bin/main/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.class index 54c70d5daa277f47aa347af882f9a0e853c1a730..a154be1c0722811e610334a1048fee8bb4101fc7 100644 GIT binary patch delta 55 zcmaDL{y==gAx=&a1{MZU22KXC$)`E97^NqhaqSkgXJBV=U=U|;WY7T8nheg9nYiaO KI!<21Z3h5oehd5n delta 55 zcmaDL{y==gAx=(V1{MYp22KXi$)`E97^NngaqSkgV_;{nXAoy_V9)^4nhZ{pnYiaO KI!s=~Z3h5ncnk6X diff --git a/bin/main/com/loki/lochat/commands/admin/system/LoChatCommand.class b/bin/main/com/loki/lochat/commands/admin/system/LoChatCommand.class index 3ed77f74bc3a6b3aa1faf49afc56c7d73826797d..c161c8dd6d188f82660fbc5f305618f4930f6d42 100644 GIT binary patch delta 63 zcmZpcY?j=h%f%_ez``KPz{wys*^DcTQF`)1u9uQl4BQOX48jby3{nhs3>FLy4BiZm T41o;JlNWO@WVD;?%3}ura{dev delta 63 zcmZpcY?j=h%f%_oz``KHz{wyw*^DcTQEKu+u9uRQ4BQM>48jaH3{niX3>FOb4BiY5 T41o+zlNWO@WVD^^%3}urah41P diff --git a/bin/main/com/loki/lochat/commands/messaging/IgnoreListCommand.class b/bin/main/com/loki/lochat/commands/messaging/IgnoreListCommand.class index f87c613e02d1e390d3a71d73bf2d11a39837b172..dbd4ab63bf37158327ebce329b5b223eb1722f9e 100644 GIT binary patch delta 13 UcmZ1>xI%D4GzX*HxI%D4GzX*X*(}F(>ff$?3=9m83=SK){23V+PnKs_-dxLAz&u%>W9MW|7QM;w9GaUiu=+7F z&Iigp0}9_2aRx+DG3drXHiZd{9F-SAW0BI%$4F=80j@+V-TH6`K_Jc(v zfg~GPRTmZ=j0`#qx(uugdSJEs3ff$?3=9m845sW1OpFXhlLOg|HadwjGL}u=z^S~sma%|&5|`%WH!Qn0 z|7G=KWIPEJ4wyWLeHv7B@@o#2$=Y1%Eb5F5iaHDChy~w)vsZY z0`hr);tUL24AKlTK$?+3gF%yll|c*0W@6B0&;inHKv7)=hRM3TMw5^8iZC`#p3G-0 V2^0aU&;yhDKvO~Lm>3Kgi~x?}GWq}j diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.class index 5c67b050b6318c626d58ab539746675c743db782..82af6f0ef5d60d57d9e2b808ed823578f6da11bc 100644 GIT binary patch delta 19 bcmbO!G*f7UHV32fWF3xKjLwsfa|8hZII;z| delta 19 bcmbO!G*f7UHV329WF3xKj82n}a|8hZIHCo$ diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/MuteCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/MuteCommand.class index 8b5492080caab07208d400c61179fbe59200cdd2..e225120873a7e31703b52cb6e907f2e3026758d8 100644 GIT binary patch delta 752 zcmZvZ&rcIU6vw}BZMW@qi%`-i8VpJms?@E3KX6s3Z9*U|scCAWw>6ASwQgm%CGlXq zHsPXqe}X5E+5-tDCgRP+t2Yx5-u31MjI)d43LGYH-ka~|J8#~sA74vrAAfDU1CU4Y zwKhidg$J|~y$XF*_`8zg?WoHilnLHcvOE`k=I?W%YOfov5FPQfT%mApOSS2beuXz< z=|t?Y<+vj6)LlZCN7PYXQ3sQyvT$9iF5E)PzTc>unbM2?>14X%X_q~*8O3SBlJq^v z@0DzdaM%%UtGOzQ9mi@nS~g)`+NCoOtX0csT6W#2ww;DuH}`ojMv)vD*Ro>H7$+zyb8%?8DTPT`4dGM;m{iVB^+fif*FZWzmR0>&nJeB8ji|bmvunH5RS7Bhr|DEJG z-%1P`PYz_x;#`1`~qwF#{kD)jGLr)D&VhUl|F`(cgF3G4$<}$!} peUf&R>nsxHl&m3yE533DS7p?s(v<7EeAi8%RB!`xDELZw_8Y$Ctpfl6 delta 253 zcmeBH*)Gj>>ff$?3=9m842B!I)EODWCMU2fZw_U=%``cIJ9x4HtM+6AmX1kGnn14R zW`4E+M#h($6WAv*Vv(L)&Z#o_Dvvs&>gK;ZD;b&D8T2R1@yky3vY=2LKOPF7W^W diff --git a/bin/main/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.class b/bin/main/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.class index 01282826a4b48efece12cf9fb1d4f24bc14a1178..1d0036f1b7771e666154d6e630ba8a71cb57277c 100644 GIT binary patch delta 23 dcmZn^Z4})wnUhgvvObsiKDI250KDI25w}`g1oLn3IsyQ^;R@dX delta 33 mcmbO!GgD^6M;=D)$rE{mC$sW~Fjh^D;>}`g0P}C~IsyQ^unOD& diff --git a/bin/main/com/loki/lochat/commands/rp/RollCommand.class b/bin/main/com/loki/lochat/commands/rp/RollCommand.class index d591d3f114bc432048615d6ed5480e58aa4845c1..62870fcea7752586f2ce6389f7874166c97a64fa 100644 GIT binary patch delta 198 zcmWNKyK2G!7)DQqAc_#8i;4~^m{M=pco(#aS1K)tSUO2j=p;f%5nR(zGSs=Niy+P- z_y~@^L2S{QeU@PvJ4;ji_K#+&K~zHfllG;oBDjd+CWg)fJ{}1Z#~>k=Btr^Q zm=~{-=2=RYCwfu`WEl$I#mD6Mq`-tCQ%cMzGZ%h~FQ~AjhDDt<4Q%0tCV#Zq2Iz2* f$s;Y!yl|nFAoSU3FD)8GAKj@?gSyd#Vd%=fjF08v*PDaT5{?qY;r5B}I&kFehFnPL%|0 zl60gQkY*?xi%(=VCCf~fbMh=HuoAAtHx$`YLZ`w(9t`1$8fO|@JT$q};z6C4+`j4Z Wp~sK@?P=E(%MddooQ#dHFV4*?^5yAKidnKwLib#-T{o`{@I@538&--ld4iImvZF=U+4Ks zOkqLkY>%Olnbxybw{}G>Sr<595T5a8nZS{L5b5C)hE(2PR@EiXmlYMrqN-L3 zqmm3~3~jl2N-oGiNlz`VN@f-p`b+djt{M9N(s`KUR?k>tJt1%idNBkGHZh47#0?!J zh}O%aP0~a`1jRZC=0)RB(7_={6{-$`P8OU59qQ8J;82kcokTov z66sLXL7{_#;2$7#b#N939rZ8J^R~}@-@V7{M%}1mY|Eow^2wqc7wnbHFlA_jPwf)M z_|VDokDXwG^G*pzA{Dh$pjam}j^lH?jr=)r)9RH8^Cjq*@m(tIkEMs#np5 zsEAFT^FuDX3AR;j*I-9?KHV6*JRXKT;~DH}t9Y|G;A<~Mh2OoRRi!?v(EwHDZi-{w zY5Iv(mwqC>u5Z5i1`RzM%^5URWzm_cCAv_3h%VU+Qe5f0AH-wFZ(=;+R~=u!16diq!Y4H5Ow?H_fFTTK7} delta 365 zcmW;Gu`dKs5XbTPiNnh7*lSmXNK|&)T z6O{xBafJwpLg5dPT&qxvf|9?0G2LgrZ{Ex6m3pNI>pDL5Q$P-dJm*$(hH^BRy`9Dl9=`;9~G#5NGgYP-F07Fk>`xF7zCEzCFIN-$-u)9#URWO%^=SZyO~Rv zk~$V~@wGZ+kjv?)UtgCj#WLlBS-XUJtpX2@g62ht@BMGVyp#SHC0)?^?(gQ1LJ d2}32r28OE1J|gX$jX+DA7?c^BC*KiK0{})}DZc;! delta 190 zcmZqDYSP+}CBP}ez``KQz{wytxmduLQDyQ$0Y^sl$;^U|jCzw@1??FvCbtSYGui;f zMJL}A3>9=?;9_uR5NGgUP-F09Fk>`xF7zmc%CFIN-!N9{1$so)S#URfRvzben zk)$V~%s(-{nav?)U-gCj#0LlBS-XUJhlX2@m82ht@Bg$&gUMGWl>#SD{y^bCel eh9wLY3>z3KC;N!Bb2b1iZDdepXqtRSL=6BrSt*$S diff --git a/bin/main/com/loki/lochat/core/filter/AdvancedMessageFilter.class b/bin/main/com/loki/lochat/core/filter/AdvancedMessageFilter.class index dc2730efae2c44ee438f53d4c998cd9ac11656a9..2cef6019709ad098f16b88579ecad3adca04aa37 100644 GIT binary patch delta 191 zcmWN{y-vbV06^h$hY~x~cA`WgNvluc+HOsOkf0I=&=`e5g${I3AcmiqZg2-@He&}! zSlNj2C0Gp$;TgO++sT)@sk@8}?UW1!85@B(mm8z1dzko~;H{kFju?a(6tO9hr;I~| zGcLK{N}+24YJ}XVTURw`aZ8&!BJPQK;GIW4Xp->6C(q1z;Y*2cB^Gp9EA_)GTi*Di g$DTe1hC*W`OvWOcVIp!Q(zbr}DM!q(kaB1F|KZ0fivR!s delta 191 zcmWNHs}4b70D!+gFv8&^*IAv^mn@M3*ytZt{FE>2>2Q(O|F_5%M#86WI0f`vg)h01m zG`V3gnM+kO3*56vi6vf0^U5-Btnk4q->gw)onJNtHl>b?w6G;! zwk1STBJ4WndZUznuXxG6VP=vE0uDGhYsVUk7;@p6NYXZ(C(@JB#`G>JvC>|x3^ zL3u>U6D{_R+BZTJQ%4o8I@d;sc6taCr;{PNoF6qHW`s&Dn)GQ?ln61B^fN|^I|gwW zcG8|N$&6BlrEO_07}p;rxYdvDnWDfnFU;`DEN{&5L56SUaarJ(MS&%$U|H%}kpQa_ z#*!#m=iFN@<~p@(XuzCa-qf30jIgbXcXdIIEC=?3@4e=TBJvvhSOetg<@dF{NO4BQM}KwaJp3JkuJ|MHcx1~PCm1WhjIcL4zV?h&Z~ delta 89 zcmdljzgvC-8!xXQ0}BHm13!Zhg9wB0WMN)!M$yUfyylG3lc)3gut@?t@?5aX%Oca)S#eD3{#{+BIzPZLg`4MHwc0T-wQYj z8iYQF@6a?FH0lZZ*ptnM#a)XrGizVG*l+HDAcurFBF(Y#WqeN9qoS!ZqQMJIDaYUK z3w^$nzxX_RrR|z9ZDnpKaH|e?bh)QThiAI-mH4zDh|rg}WZikx_C$iA{3L5uN&M8n SsjBU%+SX*6>R4@Y)35(H2`v=> delta 227 zcmZ2rzQBBgnTV()0}F#F13!Z}g93vTgDQhGgBgR&WN(pBPI;iH0)sGv;^dVgk-RDl zd_Y+t1~mpT293%5qUnq}lgmZ3SPg)>4JSVn^=CAlY$o}2qs>@L2H)emU1|Kv~Nrxb&MtWX9XhA^O>2nHR7NT3^{ z7}6M`8PXYI7^)cJCf}7<%bLi*%aAm=UowC*7060skYLD|{6f-?(O|Nt<8 diff --git a/bin/main/com/loki/lochat/core/service/mute/MuteHistoryManager.class b/bin/main/com/loki/lochat/core/service/mute/MuteHistoryManager.class index 9792568f603e6bd5721b776b7e054c7a556e667d..71383aad4cb2b06a4e3334e6192722b3dceeee21 100644 GIT binary patch delta 433 zcmW-dxk`gU6otRhxUX@EX8D6Au4qJ2;&c@bi8Y_D{Az)== zW#Jq64nBbv9{(BUa{1ugbMAc1z0bX5JSJr`P0jYZq+74K_~a>iTZ4FLqX9o1gy_bh zpRmpQ`l|V%j!GbDAAM2#<{P++i$EtWLC&y=#aR2}S delta 435 zcmXAlIWNRf6vcmUjD4M8_WxMMGWMO=66@FriDm5D5TZh%qEskf!B@~prqd}zq1E{+ z3deXic{%sId(S=hy$yd1zbw05OELTH>T}I*rXJkyo^l^G>rHfv=<)nu(p;`K^&;MkG?2G@Za70a`+9^(qDcc_S49sb#c?MZviA6b_ z*RVM*SV@%yi;ZWE64q6+!Hgak*h+PWJf>xrJod@8#dn&C1Kez|O$SV9mh8V8_5Wc?PQyBiH29tQC@i4BQMtKp9a61qLw&eFkv` z6Cm4`L3(lw+Y(iIpsWH=R+&MVK?NwT&LG2}!Jx{Z31n$A=rQOp7%=EhR%Oos02A8{ Ab^rhX delta 103 zcmeC>@8#dn&C1Koz|O$KV9mhIV8_5ac?PQyBj@DPtQC?1KoLO(UIq~c1qM+DeFiZG z6Cm4`L27ag+Y(hdpsYMlR*6BFK^Z8o#vsF>&Y;Sm0VK5;^cb`m3>fq#tFmVR01u}P AU;qFB diff --git a/bin/main/com/loki/lochat/data/model/MuteData$MuteHistoryEntry.class b/bin/main/com/loki/lochat/data/model/MuteData$MuteHistoryEntry.class index 316de5c356aad0c9124fbd2c81cff90e3fa3e900..79bd7cf98ee098a86d6aa521c29745a258f542eb 100644 GIT binary patch delta 336 zcmZ9Hy-EW?6ot>7*<@xXM3)rNG=e0Gth$?M8nqGx8)IP<{HaEfpe{iq*!m1IuOL{b zSOg183!lOF(8_ps>@0@!alSj3nQ!%}&BxE{8-Q(e$EHWL?~ZB1WmI!dbkwT$NA}{T zXKxSfd3LF=LWr*Iy-hPa9Hjlx-PLg5z9B=k@@)xQ-djau!rV8RSW^6P`lu0#Ami z}iVgZ_6}ih}gGc!k`sMVL9OAW0$#TXu>o9W#I%n;!mxz7f6tD8h#I*PV{ctT0Q4Z JAKk~n{15d%BJBVG diff --git a/bin/main/com/loki/lochat/gradient/GradientModule.class b/bin/main/com/loki/lochat/gradient/GradientModule.class index d37dd65258c90a50ddd14c5d62ce4e59a73dd945..1b32019f60448178be1f4dbc8b4a7644168dc3d7 100644 GIT binary patch delta 386 zcmW;G+be@{9LMqZQ>3Yf8k=p6i=mm!GH1!5wwgwoLq<8IhC(i6!Z4HaooAGF#@JyqT8Y?`mV^H$iB#d`m@IMW04cGIm5=eTDAFA zq9CAOiC&8)L~jhOum$vc(Ff5-(I?SC?O8?a7WHd$YcEE5>~8HIum4$_cg@pxWVdD>&r9Z&a+5Nts-rnaXbQ8MEbm}E!P>O>xawvarI{jL|hg`fA zQ;CNvs_{`nfOdim5n@7WmReS+V}p8jXk?!z&S>VG7H$diKpSsF_@RSeqNM3m2YFwC zZaLJ0L9d+b!_R>HF(~hcL}QFF%p`HdYx=H8Qe;mgrT)xC{ZQnHY)-H^RqIwzT^EG) z3(-r_E75CPtE{koCwedXDEcHC)1Fn2%TQ^nLVK~7*Hxjt%4*Qw>^_%%x7V+%4|^54 QecGprx?8nxm2wyU17~MfrT_o{ diff --git a/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class b/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class index e77bde588ca83d833063d755cfcf084dd93971b5..c37eaee839ee588f993d0b8c454ac8bd4b260f88 100644 GIT binary patch delta 434 zcmWNN$t%Qh7{)*EB$10XLbfr+%-G7BkeMuFUk+nm%2Ia98WCkH#_~Hbikqv{@20pq z$(cBg1Al>wyqE9$Ja2E`&-1=PU(k1-m>OjzgiOM*5l0s3*iBbzi)AcFTY1EiPcj9h zP^d#iI4H(NnW}Qhr$S1o6gSo4#Vzf4q>~yMrcUOlmrcClr$KILlslT_iDr4BMLuYi zFWTgXPV+N8SsXsX=pvGC66hg~Ub5*^XupC6sAdo^L$ot&W>`IvJ3=U
L9$H`zq zGfmOJG_%Zbs_z4Hd@wJtV4h`eT5OA0SR#pKU1^0Xn1p#L7SsD6nfHaONPKewDH(a)pSXXU?g#vA7ZG5A*h!v%j_ yN+NU!6Xj-mgOeIuT%wJuxN&g9 z^xI>Wq+eSB8fnKykQQ#~gHF7J@YAF5wgl;uZth5!dlI2v;)G>_`|^Sz$uKNAMr4PG z>=BipJdh(E$}yu-AtrwrlQYK6KMtFCA5lw!dM0UNidLq%$zwWrLN7D)^OOkBi1XZZ zx&|aLiP8m;Mjwmszp^ diff --git a/bin/main/com/loki/lochat/gradient/commands/GradientColorCommand.class b/bin/main/com/loki/lochat/gradient/commands/GradientColorCommand.class index c172b7c51b3e9bf8841ca41494b1b8896a617b9a..832ca07392086490bb1771aee014bef7dcbed637 100644 GIT binary patch delta 204 zcmWNKJxfAy9EG1h2#qRN@eWE!k*W9!reZ<{R}2ElH&Cx=1`ZLrxk$}{<9`fVnw-3# zeg?mQxcOcDafb5@&*3;(C+iFi71kr8;lIVjHEtsKxZ{c_H^lVb`12+Rkd&mbNMn=H zbKfajeo|hd1ouUW1^>lqv~kOwA4T^&6*nPgK3`uZL=t4 delta 204 zcmWNIOG^S_7)H+rLQ9iTW`gkonJ!Gh5pSrK!GJfA6wHQ!T8Grmjo3PH`7H%Eu3R~g z{f7R4wDZ6CuAcM2Ie`;6!K;^i5A$CQv}?I)tXEb?P4&_8&%1giqW}N^ diff --git a/bin/main/com/loki/lochat/gradient/commands/GradientPrefixCommand.class b/bin/main/com/loki/lochat/gradient/commands/GradientPrefixCommand.class index cb3113615a7ef360de8a31dc8b77cf1055e698c4..fba9b52290a724b037eaa125f389a87a26fd9e12 100644 GIT binary patch delta 148 zcmcbwc3*9SCqJX?WH0_8Q6&Zz26+a424w~j1{DSc22~)bHhCj|JFg~#ID;009)mW6 zD}&BtSAn~xh71A>MhvnH#y}lrKyh;hO9l%DYan!Fuwn3Luw@8jaA1f6^0FA58S)ui s7^)fEH-`&~GK%^#urv4pt?_4&W(WXU(t5p+<)(tqiv>6xRmQo%_Jp8OwrLM5<L7|)0zfR}_|BU%+t z42irVg;>&wvmS&68~YmqNzh{wsU(x7>LiCaP!^#eCHjelBkw-B3B034D zP?RDvajE-(GK#6CgdR%q@R2#(Y^Zz4CrHP4F=-ewRfrKE_#Qg5NsrG08PkLe5yTwnrvpp2sXm*`i`w zPyx2)rk-y$}tki0hWhWMiZw{+X)h#k%~_g{ZpVsXVj Lw;WjRm<)3dn7d-^ delta 438 zcmWNNPe{{o9EP7ShT+Aq!Zvd1W;ro6bp7#?E!~^L}fpwe%9ODoL9L0r` zLP{y75;s+NsHOxjmYwBt7^|FoD)fDd(+c>g;R)w>%6Xo1ff;I<$7k0SMvVV5dDP>e zLBuO!Hi~kUi!{?j3)gAoE^Q2QjTr6B5+FqfTXeEb7eAEWA(+@J`f0lD@5N!$dV?Hp zN;D+7TapUNq=z%ymPfCkcL)mE!#(=AFQ*5*CM=%_pLrtdux4@NP*2y94Q&)wOKQ9(9Dq!@Xwt30)b;6 z!WZaS`eYCG;9L7!d+9FS--YGa_=pfBN|=}?&M7uY;$~=g?%+C6VCOIU<5ocn~ zm0yq{ZR+8_+bc2G1juqsPPchA6h)M{q)dSd&)m?{9#Q36*^E1WxZm_oydLL~5H&2C wdZDH2J=~_jtC`!|TvusNrEk*qC4I+bAl*=!5f6+-PIzL<3tx2jG?U2sAEEXip#T5? delta 220 zcmWNK%Su9F6h>E9p-9g0cr;18WQZN2yrft-P*B0dph2RBnwM!aap2665Ae^N`T{}Y z9-Z}`?;-^SZ`-)k#kb3}kM9BhJwaJkYI!!=tge-h@HOY>)q+$g8SIVT|| zsr;HWDO0!iPq$(`eB5)vgFIOo@*)akc+@P?rbJJBN|`TZ3!Yg~`S}PO9z?46sbNu9 wb(0h=K`%6THB09=_pY=nX-~C%ZWyR)#2sU4KJ_;dIn~dM4s+fZnt5>d4|nz-Jpcdz diff --git a/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class b/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class index a2d2df4516976f0dc855aa07044316e76b51cdd1..4b93daf7ca5d48434947c3aeb7af5a820f8bff60 100644 GIT binary patch delta 463 zcmaDM{6U=S)W2Q(7#J8F8EiIkC9^TEnjFt6H@SzcN0gC)zbLghKc_6!y(lpyGc~V- zks){TEmoO{0{W&ZFtNbW)S^mjO`oj9vPAuy#JqI<;F6-uymV_u241LkpTy#lfLulf zJD_Go<;b4n0$i0mQi8yKMv)|nH(03s$kYpAWI9#@@Lea?8h0yXai)6Pd>yc%B#%)vVYX1QrGZuqs0aBamL8I%6O&ty3!{mG6T>LTn6x{M6m&KZd% z!Kp=MnaQc_4EmGraVSmZ<5Xs3n{32c%P2Q_17|d&GLTfBtj}e^r~zhmbLlYZPTs*4 e!)OiUi%-_!78PV*U}Df_FaTP}24v|l=m7vuogxPS diff --git a/bin/main/com/loki/lochat/integrations/discord/DiscordMessageService.class b/bin/main/com/loki/lochat/integrations/discord/DiscordMessageService.class index a558231d42cfe44fb628bb268f6d68e50186b1bd..05d5cad23785440c6a82495d1e925ae95e2a716c 100644 GIT binary patch delta 275 zcmWNLO)Erk6o;RS8%krYd+&d|k0eG@uEErhaZO5CNa?0VnHLM$SSVJk-4R7cl$R_l zSXfx_0W5tZJ5Fcwd(JtX^Ta_MeC#`RC+#HVz^Ud8Eu@sXNzj8!FCKkL{aOPIF~|sM zGMWONPcbZiPGn^y>iWu0(8?r+oL-n=lsxkkSYnoS=7=);{1u8PADCYa~b!cWJZ&YYX-v^Nns(S(?l6F7Rts#v0}@aDC&!H$-;t- zg#~|rrT@r|uW$3bZ|_%65+>otfn(V;(<+BfWz466KvN2v4qQ6%=u+yYN3Wk=2I(V9 zno!$u2IS9)O-ADOuc;9lwG9~6?+J#Oq`)*wU;Rc()$=a>b~C`#nk%(DEr zMQe*Dw#D|=tR1DYQd&;EoK@AdC+}Wt_NC6>_0Os2f)*0msHw#z8Ls5S{~o?p`x~_o rwZ2u)J96Bs%LB7Kvd9xFnpb(2O0a2OnrpwC64&qPFKK$h@iE`D7AF^U(C delta 163 zcmbO$yIpR>K1RmK&HEX7SoArQ^K*>-ZL}j%uLi9^``z>3oCeljXX+Zl{l%Q zoJZ*!tHbE7CYu^1YXvt@O{07>EwVmZ8RiLZaq)>Z=5Z6n!zxeN#LF)2BvqH<1?O~f zO;>ur7BV6|8`!k9F7+^3_20;Tkh$$~+H=WF9i)8ZRR1X9%T?8yj_Z)>cwh zto#Kwwl?JL)cHE^cRKHLj>GP-KfYUnt+*42A3=l@iA@nrlSRnNOYE@B9xLo~qJ1AQdE$r{j(L^x#wj11^UVc6oEvWJ8{S;H?yV(8z?JTO bt;62nFU}zD%-_g7qutE0)fnsMu5I=omr7Hu diff --git a/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class b/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class index d78bd0b25fbeda5dfd18bff81407c80e90290840..9205f6766eb7566835ab1546e307dfef796dff27 100644 GIT binary patch delta 60 zcmew${6TmF8~bDj4z9@p?3!TO8A_M28-n>8q5LQ8nv5$a^Klq4uH5X%v7QkC71$9? delta 54 zcmew${6TmF8$09j$?WV#K++0K=CWG>*(<>8+w4Y@bJ%$%OLC|KX|By)9LpF1<+Tv% diff --git a/bin/main/com/loki/lochat/managers/CustomCommandManager.class b/bin/main/com/loki/lochat/managers/CustomCommandManager.class index 2356f561059d10c62a2ee9a722ac8337cd1fc718..9cf5d111d85adf5cce911f3f97ee876cd21e2b61 100644 GIT binary patch delta 293 zcmWNMO)Erk7{!0LD5GXU?p$-{PR-0>5P2yEqfEm>rXfQYqgaWhC@UMnWZ`Z4FNiQH zO%|f=+R8%qd=Oti&h9*&=Q-#1)U);M+pisVX&^=jk2d1w&z=h3YH>{RZi1F z2kmr{qFbtmetId;M@edt0m=-r$`EU0*kqU;M%ZJN3R$X*aVx*ZI4|S~boF9IgvbM|SJDRt)OvK%=_i5$;ha=(~ z3$dd36H|3x?Neo*5#e0O7jiCDUNwH~D|tl|*R*njE3^c6df{Hp58|ld^JsG3q4i`w Gy!C$pC^_f= delta 293 zcmWNM%PT~29K}DkD5GXU?u>h9#3*iJVcOw!2=UCfK+=w*>Umgr}d7#j?*#UT3(QNZI``UAtfFhWVc?HrA6LYL8YE>fC2?Aqly!;)g{(8nCUYk0JeOy5oi*Q1!df!{cg5bOk{yENsbiNG z_EhV@6x>()P@YEwI9BBoDW}9aGwIM*2I{iio^^mE{+t#z_o3il0L$dWOhA=>r@RN{|q-%_aYUqk}KVnSz#P zA!p~denQdI&+y?HZXWK7`*KXj+#Dzs!9|DwM;vmjQ|iVW$4df5@^h{-MmHsOnkX4L zlPqTx$#KCsm*g2@F`>W+C$!kV>5n35zS&C>YoHeGpAGY_3 CVJ8&; delta 216 zcmWNKJxhXN7)H+vg-ASpD`|tDFDlrJmbH{%4k@CbLV=1O1O|nhOZ|by1|J9~p~YFy zx!KL1pg8$6x~IbhhwIGDnYr{T<>LewPW<=?=!k0AgV+h7xLAFvm{AYoCc-&UVkAgn zk|o6*X&%Wi2}r~nnHGN=Qg9)kvhDT6kHIfD*^C6H&&pwHmSV8Gzbpv&OLpv4f( zV8XB*sA3a?8N(3<3x-obRW})|7#=a$ZRX<3Vw80R+Ug9n)dgs)D?<^3J3|G72SYo9 hC(u^k$rJe-7$qie6Hu9KCZNk`24-~tS*}1<4gjiZB_03( delta 195 zcmZ3av`A?~0XHiz0}BJ+NR48jcI3?dAP45AE~3}Osb3=#|t43Z4}3{ni! z8RRyn^29KDDl%{|C^3jLC^M)ts50m=s4jDwE9wbQw*+tPUW{8OX{30Ey-#%m4rY diff --git a/bin/main/com/loki/lochat/renderer/EnhancedChatRenderer.class b/bin/main/com/loki/lochat/renderer/EnhancedChatRenderer.class index b902ff8894f67051b2f53fa756e3b38c366366cc..853adb641d29603d99e2daa14851ab9ea126bd22 100644 GIT binary patch delta 1886 zcmbVMX>e0j6#j0uo8_fV3rz?@+aW=krV$ynFfF2%)`*Z6C|jXWUfb7_HiVD`DYaA< z1r-#$f>N*wq7_6fsIgQ*QA8FIao^V&{`eF9f&bc|u_kHKQyYSR0|Z7#idl1hdnBSUgbY%mWI4vTdZ zgQYs$9F>!)xWdr+uZd$tm$8_QyPR*cA&3bacQFhTr;Wpm67I%Caltg&6=JZ}winEq z*D=@ctL?C&3R5^Hix3~8pNeV`;bYBJm@Z)kW{O^3W~sp(j@b+@;jp=Gl2D7e48}xK zjwc!P1-=PZ)IsK$&*1ncJqh(_5EbST*+D20n$XN(NGeMybF6S!bHojHx7cHLn1cvQ zXhEwuY@TJV!9od9ED~NzzBQW^Tr44ugg9#%UuHuJ_i!v>uxrgOD<@$o+8Cr}C0P|O zSDNHhgqn=`yKq(YElNYORGi7oop{N%q6X~}?o}!2m1v{tFPG4X`v_-KINGQ&oUJlk zDPffwW{N1$=HvqP=zf*nBC*Vx?={9qjs!#I)$=T+__&hLuz1C3vsaw4&i6SdEozV> zGvs(!u8%0w+G5Hy)nEu-ovjU3H?CBa+jg6}By7bt@w=_u)Qx92o)+VzBKLL`sU@7K zh^iF`e>a|$uoKUTRnl!k>(C?N1vP|I$ii5%&5GUF!|@_Rp;)1Fia#W${w2IDGVB%H z6pP4hN?c5_*A6$u;!0C^DMMC$DjaE?to>7+YN9i>M_R%g)Z>_ao2L$MOL*r}k1|^A zRx{pZU>;SW!xG-d5wSMICoQ(&7*22;XYkQVx;O4}&{lqk1LC)gTGMCvg5z@$%Jk{u z_)@fGc6&cH;~SE{opqS;9fQupXuK1mQ6)Y;A}10`g5yU~>L@h)%#bUVXXc7Ej#f5Q zoOMihdttzESa3ZuFam?&Lmmpr@(Veuj+KZ*S?*39%4xN9sK5Y#$&_Ix|A9W-S(!bl z50xbbx51yrv=XDf*wllN+nC0z9Met=3ixwOnwQ4BJ~Zyf0v#&dMnf8r5*{dWb2slt z4AA~d>Pem8<(M><6>GU2on069=9s9#iX9lBR!n2{m12Qjf?~iBdX^9cUNrvyL5?bp8j8#<%%`wT*i308IKQ{-ML1SYBJBI*Qzugq~+O zY6XE@Ng!7d$khaL?f(PWcP)_nu~{4%=ws_NUHdP2n>6oDBJiiv$GSD|Eqd{8b-6+Z zw}9`%;9h_Bp)}qj$KL~szaJj}p`tzIe|=^q`mkE1vn+P zyIc(?we|8Ki_X@Na0Rp}r-;8^Q`HHRO)pi@ew>3{+md5toNfj^KBnqAoW>{gn?crB WG^Ve$=ePKt&aCABfS>RS+6+w@om;f_CT`WD`7IG@QFg2E)UZM zOk*(fO1=3J3Hg}85a#vSJw66aLSm*Kg(wzK#1J{hKHomrX?K+k&h>d5t}+QTVdqzc zfuaqwC6qwsCNYBu&6LBzWpSFAhq)4*sNij4+(>1uN(pXd53$_tEl;m3kwthIjBclW zk?bjUd*o8bLM6^8p$hXEwDP3_7puwtMWpN>3EYzD&Y$Jk9?S(?{!(hi4?LRI=2_ zt`dc>maqnE8A3}Pt`b$4d?m^C5}sAUv`*Po<||hoH7Kf7@Qb=Q9;Y8TK)RDvj+zfc zJIz(oruRIux60|`HvLR48un^mlJGJDJZKoLZNfeQuQW)>mRFUHbq=r1WuN7gDV-*~ zF5wL{bDK0Owh#v-ys3l;6jI^#Ez;vHye%New@ZUHEjYx_Nj4VCk7{E12;(Te)EF%` z;fRFyX@zaZt?`98DdD5`71F4`b48qHVDU;hA4~WIXL&(*qHdW1=kd9K&-l9V2Q^>d zI6o3zpuLD61bol?MkH#M<42wqvAzFyB7P!`s#&dwD-0p=j0(?mxnxhe)9&@kUID-G zh{!?gH*Sqw!_53dlf|zQO_8``xOEO6+4Wgh0 zvksv&1Xi8J5E{fBtI=YdZVeB@wU74rmo8z~AAVaifhPi~t14;CZX4NniN+ai8xAzk zSRQt)ZVZi8!>>c2vA!(h@)a7_Tf(E}1>tQ(O#u6eEKten0QL}Bq!M=kn}}4a#2UaV zBDE@s3!s*WUmtv4;6FS+$#I&8P zKQXbB#Sk;L;weB8$lsw*5Gztu=~gw~I%twe-*vlTQUwj-x&LXYQv}nXC*AWALw6g( zForrf7SYIr8RMzP6R5*kcoaF*$BDRxN%#l3WR}S+0#jHoOl3*PV@^U^1D3k)zbH@0FMRhG_rV>@kZ#15)A3(>c! zM56#EpiqGA9{((XN(AC=B1erYlsbM!<#z*7H=q^zQ4u?_i}y4oTFSaS3%l_mkBfdF zdrx-Car8+EV((`3NTCM3W(~EFvG+HEe9?k~&2&WWHmA4h*b1uCMTxu71M}$MdFbGI zk%9&MY?TqK<=;eM@7*h-!}pO< zHSJeJJ1wD%{IpLUWwewsT7DlH9lcjZ$J!NK*`2kJ>zJ@zZ zX8(!J5Dp-=IVtK?5NC)a1)xi6#W^xWatl6Hnj@qHpjCo8Pe_bnLYyEsouseWDf;%E zMgq>LI}K8-iXk25CiJCh?s#;=SA;?+Qo`3Hmj*jBC^QCIgGM5|72Z_bN7g%^Mi)(g gL$e{cfNyCGCv=IrdRe{yjH~oaPy8Bw#dTQz1NQFRumAu6 diff --git a/bin/main/com/loki/lochat/utils/platform/AdventureManager.class b/bin/main/com/loki/lochat/utils/platform/AdventureManager.class index a17f1181f54ee26ca85d8e67015c60a4813b17d8..75406568f8be2e604f55ff22c810431cfbd48d11 100644 GIT binary patch delta 93 zcmca2c1LW378m2!$p)O#lij!qjExw07#J8_fusk6K7%KNF@qO_3xhX9AcGG>5Q8s6 oFc3yDgfOHqgfgTvgfSE{L`;6jl^`6=zz@{N1jLLCd0u3|%g? dGlVb{GK5Wj$(0}+$-oa(&jiGb40&KyJ^;VV4sQSe diff --git a/bin/main/com/loki/lochat/utils/platform/FoliaUtil.class b/bin/main/com/loki/lochat/utils/platform/FoliaUtil.class index 2fa744fa3e40383919f6a21a1de75e74ffb3a6ea..d42262dec0e6540e6f5f8defd8e0c67f710c2349 100644 GIT binary patch delta 67 zcmca0e@A|U7$4(_$>Mze+FA@;3=9lr3~US*47?1M45AEH3=$0149W~P3~E5O4uc(o VK7#{;ErZkKR=yvM)|2b_g8-s?3@rcv delta 55 zcmca3e?fkO7$4)F$>Mze@^TF93=9lr3~US*47?1M45AEH3_1+f4EhYVKxjXCBHs^2 JtI1vbK>#-b3jzQD diff --git a/src/main/java/com/loki/lochat/commands/CommandManager.java b/src/main/java/com/loki/lochat/commands/CommandManager.java index b322e51..cffed59 100644 --- a/src/main/java/com/loki/lochat/commands/CommandManager.java +++ b/src/main/java/com/loki/lochat/commands/CommandManager.java @@ -1,16 +1,35 @@ package com.loki.lochat.commands; import com.loki.lochat.LoChat; -import com.loki.lochat.commands.admin.broadcast.*; -import com.loki.lochat.commands.admin.chat.*; -import com.loki.lochat.commands.admin.system.*; -import com.loki.lochat.commands.chat.*; -import com.loki.lochat.commands.messaging.*; -import com.loki.lochat.commands.moderation.ban.*; -import com.loki.lochat.commands.moderation.mute.*; -import com.loki.lochat.commands.moderation.warn.*; -import com.loki.lochat.commands.nick.*; -import com.loki.lochat.commands.rp.*; +import com.loki.lochat.commands.admin.broadcast.AnnounceCommand; +import com.loki.lochat.commands.admin.broadcast.DiscordCommand; +import com.loki.lochat.commands.admin.chat.ChatSpyCommand; +import com.loki.lochat.commands.admin.chat.ClearChatCommand; +import com.loki.lochat.commands.admin.chat.ClearChatConfigCommand; +import com.loki.lochat.commands.admin.system.LoChatCommand; +import com.loki.lochat.commands.admin.system.ReloadConfigCommand; +import com.loki.lochat.commands.chat.GlobalChatCommand; +import com.loki.lochat.commands.chat.LocalChatCommand; +import com.loki.lochat.commands.messaging.IgnoreCommand; +import com.loki.lochat.commands.messaging.IgnoreListCommand; +import com.loki.lochat.commands.messaging.MsgCommand; +import com.loki.lochat.commands.messaging.ReplyCommand; +import com.loki.lochat.commands.messaging.UnignoreCommand; +import com.loki.lochat.commands.moderation.ban.BanCommand; +import com.loki.lochat.commands.moderation.ban.UnbanCommand; +import com.loki.lochat.commands.moderation.mute.MuteBlameCommand; +import com.loki.lochat.commands.moderation.mute.MuteCommand; +import com.loki.lochat.commands.moderation.mute.MuteHistoryCommand; +import com.loki.lochat.commands.moderation.mute.MuteListCommand; +import com.loki.lochat.commands.moderation.mute.UnmuteCommand; +import com.loki.lochat.commands.moderation.warn.SilentWarnCommand; +import com.loki.lochat.commands.moderation.warn.WarnCommand; +import com.loki.lochat.commands.nick.NickCommand; +import com.loki.lochat.commands.nick.PlayerInfoCommand; +import com.loki.lochat.commands.rp.DoCommand; +import com.loki.lochat.commands.rp.MeCommand; +import com.loki.lochat.commands.rp.RollCommand; +import com.loki.lochat.commands.rp.TryCommand; import org.bukkit.command.PluginCommand; diff --git a/src/main/java/com/loki/lochat/commands/CustomCommand.java b/src/main/java/com/loki/lochat/commands/CustomCommand.java index b1c2074..38b6ff5 100644 --- a/src/main/java/com/loki/lochat/commands/CustomCommand.java +++ b/src/main/java/com/loki/lochat/commands/CustomCommand.java @@ -32,7 +32,9 @@ public final class CustomCommand extends Command { } @Override - public @NotNull List tabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull String[] args) throws IllegalArgumentException { + public @NotNull List tabComplete(@NotNull CommandSender sender, @NotNull String alias, @NotNull + String[] args) throws IllegalArgumentException { + // Базовое автодополнение - можно расширить при необходимости return new ArrayList<>(); } diff --git a/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java b/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java index dcb5f23..24ee704 100644 --- a/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/broadcast/DiscordCommand.java @@ -70,7 +70,10 @@ public class DiscordCommand implements CommandExecutor, TabCompleter { } @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + public @Nullable List onTabComplete( + @NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, + @NotNull String[] args + ) { if (!sender.hasPermission("lochat.discord.admin")) { return null; } diff --git a/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java b/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java index ff83fb2..0506450 100644 --- a/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/chat/ClearChatConfigCommand.java @@ -59,7 +59,10 @@ public class ClearChatConfigCommand implements CommandExecutor, TabCompleter { } @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + public @Nullable List onTabComplete( + @NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, + @NotNull String[] args + ) { if (args.length == 1) { return List.of("enable", "disable", "message", "status").stream() .filter(s -> s.startsWith(args[0].toLowerCase())).toList(); diff --git a/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java b/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java index e697fb6..d771d53 100644 --- a/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java +++ b/src/main/java/com/loki/lochat/commands/admin/system/LoChatCommand.java @@ -54,7 +54,10 @@ public class LoChatCommand implements CommandExecutor, TabCompleter { } @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + public @Nullable List onTabComplete( + @NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, + @NotNull String[] args + ) { if (!sender.hasPermission("lochat.admin")) { return new ArrayList<>(); } diff --git a/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java b/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java index 51bf317..604813e 100644 --- a/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java +++ b/src/main/java/com/loki/lochat/commands/messaging/IgnoreListCommand.java @@ -44,7 +44,9 @@ public class IgnoreListCommand implements CommandExecutor { player.sendMessage(ChatFormatter.parse("⚖C9◆ &f" + name)); } } - player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.list-footer").replace("{count}", String.valueOf(ignored.size())))); + player.sendMessage(ChatFormatter.parse(plugin.getMessageConfig().get("ignore.list-footer") + .replace("{count}", String.valueOf(ignored.size())))); + return true; } } diff --git a/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java b/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java index 249766d..d18941a 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/ban/BanCommand.java @@ -73,33 +73,13 @@ public class BanCommand implements CommandExecutor, TabCompleter { return true; } - String timeStr = null; - StringBuilder reasonBuilder = new StringBuilder(); - for (int i = 1; i < args.length; i++) { - if (timeStr == null && isTimeFormat(args[i])) { - timeStr = args[i]; - } else { - if (reasonBuilder.length() > 0) { - reasonBuilder.append(" "); - } - reasonBuilder.append(args[i]); - } + DurationResult parsed = parseDuration(sender, args, msg); + if (!parsed.valid) { + return true; } - long durationMs; - if (timeStr == null || timeStr.isEmpty()) { - durationMs = 0; - } else if (timeStr.equalsIgnoreCase("perm") || timeStr.equals("0")) { - durationMs = 0; - } else { - durationMs = muteService.parseTime(timeStr); - if (durationMs < 0) { - sender.sendMessage(ChatFormatter.parse(msg.getInvalidTime())); - return true; - } - } - - String reason = reasonBuilder.length() > 0 ? reasonBuilder.toString() : msg.getModerationDefaultReason(); + long durationMs = parsed.durationMs; + String reason = parsed.reason; String finalName = PlayerUtil.getPlayerName(targetUuid); if (finalName == null) { finalName = targetName; @@ -122,6 +102,39 @@ public class BanCommand implements CommandExecutor, TabCompleter { return true; } + private record DurationResult(long durationMs, String reason, boolean valid) { } + + private DurationResult parseDuration(CommandSender sender, String[] args, MessagesConfig msg) { + String timeStr = null; + StringBuilder reasonBuilder = new StringBuilder(); + for (int i = 1; i < args.length; i++) { + if (timeStr == null && isTimeFormat(args[i])) { + timeStr = args[i]; + } else { + if (reasonBuilder.length() > 0) { + reasonBuilder.append(" "); + } + reasonBuilder.append(args[i]); + } + } + + long durationMs; + if (timeStr == null || timeStr.isEmpty()) { + durationMs = 0; + } else if (timeStr.equalsIgnoreCase("perm") || timeStr.equals("0")) { + durationMs = 0; + } else { + durationMs = muteService.parseTime(timeStr); + if (durationMs < 0) { + sender.sendMessage(ChatFormatter.parse(msg.getInvalidTime())); + return new DurationResult(0, "", false); + } + } + + String reason = reasonBuilder.length() > 0 ? reasonBuilder.toString() : msg.getModerationDefaultReason(); + return new DurationResult(durationMs, reason, true); + } + private boolean isTimeFormat(String s) { return s.equalsIgnoreCase("perm") || s.matches("\\d+[dhms]?"); } diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java index 90c9ef2..7eae4be 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteBlameCommand.java @@ -56,7 +56,9 @@ public class MuteBlameCommand implements CommandExecutor, TabCompleter { String status = e.unmuted ? "⚖C9Размучен" : (e.duration == 0 ? "&#CF6679Активен (навсегда)" : System.currentTimeMillis() > e.mutedAt + e.duration ? "&#B798A8Истёк" : "&#CF6679Активен"); sender.sendMessage("⚖C9" + idx + ". &f" + (e.playerName != null ? e.playerName : "???") + " &#B798A8— " + status); - sender.sendMessage(" &f" + fmt.format(new Date(e.mutedAt)) + " &#B798A8Длительность: &f" + (e.duration == 0 ? "навсегда" : muteService.formatTime(e.duration))); + sender.sendMessage(" &f" + fmt.format(new Date(e.mutedAt)) + " &#B798A8Длительность: &f" + (e.duration + == 0 ? "навсегда" : muteService.formatTime(e.duration))); + sender.sendMessage(" &#B798A8Причина: &f" + (e.reason != null ? e.reason : "—")); idx++; } @@ -64,7 +66,10 @@ public class MuteBlameCommand implements CommandExecutor, TabCompleter { } @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + public @Nullable List onTabComplete( + @NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, + @NotNull String[] args + ) { List c = new ArrayList<>(); if (args.length == 1) { for (Player p : Bukkit.getOnlinePlayers()) { diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java index cdc1145..85f41d9 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteCommand.java @@ -31,6 +31,8 @@ public class MuteCommand implements CommandExecutor, TabCompleter { this.muteService = plugin.getServiceRegistry().get(MuteService.class); } + private record ParsedArgs(String targetName, long duration, String reason, boolean silent) { } + @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { @@ -49,7 +51,38 @@ public class MuteCommand implements CommandExecutor, TabCompleter { return true; } - // Парсим аргументы + ParsedArgs parsed = parseArgs(sender, args, hm); + if (parsed == null) { + return true; + } + + String targetName = parsed.targetName; + long duration = parsed.duration; + String reason = parsed.reason; + boolean silent = parsed.silent; + + if (sender instanceof Player p && !muteService.canMuteForDuration(p, duration)) { + long max = muteService.getMaxDuration(p); + sender.sendMessage(ChatFormatter.parse("&#CF6679Нельзя мутить на такой срок! &#B798A8Максимум: ẲE9" + + (max == 0 ? "навсегда" : muteService.formatTime(max)))); + return true; + } + + UUID targetUUID = com.loki.lochat.utils.player.PlayerUtil.findPlayerUUID(targetName); + if (targetUUID == null) { + sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); + return true; + } + if (muteService.isMuted(targetUUID)) { + sender.sendMessage(ChatFormatter.parse("&#CF6679Игрок уже замучен!")); + return true; + } + + doMute(sender, hm, targetUUID, targetName, duration, reason, silent); + return true; + } + + private ParsedArgs parseArgs(CommandSender sender, String[] args, MessagesConfig hm) { String targetName = null; String timeStr = null; boolean silent = false; @@ -72,45 +105,39 @@ public class MuteCommand implements CommandExecutor, TabCompleter { if (silent && !sender.hasPermission("lochat.mute.silent")) { sender.sendMessage(ChatFormatter.parse(hm.getNoSilentMutePermission())); - return true; + return null; } String reason = reasonBuilder.length() > 0 ? reasonBuilder.toString() : hm.getDefaultMuteReason(); - // Длительность - long duration; + long duration = resolveDuration(sender, timeStr, hm); + if (duration < 0) { + return null; + } + + return new ParsedArgs(targetName, duration, reason, silent); + } + + private long resolveDuration(CommandSender sender, String timeStr, MessagesConfig hm) { if (timeStr == null || timeStr.isEmpty()) { - duration = sender instanceof Player p ? muteService.getMaxDuration(p) : 0; - if (duration == -1) { - duration = muteService.parseTime(hm.getDefaultMuteDuration()); - } - } else if (timeStr.equalsIgnoreCase("perm") || timeStr.equals("0")) { - duration = 0; - } else { - duration = muteService.parseTime(timeStr); - if (duration < 0) { - sender.sendMessage(ChatFormatter.parse(hm.getMuteTimeHelp())); - return true; + long dur = sender instanceof Player p ? muteService.getMaxDuration(p) : 0; + if (dur == -1) { + dur = muteService.parseTime(hm.getDefaultMuteDuration()); } + return dur; } + if (timeStr.equalsIgnoreCase("perm") || timeStr.equals("0")) { + return 0; + } + long dur = muteService.parseTime(timeStr); + if (dur < 0) { + sender.sendMessage(ChatFormatter.parse(hm.getMuteTimeHelp())); + } + return dur; + } - if (sender instanceof Player p && !muteService.canMuteForDuration(p, duration)) { - long max = muteService.getMaxDuration(p); - sender.sendMessage(ChatFormatter.parse("&#CF6679Нельзя мутить на такой срок! &#B798A8Максимум: ẲE9" + - (max == 0 ? "навсегда" : muteService.formatTime(max)))); - return true; - } - - UUID targetUUID = com.loki.lochat.utils.player.PlayerUtil.findPlayerUUID(targetName); - if (targetUUID == null) { - sender.sendMessage(plugin.getMessageConfig().getComponent("errors.player-not-found")); - return true; - } - if (muteService.isMuted(targetUUID)) { - sender.sendMessage(ChatFormatter.parse("&#CF6679Игрок уже замучен!")); - return true; - } - + private void doMute(CommandSender sender, MessagesConfig hm, UUID targetUUID, + String targetName, long duration, String reason, boolean silent) { Player target = Bukkit.getPlayer(targetUUID); String finalName = com.loki.lochat.utils.player.PlayerUtil.getPlayerName(targetUUID); String op = sender.getName(); @@ -146,8 +173,6 @@ public class MuteCommand implements CommandExecutor, TabCompleter { String c = voiceCmd.replace("{player}", finalName).replace("{uuid}", targetUUID.toString()); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), c); } - - return true; } private boolean isTimeFormat(String s) { diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java index 967090e..ce8f184 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/MuteHistoryCommand.java @@ -76,7 +76,10 @@ public class MuteHistoryCommand implements CommandExecutor, TabCompleter { } @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + public @Nullable List onTabComplete( + @NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, + @NotNull String[] args + ) { List c = new ArrayList<>(); if (args.length == 1) { for (Player p : Bukkit.getOnlinePlayers()) { diff --git a/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java b/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java index 361dbb4..d3d6d1d 100644 --- a/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java +++ b/src/main/java/com/loki/lochat/commands/moderation/mute/UnmuteCommand.java @@ -84,7 +84,10 @@ public class UnmuteCommand implements CommandExecutor, TabCompleter { } @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { + public @Nullable List onTabComplete( + @NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, + @NotNull String[] args + ) { List c = new ArrayList<>(); if (args.length == 1) { for (Player p : Bukkit.getOnlinePlayers()) { diff --git a/src/main/java/com/loki/lochat/commands/rp/DoCommand.java b/src/main/java/com/loki/lochat/commands/rp/DoCommand.java index 522a417..890bd38 100644 --- a/src/main/java/com/loki/lochat/commands/rp/DoCommand.java +++ b/src/main/java/com/loki/lochat/commands/rp/DoCommand.java @@ -35,7 +35,8 @@ public class DoCommand extends PlayerCommand { int cooldown = plugin.getConfigManager().getInt("rp.cooldowns.do", 0); if (cooldown > 0 && playerService.isOnCooldown(player.getUniqueId(), "rp_do", cooldown)) { int remaining = playerService.getRemainingCooldown(player.getUniqueId(), "rp_do", cooldown); - String msg = plugin.getConfigManager().getMessagesConfig().getCooldownMessage().replace("{remaining}", String.valueOf(remaining)); + String msg = plugin.getConfigManager().getMessagesConfig().getCooldownMessage() + .replace("{remaining}", String.valueOf(remaining)); player.sendMessage(ChatFormatter.parse(msg)); return true; } diff --git a/src/main/java/com/loki/lochat/commands/rp/MeCommand.java b/src/main/java/com/loki/lochat/commands/rp/MeCommand.java index cf8fbe2..6d46948 100644 --- a/src/main/java/com/loki/lochat/commands/rp/MeCommand.java +++ b/src/main/java/com/loki/lochat/commands/rp/MeCommand.java @@ -35,7 +35,8 @@ public class MeCommand extends PlayerCommand { int cooldown = plugin.getConfigManager().getInt("rp.cooldowns.me", 0); if (cooldown > 0 && playerService.isOnCooldown(player.getUniqueId(), "rp_me", cooldown)) { int remaining = playerService.getRemainingCooldown(player.getUniqueId(), "rp_me", cooldown); - String msg = plugin.getConfigManager().getMessagesConfig().getCooldownMessage().replace("{remaining}", String.valueOf(remaining)); + String msg = plugin.getConfigManager().getMessagesConfig().getCooldownMessage() + .replace("{remaining}", String.valueOf(remaining)); player.sendMessage(ChatFormatter.parse(msg)); return true; } diff --git a/src/main/java/com/loki/lochat/commands/rp/TryCommand.java b/src/main/java/com/loki/lochat/commands/rp/TryCommand.java index 661dc1d..5dd38be 100644 --- a/src/main/java/com/loki/lochat/commands/rp/TryCommand.java +++ b/src/main/java/com/loki/lochat/commands/rp/TryCommand.java @@ -38,7 +38,8 @@ public class TryCommand extends PlayerCommand { int cooldown = plugin.getConfigManager().getInt("rp.cooldowns.try", 0); if (cooldown > 0 && playerService.isOnCooldown(player.getUniqueId(), "rp_try", cooldown)) { int remaining = playerService.getRemainingCooldown(player.getUniqueId(), "rp_try", cooldown); - String msg = plugin.getConfigManager().getMessagesConfig().getCooldownMessage().replace("{remaining}", String.valueOf(remaining)); + String msg = plugin.getConfigManager().getMessagesConfig().getCooldownMessage() + .replace("{remaining}", String.valueOf(remaining)); player.sendMessage(ChatFormatter.parse(msg)); return true; } diff --git a/src/main/java/com/loki/lochat/config/AppearanceConfig.java b/src/main/java/com/loki/lochat/config/AppearanceConfig.java index 017cb32..7518a85 100644 --- a/src/main/java/com/loki/lochat/config/AppearanceConfig.java +++ b/src/main/java/com/loki/lochat/config/AppearanceConfig.java @@ -35,9 +35,9 @@ public class AppearanceConfig extends BaseConfig { */ private void loadEmojiCache() { emojiCache.clear(); - if (config.isConfigurationSection("emojis")) { - for (String key : config.getConfigurationSection("emojis").getKeys(false)) { - emojiCache.put(key, config.getString("emojis." + key)); + if (getConfig().isConfigurationSection("emojis")) { + for (String key : getConfig().getConfigurationSection("emojis").getKeys(false)) { + emojiCache.put(key, getConfig().getString("emojis." + key)); } } } @@ -45,7 +45,7 @@ public class AppearanceConfig extends BaseConfig { // ========== ПРЕФИКСЫ ========== private String getPrefixValue(String chatType, String key, String defaultValue) { - return config.getString("prefixes." + chatType + "." + key, defaultValue); + return getConfig().getString("prefixes." + chatType + "." + key, defaultValue); } public String getGlobalEmoji() { @@ -55,7 +55,7 @@ public class AppearanceConfig extends BaseConfig { return getPrefixValue("global", "text", "GLOBAL"); } public List getGlobalColors() { - return config.getStringList("prefixes.global.colors"); + return getConfig().getStringList("prefixes.global.colors"); } public String getGlobalSeparatorText() { return getPrefixValue("global", "separator.text", " ▶ "); @@ -74,7 +74,7 @@ public class AppearanceConfig extends BaseConfig { return getPrefixValue("local", "text", "LOCAL"); } public List getLocalColors() { - return config.getStringList("prefixes.local.colors"); + return getConfig().getStringList("prefixes.local.colors"); } public String getLocalSeparatorText() { return getPrefixValue("local", "separator.text", " ▶ "); @@ -89,20 +89,20 @@ public class AppearanceConfig extends BaseConfig { // ========== ФОРМАТ СООБЩЕНИЙ ========== public String getGlobalChatFormat() { - return config.getString("chat-format.global", "{emoji} {prefix} {separator} {player} : {message}"); + return getConfig().getString("chat-format.global", "{emoji} {prefix} {separator} {player} : {message}"); } public String getLocalChatFormat() { - return config.getString("chat-format.local", "{emoji} {prefix} {separator} {player} : {message}"); + return getConfig().getString("chat-format.local", "{emoji} {prefix} {separator} {player} : {message}"); } // ========== HOVER ЭФФЕКТЫ ========== public boolean isHoverEnabled() { - return config.getBoolean("hover.enabled", true); + return getConfig().getBoolean("hover.enabled", true); } public List getHoverFormat() { - return config.getStringList("hover.format"); + return getConfig().getStringList("hover.format"); } // ========== ЭМОДЗИ ========== @@ -117,20 +117,20 @@ public class AppearanceConfig extends BaseConfig { // ========== НАСТРОЙКИ ЧАТА ========== public int getLocalRadius() { - return config.getInt("chat.local_radius", 100); + return getConfig().getInt("chat.local_radius", 100); } public int getClearLines() { - return config.getInt("chat.clear_lines", 100); + return getConfig().getInt("chat.clear_lines", 100); } public int getMinMessageLength() { - return config.getInt("chat.min_message_length", 1); + return getConfig().getInt("chat.min_message_length", 1); } public int getMaxMessageLength() { - return config.getInt("chat.max_message_length", 2000); + return getConfig().getInt("chat.max_message_length", 2000); } private String getChatColor(String type, String defaultColor) { - return config.getString("chat.colors." + type, defaultColor); + return getConfig().getString("chat.colors." + type, defaultColor); } public String getNobodyHeardColor() { @@ -152,18 +152,18 @@ public class AppearanceConfig extends BaseConfig { // ========== DISCORD ========== public String getDiscordEmoji(String event) { - return config.getString("discord.emojis." + event, ""); + return getConfig().getString("discord.emojis." + event, ""); } public String getDiscordEventTitle(String event) { - return config.getString("discord.event_titles." + event, ""); + return getConfig().getString("discord.event_titles." + event, ""); } public String getDefaultAvatarUrl() { - return config.getString("discord.avatar_urls.default", "https://mc-heads.net/avatar/minecraft/64"); + return getConfig().getString("discord.avatar_urls.default", "https://mc-heads.net/avatar/minecraft/64"); } public String getPlayerAvatarUrl() { - return config.getString("discord.avatar_urls.player", "https://mc-heads.net/avatar/{player}/64"); + return getConfig().getString("discord.avatar_urls.player", "https://mc-heads.net/avatar/{player}/64"); } public String getDefaultEmbedColor() { - return config.getString("discord.default_embed_color", "5865F2"); + return getConfig().getString("discord.default_embed_color", "5865F2"); } } diff --git a/src/main/java/com/loki/lochat/config/BaseConfig.java b/src/main/java/com/loki/lochat/config/BaseConfig.java index fe6eb29..2f6296d 100644 --- a/src/main/java/com/loki/lochat/config/BaseConfig.java +++ b/src/main/java/com/loki/lochat/config/BaseConfig.java @@ -14,8 +14,8 @@ import java.nio.file.Files; */ public abstract class BaseConfig { protected final JavaPlugin plugin; - protected File configFile; - protected FileConfiguration config; + private File configFile; + private FileConfiguration config; private final String fileName; private final boolean inConfigFolder; @@ -112,6 +112,10 @@ public abstract class BaseConfig { // Переопределяется в подклассах } + protected File getConfigFile() { + return configFile; + } + /** * Получить FileConfiguration */ diff --git a/src/main/java/com/loki/lochat/config/FiltersConfig.java b/src/main/java/com/loki/lochat/config/FiltersConfig.java index 7176d46..226083b 100644 --- a/src/main/java/com/loki/lochat/config/FiltersConfig.java +++ b/src/main/java/com/loki/lochat/config/FiltersConfig.java @@ -16,146 +16,146 @@ public class FiltersConfig extends BaseConfig { // ── Капс ──────────────────────────────────────────────────────────────────── public boolean isCapsEnabled() { - return config.getBoolean("caps.enabled", true); + return getConfig().getBoolean("caps.enabled", true); } public int getCapsMaxPercent() { - return config.getInt("caps.max-percent", 70); + return getConfig().getInt("caps.max-percent", 70); } public int getCapsMinLength() { - return config.getInt("caps.min-length", 5); + return getConfig().getInt("caps.min-length", 5); } public boolean isCapsAutoLowercase() { - return config.getBoolean("caps.auto-lowercase", true); + return getConfig().getBoolean("caps.auto-lowercase", true); } public boolean isCapsBlock() { - return config.getBoolean("caps.block", false); + return getConfig().getBoolean("caps.block", false); } // ── Мат ───────────────────────────────────────────────────────────────────── public boolean isSwearEnabled() { - return config.getBoolean("swear.enabled", true); + return getConfig().getBoolean("swear.enabled", true); } public String getSwearAction() { - return config.getString("swear.action", "replace"); + return getConfig().getString("swear.action", "replace"); } public String getSwearReplacementChar() { - return config.getString("swear.replacement-char", "*"); + return getConfig().getString("swear.replacement-char", "*"); } public boolean isSwearCheckFragments() { - return config.getBoolean("swear.check-fragments", true); + return getConfig().getBoolean("swear.check-fragments", true); } public boolean isSwearIgnoreCase() { - return config.getBoolean("swear.ignore-case", true); + return getConfig().getBoolean("swear.ignore-case", true); } public boolean isSwearUseExternalFile() { - return config.getBoolean("swear.use-external-file", true); + return getConfig().getBoolean("swear.use-external-file", true); } public List getSwearWords() { - return config.getStringList("swear.words"); + return getConfig().getStringList("swear.words"); } public String getSwearBlockMessage() { - return config.getString("swear.block-message", "&#CF6679Мат запрещён"); + return getConfig().getString("swear.block-message", "&#CF6679Мат запрещён"); } // ── Реклама ───────────────────────────────────────────────────────────────── public boolean isAdvertisingEnabled() { - return config.getBoolean("advertising.enabled", true); + return getConfig().getBoolean("advertising.enabled", true); } public boolean isBlockHiddenUrls() { - return config.getBoolean("advertising.block-hidden-urls", true); + return getConfig().getBoolean("advertising.block-hidden-urls", true); } public boolean isBlockDomains() { - return config.getBoolean("advertising.block-domains", true); + return getConfig().getBoolean("advertising.block-domains", true); } public List getWhitelistedDomains() { - return config.getStringList("advertising.whitelist"); + return getConfig().getStringList("advertising.whitelist"); } public List getBlacklistedDomains() { - return config.getStringList("advertising.blacklist"); + return getConfig().getStringList("advertising.blacklist"); } public String getAdvertisingBlockMessage() { - return config.getString("advertising.blocked-message", "&#CF6679Реклама запрещена!"); + return getConfig().getString("advertising.blocked-message", "&#CF6679Реклама запрещена!"); } // ── IP адреса ─────────────────────────────────────────────────────────────── public boolean isIpEnabled() { - return config.getBoolean("ip.enabled", true); + return getConfig().getBoolean("ip.enabled", true); } public boolean isIpBlock() { - return config.getBoolean("ip.block", false); + return getConfig().getBoolean("ip.block", false); } public String getIpReplacement() { - return config.getString("ip.replacement", "[IP скрыт]"); + return getConfig().getString("ip.replacement", "[IP скрыт]"); } public String getIpBlockMessage() { - return config.getString("ip.blocked-message", "&#CF6679IP адреса запрещены!"); + return getConfig().getString("ip.blocked-message", "&#CF6679IP адреса запрещены!"); } // ── Повторяющиеся символы ─────────────────────────────────────────────────── public boolean isRepeatEnabled() { - return config.getBoolean("repeat.enabled", true); + return getConfig().getBoolean("repeat.enabled", true); } public int getRepeatMaxRepeats() { - return config.getInt("repeat.max-repeats", 3); + return getConfig().getInt("repeat.max-repeats", 3); } // ── Флуд ──────────────────────────────────────────────────────────────────── public boolean isFloodEnabled() { - return config.getBoolean("flood.enabled", true); + return getConfig().getBoolean("flood.enabled", true); } public int getFloodMaxMessages() { - return config.getInt("flood.max-messages", 5); + return getConfig().getInt("flood.max-messages", 5); } public int getFloodTimePeriod() { - return config.getInt("flood.time-period", 10); + return getConfig().getInt("flood.time-period", 10); } public String getFloodBlockMessage() { - return config.getString("flood.block-message", "&#CF6679Не флудите!"); + return getConfig().getString("flood.block-message", "&#CF6679Не флудите!"); } // ── Спам ──────────────────────────────────────────────────────────────────── public boolean isSpamEnabled() { - return config.getBoolean("spam.enabled", true); + return getConfig().getBoolean("spam.enabled", true); } public int getSpamMaxSimilarMessages() { - return config.getInt("spam.max-similar-messages", 3); + return getConfig().getInt("spam.max-similar-messages", 3); } public int getSpamSimilarityThreshold() { - return config.getInt("spam.similarity-threshold", 80); + return getConfig().getInt("spam.similarity-threshold", 80); } public String getSpamBlockMessage() { - return config.getString("spam.block-message", "&#CF6679Не отправляйте одинаковые сообщения"); + return getConfig().getString("spam.block-message", "&#CF6679Не отправляйте одинаковые сообщения"); } } diff --git a/src/main/java/com/loki/lochat/config/MessagesConfig.java b/src/main/java/com/loki/lochat/config/MessagesConfig.java index 91212ec..c2e792e 100644 --- a/src/main/java/com/loki/lochat/config/MessagesConfig.java +++ b/src/main/java/com/loki/lochat/config/MessagesConfig.java @@ -14,158 +14,163 @@ public class MessagesConfig extends BaseConfig { // ── Общие сообщения ──────────────────────────────────────────────────────── public String getNoPermission() { - return config.getString("general.no_permission", "&#CF6679Нет прав!"); + return getConfig().getString("general.no_permission", "&#CF6679Нет прав!"); } public String getPlayerOnly() { - return config.getString("general.player_only", "&#CF6679Только для игроков!"); + return getConfig().getString("general.player_only", "&#CF6679Только для игроков!"); } public String getPlayerNotFound() { - return config.getString("general.player_not_found", "&#CF6679Игрок не найден!"); + return getConfig().getString("general.player_not_found", "&#CF6679Игрок не найден!"); } // ── Кулдаун ──────────────────────────────────────────────────────────────── public String getCooldownMessage() { - return config.getString("commands.cooldown.message", "&#B798A8Подождите ẲE9{remaining} &#B798A8сек"); + return getConfig().getString("commands.cooldown.message", "&#B798A8Подождите ẲE9{remaining} &#B798A8сек"); } // ── Локальный чат ────────────────────────────────────────────────────────── public String getNobodyHeard() { - return config.getString("local_chat.nobody_heard", "⚖C9Вас никто не услышал &#B798A8— рядом нет игроков"); + return getConfig().getString("local_chat.nobody_heard", "⚖C9Вас никто не услышал &#B798A8— рядом нет игроков"); } // ── Мут ──────────────────────────────────────────────────────────────────── public String getMutedMessage() { - return config.getString("mute.muted_message", "&#CF6679Вы замучены! &#B798A8Причина: ẲE9{reason}&#B798A8. Осталось: ẲE9{time}"); + return getConfig().getString("mute.muted_message", "&#CF6679Вы замучены! &#B798A8Причина: ẲE9{reason}" + + "&#B798A8. Осталось: ẲE9{time}"); } public String getMutedPermanent() { - return config.getString("mute.muted_permanent", "&#CF6679Вы замучены навсегда! &#B798A8Причина: ẲE9{reason}"); + return getConfig().getString("mute.muted_permanent", "&#CF6679Вы замучены навсегда! &#B798A8Причина: ẲE9{reason}"); } public String getPlayerMuted() { - return config.getString("mute.player_muted", "⚖C9Игрок ẲE9{player} ⚖C9замучен на ẲE9{time}⚖C9. Причина: &#B798A8{reason}"); + return getConfig().getString("mute.player_muted", "⚖C9Игрок ẲE9{player} ⚖C9замучен на" + + "ẲE9{time}⚖C9. Причина: &#B798A8{reason}"); } public String getPlayerMutedPermanent() { - return config.getString("mute.player_muted_permanent", "⚖C9Игрок ẲE9{player} ⚖C9замучен навсегда. Причина: &#B798A8{reason}"); + return getConfig().getString("mute.player_muted_permanent", "⚖C9Игрок ẲE9{player} ⚖C9замучен" + + "навсегда. Причина: &#B798A8{reason}"); } public String getPlayerMutedSilent() { - return config.getString("mute.player_muted_silent", "&#B798A8[⚖C9ТИХИЙ МУТ&#B798A8] ẲE9{player} &#B798A8замучен на ẲE9{time}"); + return getConfig().getString("mute.player_muted_silent", "&#B798A8[⚖C9ТИХИЙ МУТ&#B798A8] ẲE9{player}" + + "&#B798A8замучен на ẲE9{time}"); } public String getPlayerUnmuted() { - return config.getString("mute.player_unmuted", "⚖C9Игрок ẲE9{player} ⚖C9размучен"); + return getConfig().getString("mute.player_unmuted", "⚖C9Игрок ẲE9{player} ⚖C9размучен"); } public String getPlayerNotMuted() { - return config.getString("mute.not_muted", "&#B798A8Игрок ẲE9{player} &#B798A8не замучен"); + return getConfig().getString("mute.not_muted", "&#B798A8Игрок ẲE9{player} &#B798A8не замучен"); } public String getPlayerNotMutedSimple() { - return config.getString("mute.player_not_muted_simple", "&#CF6679Игрок не замучен!"); + return getConfig().getString("mute.player_not_muted_simple", "&#CF6679Игрок не замучен!"); } public String getInvalidTime() { - return config.getString("mute.invalid_time", "&#CF6679Неверный формат времени!"); + return getConfig().getString("mute.invalid_time", "&#CF6679Неверный формат времени!"); } public String getAlreadyMuted() { - return config.getString("mute.already_muted", "&#CF6679Игрок уже замучен!"); + return getConfig().getString("mute.already_muted", "&#CF6679Игрок уже замучен!"); } public String getNoSilentUnmutePermission() { - return config.getString("mute.no_silent_unmute_permission", "&#CF6679Нет права на тихий размут!"); + return getConfig().getString("mute.no_silent_unmute_permission", "&#CF6679Нет права на тихий размут!"); } public String getNoSilentMutePermission() { - return config.getString("commands.mute.no_silent_permission", "&#CF6679Нет права на тихий мут"); + return getConfig().getString("commands.mute.no_silent_permission", "&#CF6679Нет права на тихий мут"); } public String getMuteUsage() { - return config.getString("commands.mute.usage", "&#B798A8Использование: ẲE9/mute <ник> [время] [-s] [причина]"); + return getConfig().getString("commands.mute.usage", "&#B798A8Использование: ẲE9/mute <ник> [время] [-s] [причина]"); } public String getMuteTimeHelp() { - return config.getString("commands.mute.time_help", "⚖C9Время: ẲE91d⚖C9, ẲE92h⚖C9, ẲE930m⚖C9, ẲE960s⚖C9, ẲE9perm"); + return getConfig().getString("commands.mute.time_help", "⚖C9Время: ẲE91d⚖C9, ẲE92h⚖C9, ẲE930m⚖C9, ẲE960s⚖C9, ẲE9perm"); } public String getMuteSilentHelp() { - return config.getString("commands.mute.silent_help", "&#B798A8-s ⚖C9— тихий мут (право ẲE9lochat.mute.silent⚖C9)"); + return getConfig().getString("commands.mute.silent_help", "&#B798A8-s ⚖C9— тихий мут (право" + + "ẲE9lochat.mute.silent⚖C9)"); } public String getDefaultMuteReason() { - return config.getString("commands.mute.default_reason", "Без причины"); + return getConfig().getString("commands.mute.default_reason", "Без причины"); } public String getDefaultMuteDuration() { - return config.getString("commands.mute.default_duration", "7d"); + return getConfig().getString("commands.mute.default_duration", "7d"); } // ── ЛС ───────────────────────────────────────────────────────────────────── public String getNoReplyTarget() { - return config.getString("private_messages.no_reply_target", "&#CF6679Нет цели для ответа"); + return getConfig().getString("private_messages.no_reply_target", "&#CF6679Нет цели для ответа"); } public String getPlayerOffline() { - return config.getString("private_messages.player_offline", "&#CF6679Игрок ẲE9{player} &#CF6679не в сети"); + return getConfig().getString("private_messages.player_offline", "&#CF6679Игрок ẲE9{player} &#CF6679не в сети"); } public String getCannotMessageSelf() { - return config.getString("private_messages.cannot_message_self", "&#CF6679Нельзя писать самому себе"); + return getConfig().getString("private_messages.cannot_message_self", "&#CF6679Нельзя писать самому себе"); } // ── Игнор ────────────────────────────────────────────────────────────────── public String getPlayerIgnored() { - return config.getString("ignore.player_ignored", "⚖C9Игрок ẲE9{player} ⚖C9добавлен в игнор"); + return getConfig().getString("ignore.player_ignored", "⚖C9Игрок ẲE9{player} ⚖C9добавлен в игнор"); } public String getPlayerUnignored() { - return config.getString("ignore.player_unignored", "⚖C9Игрок ẲE9{player} ⚖C9убран из игнора"); + return getConfig().getString("ignore.player_unignored", "⚖C9Игрок ẲE9{player} ⚖C9убран из игнора"); } public String getAlreadyIgnored() { - return config.getString("ignore.already_ignored", "&#B798A8Игрок ẲE9{player} &#B798A8уже в игноре"); + return getConfig().getString("ignore.already_ignored", "&#B798A8Игрок ẲE9{player} &#B798A8уже в игноре"); } public String getNotIgnored() { - return config.getString("ignore.not_ignored", "&#B798A8Игрок ẲE9{player} &#B798A8не в игноре"); + return getConfig().getString("ignore.not_ignored", "&#B798A8Игрок ẲE9{player} &#B798A8не в игноре"); } public String getCannotIgnoreSelf() { - return config.getString("ignore.cannot_ignore_self", "&#CF6679Нельзя игнорировать самого себя"); + return getConfig().getString("ignore.cannot_ignore_self", "&#CF6679Нельзя игнорировать самого себя"); } public String getIgnoreListEmpty() { - return config.getString("ignore.ignore_list_empty", "&#B798A8Список игнора пуст"); + return getConfig().getString("ignore.ignore_list_empty", "&#B798A8Список игнора пуст"); } public String getIgnoreListHeader() { - return config.getString("ignore.ignore_list_header", "&#B798A8Игнорируемые игроки⚖C9:"); + return getConfig().getString("ignore.ignore_list_header", "&#B798A8Игнорируемые игроки⚖C9:"); } // ── Модерация (варны / баны) ──────────────────────────────────────────────── public String getModerationDefaultReason() { - return config.getString("moderation.default_reason", "Без причины"); + return getConfig().getString("moderation.default_reason", "Без причины"); } public String getModerationDurationPermanent() { - return config.getString("moderation.duration_permanent", "навсегда"); + return getConfig().getString("moderation.duration_permanent", "навсегда"); } /** * MiniMessage + legacy &# цвета; плейсхолдеры {reason},{moderator},{duration},{player}; перевод строки \\n */ public String getBanKickMessage() { - return config.getString("moderation.ban_kick_message", defaultBanKick()); + return getConfig().getString("moderation.ban_kick_message", defaultBanKick()); } private String defaultBanKick() { @@ -178,42 +183,44 @@ public class MessagesConfig extends BaseConfig { } public String getWarnReceived() { - return config.getString("moderation.warn_received", "&#CF6679⚠ Вам выдано предупреждение! &#B798A8Причина: ẲE9{reason}"); + return getConfig().getString("moderation.warn_received", "&#CF6679⚠ Вам выдано предупреждение! &#B798A8Причина: ẲE9{reason}"); } public String getWarnStaffConfirm() { - return config.getString("moderation.warn_staff_confirm", "⚖C9Игроку ẲE9{player} ⚖C9выдан варн. &#B798A8Причина: ẲE9{reason}"); + return getConfig().getString("moderation.warn_staff_confirm", "⚖C9Игроку ẲE9{player} ⚖C9выдан" + + "варн. &#B798A8Причина: ẲE9{reason}"); } public String getSilentWarnStaff() { - return config.getString("moderation.silent_warn_staff", "&#B798A8[⚖C9ТИХИЙ ВАРН&#B798A8] ẲE9{player}⚖C9: &#B798A8{reason}"); + return getConfig().getString("moderation.silent_warn_staff", "&#B798A8[⚖C9ТИХИЙ ВАРН&#B798A8] ẲE9{player}⚖C9: &#B798A8{reason}"); } public String getBanUsage() { - return config.getString("moderation.ban_usage", "&#B798A8Использование: ẲE9/lban <ник> [время|perm] [причина]"); + return getConfig().getString("moderation.ban_usage", "&#B798A8Использование: ẲE9/lban <ник> [время|perm] [причина]"); } public String getBanConfirm() { - return config.getString("moderation.ban_confirm", "⚖C9Игрок ẲE9{player} ⚖C9забанен. &#B798A8Срок: ẲE9{duration}"); + return getConfig().getString("moderation.ban_confirm", "⚖C9Игрок ẲE9{player} ⚖C9забанен." + + "&#B798A8Срок: ẲE9{duration}"); } public String getUnbanConfirm() { - return config.getString("moderation.unban_confirm", "⚖C9Бан снят с ẲE9{player}"); + return getConfig().getString("moderation.unban_confirm", "⚖C9Бан снят с ẲE9{player}"); } public String getNotBanned() { - return config.getString("moderation.not_banned", "&#CF6679Игрок не забанен!"); + return getConfig().getString("moderation.not_banned", "&#CF6679Игрок не забанен!"); } public String getAlreadyBanned() { - return config.getString("moderation.already_banned", "&#CF6679Игрок уже забанен!"); + return getConfig().getString("moderation.already_banned", "&#CF6679Игрок уже забанен!"); } public String getWarnUsage() { - return config.getString("moderation.warn_usage", "&#B798A8Использование: ẲE9/warn <ник> [причина]"); + return getConfig().getString("moderation.warn_usage", "&#B798A8Использование: ẲE9/warn <ник> [причина]"); } public String getSilentWarnUsage() { - return config.getString("moderation.silent_warn_usage", "&#B798A8Использование: ẲE9/silentwarn <ник> [причина]"); + return getConfig().getString("moderation.silent_warn_usage", "&#B798A8Использование: ẲE9/silentwarn <ник> [причина]"); } } diff --git a/src/main/java/com/loki/lochat/config/MuteConfig.java b/src/main/java/com/loki/lochat/config/MuteConfig.java index ca86093..3abb037 100644 --- a/src/main/java/com/loki/lochat/config/MuteConfig.java +++ b/src/main/java/com/loki/lochat/config/MuteConfig.java @@ -14,48 +14,48 @@ public class MuteConfig extends BaseConfig { // ── Основные настройки ────────────────────────────────────────────────────── public boolean isEnabled() { - return config.getBoolean("enabled", true); + return getConfig().getBoolean("enabled", true); } public String getDefaultDuration() { - return config.getString("default-duration", "7d"); + return getConfig().getString("default-duration", "7d"); } public String getDefaultReason() { - return config.getString("default-reason", "Без причины"); + return getConfig().getString("default-reason", "Без причины"); } public int getMaxHistoryPerPlayer() { - return config.getInt("max-history-per-player", 50); + return getConfig().getInt("max-history-per-player", 50); } // ── Права на длительность ─────────────────────────────────────────────────── public boolean isPermissionBasedDuration() { - return config.getBoolean("permission-based-duration", true); + return getConfig().getBoolean("permission-based-duration", true); } // ── Уведомления ───────────────────────────────────────────────────────────── public boolean isNotifyOnMute() { - return config.getBoolean("notify.on-mute", true); + return getConfig().getBoolean("notify.on-mute", true); } public boolean isNotifyOnUnmute() { - return config.getBoolean("notify.on-unmute", true); + return getConfig().getBoolean("notify.on-unmute", true); } public boolean isNotifyOnExpire() { - return config.getBoolean("notify.on-expire", true); + return getConfig().getBoolean("notify.on-expire", true); } // ── Тихий мут ─────────────────────────────────────────────────────────────── public boolean isSilentMuteEnabled() { - return config.getBoolean("silent-mute.enabled", true); + return getConfig().getBoolean("silent-mute.enabled", true); } public boolean isSilentMuteLogToConsole() { - return config.getBoolean("silent-mute.log-to-console", true); + return getConfig().getBoolean("silent-mute.log-to-console", true); } } diff --git a/src/main/java/com/loki/lochat/config/SoundsConfig.java b/src/main/java/com/loki/lochat/config/SoundsConfig.java index 8ac12cd..d38a11b 100644 --- a/src/main/java/com/loki/lochat/config/SoundsConfig.java +++ b/src/main/java/com/loki/lochat/config/SoundsConfig.java @@ -14,54 +14,54 @@ public class SoundsConfig extends BaseConfig { // ── Звуки упоминаний ──────────────────────────────────────────────────────── public boolean isMentionSoundEnabled() { - return config.getBoolean("mention.enabled", true); + return getConfig().getBoolean("mention.enabled", true); } public String getMentionSound() { - return config.getString("mention.sound", "BLOCK_NOTE_BLOCK_PLING"); + return getConfig().getString("mention.sound", "BLOCK_NOTE_BLOCK_PLING"); } public float getMentionVolume() { - return (float) config.getDouble("mention.volume", 1.0); + return (float) getConfig().getDouble("mention.volume", 1.0); } public float getMentionPitch() { - return (float) config.getDouble("mention.pitch", 1.0); + return (float) getConfig().getDouble("mention.pitch", 1.0); } // ── Звуки личных сообщений ────────────────────────────────────────────────── public boolean isPmSoundEnabled() { - return config.getBoolean("pm.enabled", true); + return getConfig().getBoolean("pm.enabled", true); } public String getPmSound() { - return config.getString("pm.sound", "ENTITY_EXPERIENCE_ORB_PICKUP"); + return getConfig().getString("pm.sound", "ENTITY_EXPERIENCE_ORB_PICKUP"); } public float getPmVolume() { - return (float) config.getDouble("pm.volume", 1.0); + return (float) getConfig().getDouble("pm.volume", 1.0); } public float getPmPitch() { - return (float) config.getDouble("pm.pitch", 1.0); + return (float) getConfig().getDouble("pm.pitch", 1.0); } // ── Звуки команд ──────────────────────────────────────────────────────────── public boolean isCommandSoundEnabled() { - return config.getBoolean("command.enabled", false); + return getConfig().getBoolean("command.enabled", false); } public String getCommandSound() { - return config.getString("command.sound", "UI_BUTTON_CLICK"); + return getConfig().getString("command.sound", "UI_BUTTON_CLICK"); } public float getCommandVolume() { - return (float) config.getDouble("command.volume", 0.5); + return (float) getConfig().getDouble("command.volume", 0.5); } public float getCommandPitch() { - return (float) config.getDouble("command.pitch", 1.0); + return (float) getConfig().getDouble("command.pitch", 1.0); } } diff --git a/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java b/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java index b499d4b..1ca1a6a 100644 --- a/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java +++ b/src/main/java/com/loki/lochat/config/core/ConfigAccessor.java @@ -173,7 +173,8 @@ public class ConfigAccessor { } public String getDeathPlayerKillFormat() { - return config.getString("messages.death.player_kill", "&#CF6679☠ &#B798A8{player} ẲE9был убит игроком &#B798A8{killer} ⚖C9({weapon})"); + return config.getString("messages.death.player_kill", "&#CF6679☠ &#B798A8{player} ẲE9был убит" + + "игроком &#B798A8{killer} ⚖C9({weapon})"); } public String getDeathMobKillFormat() { diff --git a/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java b/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java index 3f2355a..b5b29fd 100644 --- a/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/AdvancedMessageFilter.java @@ -1,6 +1,10 @@ package com.loki.lochat.core.filter; -import com.loki.lochat.core.filter.filters.*; +import com.loki.lochat.core.filter.filters.CharacterFilter; +import com.loki.lochat.core.filter.filters.FloodFilter; +import com.loki.lochat.core.filter.filters.SpamFilter; +import com.loki.lochat.core.filter.filters.SwearFilter; +import com.loki.lochat.core.filter.filters.UrlFilter; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; diff --git a/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java b/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java index 79caea5..bd806f6 100644 --- a/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java +++ b/src/main/java/com/loki/lochat/core/filter/filters/SwearFilter.java @@ -10,7 +10,9 @@ import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; -import java.util.*; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; import java.util.regex.Pattern; public class SwearFilter { diff --git a/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java b/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java index 0ad02c4..e73f906 100644 --- a/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java +++ b/src/main/java/com/loki/lochat/core/registry/ServiceRegistry.java @@ -1,10 +1,22 @@ package com.loki.lochat.core.registry; -import com.loki.lochat.api.service.*; +import com.loki.lochat.api.service.ChatService; +import com.loki.lochat.api.service.MentionService; +import com.loki.lochat.api.service.MessageService; +import com.loki.lochat.api.service.MessagingService; +import com.loki.lochat.api.service.MuteService; +import com.loki.lochat.api.service.NickService; +import com.loki.lochat.api.service.PlayerService; +import com.loki.lochat.api.service.PunishmentService; import com.loki.lochat.config.ConfigManager; import com.loki.lochat.config.MessageConfig; import com.loki.lochat.core.factory.ServiceFactory; -import com.loki.lochat.core.service.*; +import com.loki.lochat.core.service.ChatServiceImpl; +import com.loki.lochat.core.service.MentionServiceImpl; +import com.loki.lochat.core.service.MessageServiceImpl; +import com.loki.lochat.core.service.NickServiceImpl; +import com.loki.lochat.core.service.PlayerServiceImpl; +import com.loki.lochat.core.service.PunishmentServiceImpl; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java b/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java index 9bcd096..ba6a9c1 100644 --- a/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/MuteServiceImpl.java @@ -11,7 +11,9 @@ import com.loki.lochat.utils.format.TimeFormatter; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; -import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.UUID; /** * Сервис мутов с использованием Strategy pattern diff --git a/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java b/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java index 0931bb2..168fae1 100644 --- a/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java +++ b/src/main/java/com/loki/lochat/core/service/PunishmentServiceImpl.java @@ -15,9 +15,21 @@ import net.kyori.adventure.text.Component; import org.bukkit.plugin.java.JavaPlugin; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.Reader; +import java.io.Writer; import java.lang.reflect.Type; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; /** @@ -137,11 +149,11 @@ public class PunishmentServiceImpl implements PunishmentService { for (Map.Entry> e : warns.entrySet()) { List list = e.getValue(); synchronized (list) { - snap.warns.put(e.getKey().toString(), new ArrayList<>(list)); + snap.getWarns().put(e.getKey().toString(), new ArrayList<>(list)); } } for (Map.Entry e : bans.entrySet()) { - snap.bans.put(e.getKey().toString(), e.getValue()); + snap.getBans().put(e.getKey().toString(), e.getValue()); } try (Writer w = new OutputStreamWriter(new FileOutputStream(dataFile), java.nio.charset.StandardCharsets.UTF_8)) { gson.toJson(snap, w); @@ -172,16 +184,16 @@ public class PunishmentServiceImpl implements PunishmentService { if (snap == null) { return; } - if (snap.warns != null) { - for (Map.Entry> e : snap.warns.entrySet()) { + if (snap.getWarns() != null) { + for (Map.Entry> e : snap.getWarns().entrySet()) { try { warns.put(UUID.fromString(e.getKey()), Collections.synchronizedList(new ArrayList<>(e.getValue()))); } catch (IllegalArgumentException ignored) { } } } - if (snap.bans != null) { - for (Map.Entry e : snap.bans.entrySet()) { + if (snap.getBans() != null) { + for (Map.Entry e : snap.getBans().entrySet()) { try { UUID id = UUID.fromString(e.getKey()); BanRecord br = e.getValue(); @@ -202,7 +214,15 @@ public class PunishmentServiceImpl implements PunishmentService { } private static class PunishmentSnapshot { - Map> warns = new HashMap<>(); - Map bans = new HashMap<>(); + private Map> warns = new HashMap<>(); + private Map bans = new HashMap<>(); + + Map> getWarns() { + return warns; + } + + Map getBans() { + return bans; + } } } diff --git a/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java b/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java index 7182438..bff93f4 100644 --- a/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java +++ b/src/main/java/com/loki/lochat/core/service/messaging/IgnoreService.java @@ -7,7 +7,12 @@ import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; /** diff --git a/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java b/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java index f5b7b7e..f6852b5 100644 --- a/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java +++ b/src/main/java/com/loki/lochat/core/service/mute/MuteDataStorage.java @@ -8,9 +8,16 @@ import com.loki.lochat.utils.platform.FoliaUtil; import org.bukkit.plugin.java.JavaPlugin; -import java.io.*; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Reader; +import java.io.Writer; import java.lang.reflect.Type; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; /** diff --git a/src/main/java/com/loki/lochat/core/service/mute/MuteHistoryManager.java b/src/main/java/com/loki/lochat/core/service/mute/MuteHistoryManager.java index 43cad9a..e8af017 100644 --- a/src/main/java/com/loki/lochat/core/service/mute/MuteHistoryManager.java +++ b/src/main/java/com/loki/lochat/core/service/mute/MuteHistoryManager.java @@ -11,7 +11,11 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Type; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; public class MuteHistoryManager { @@ -33,7 +37,6 @@ public class MuteHistoryManager { reason, mutedBy, System.currentTimeMillis(), - false, null, 0 )); diff --git a/src/main/java/com/loki/lochat/data/model/MuteData.java b/src/main/java/com/loki/lochat/data/model/MuteData.java index 88ffb36..cc57146 100644 --- a/src/main/java/com/loki/lochat/data/model/MuteData.java +++ b/src/main/java/com/loki/lochat/data/model/MuteData.java @@ -78,14 +78,14 @@ public class MuteData { } // For JSON deserialization public MuteHistoryEntry(String playerName, long duration, String reason, - String mutedBy, long mutedAt, boolean unmuted, + String mutedBy, long mutedAt, String unmutedBy, long unmutedAt) { this.playerName = playerName; this.duration = duration; this.reason = reason; this.mutedBy = mutedBy; this.mutedAt = mutedAt; - this.unmuted = unmuted; + this.unmuted = unmutedBy != null; this.unmutedBy = unmutedBy; this.unmutedAt = unmutedAt; } diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java index 6ac74b4..9fa418f 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientColorCommand.java @@ -2,7 +2,12 @@ package com.loki.lochat.gradient.commands; import com.loki.lochat.config.RatConfig; import com.loki.lochat.gradient.GradientModule; -import com.loki.lochat.gradient.commands.handlers.color.*; +import com.loki.lochat.gradient.commands.handlers.color.ColorCopyHandler; +import com.loki.lochat.gradient.commands.handlers.color.ColorOffHandler; +import com.loki.lochat.gradient.commands.handlers.color.ColorOnHandler; +import com.loki.lochat.gradient.commands.handlers.color.ColorResetHandler; +import com.loki.lochat.gradient.commands.handlers.color.ColorSetHandler; +import com.loki.lochat.gradient.commands.handlers.color.SubCommandHandler; import org.bukkit.Bukkit; import org.bukkit.command.Command; @@ -13,7 +18,11 @@ import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * Команда /color для установки градиента ника diff --git a/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java b/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java index c216971..ea2b1e8 100644 --- a/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java +++ b/src/main/java/com/loki/lochat/gradient/commands/GradientPrefixCommand.java @@ -1,7 +1,11 @@ package com.loki.lochat.gradient.commands; import com.loki.lochat.gradient.GradientModule; -import com.loki.lochat.gradient.commands.handlers.prefix.*; +import com.loki.lochat.gradient.commands.handlers.prefix.PrefixOffHandler; +import com.loki.lochat.gradient.commands.handlers.prefix.PrefixOnHandler; +import com.loki.lochat.gradient.commands.handlers.prefix.PrefixResetHandler; +import com.loki.lochat.gradient.commands.handlers.prefix.PrefixSetHandler; +import com.loki.lochat.gradient.commands.handlers.prefix.PrefixSubCommandHandler; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; @@ -11,7 +15,10 @@ import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * Команда /prefix для установки кастомного префикса diff --git a/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java b/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java index bea0b8a..0ae28ec 100644 --- a/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java +++ b/src/main/java/com/loki/lochat/gradient/data/GradientDataManager.java @@ -8,7 +8,12 @@ import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.io.IOException; -import java.sql.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; import java.util.List; import java.util.Map; import java.util.UUID; diff --git a/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java b/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java index 47b44cf..c0a7dc1 100644 --- a/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java +++ b/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java @@ -1,6 +1,6 @@ package com.loki.lochat.gradient.util; -import java.awt.*; +import java.awt.Color; import java.util.List; import java.util.regex.Pattern; diff --git a/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java b/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java index 930a241..72a671d 100644 --- a/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java +++ b/src/main/java/com/loki/lochat/integrations/PlaceholderAPIHook.java @@ -55,71 +55,67 @@ public class PlaceholderAPIHook extends PlaceholderExpansion { } UUID uuid = player.getUniqueId(); - GradientModule gradient = plugin.getGradientModule(); return switch (params.toLowerCase()) { case "ignored_count" -> String.valueOf(messagingService.getIgnoredCount(uuid)); case "global_enabled" -> String.valueOf(!chatService.isGlobalChatDisabled(uuid)); - case "last_pm" -> { - Optional lastOpt = messagingService.getLastConversation(uuid); - if (lastOpt.isEmpty()) { - yield ""; - } - var lastPlayer = Bukkit.getOfflinePlayer(lastOpt.get()); - yield lastPlayer.getName() != null ? lastPlayer.getName() : ""; - } + case "last_pm" -> resolveLastPm(player, uuid); case "spy_enabled" -> String.valueOf(messagingService.isSpying(uuid)); + case "gradient_full", "full" -> resolveGradient(player, GradientQuery.FULL); + case "gradient_name", "name" -> resolveGradient(player, GradientQuery.NAME); + case "gradient_prefix", "prefix" -> resolveGradient(player, GradientQuery.PREFIX); + case "lp_prefix" -> resolveGradient(player, GradientQuery.LP_PREFIX); + default -> null; + }; + } - // Gradient placeholders (совместимость с LoPreff) - // Используем TAB формат §x§R§R§G§G§B§B для совместимости с TAB плагином - case "gradient_full", "full" -> { - Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) { - yield player.getName() != null ? player.getName() : ""; - } + private enum GradientQuery { FULL, NAME, PREFIX, LP_PREFIX } - // Если gradient модуль выключен — берём только LuckPerms префикс + ник + private String resolveGradient(OfflinePlayer player, GradientQuery query) { + GradientModule gradient = plugin.getGradientModule(); + Player onlinePlayer = player.getPlayer(); + + if (onlinePlayer == null) { + return switch (query) { + case FULL, NAME -> player.getName() != null ? player.getName() : ""; + case PREFIX, LP_PREFIX -> ""; + }; + } + + return switch (query) { + case FULL -> { if (gradient == null || !gradient.isEnabled()) { yield player.getName() != null ? player.getName() : ""; } - - // Используем TAB формат для плейсхолдеров yield gradient.getFormattedNameForTab(onlinePlayer); } - case "gradient_name", "name" -> { - Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) { - yield player.getName() != null ? player.getName() : ""; - } - + case NAME -> { if (gradient == null || !gradient.isEnabled()) { yield player.getName(); } yield gradient.getGradientNick(onlinePlayer); } - case "gradient_prefix", "prefix" -> { - Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) { - yield ""; - } - + case PREFIX -> { if (gradient == null || !gradient.isEnabled()) { yield ""; } yield gradient.getPrefix(onlinePlayer); } - case "lp_prefix" -> { - Player onlinePlayer = player.getPlayer(); - if (onlinePlayer == null) { - yield ""; - } - + case LP_PREFIX -> { if (gradient == null || !gradient.isEnabled()) { yield ""; } yield gradient.getLuckPermsPrefix(onlinePlayer); } - default -> null; }; } + + private String resolveLastPm(OfflinePlayer player, UUID uuid) { + Optional lastOpt = messagingService.getLastConversation(uuid); + if (lastOpt.isEmpty()) { + return ""; + } + var lastPlayer = Bukkit.getOfflinePlayer(lastOpt.get()); + return lastPlayer.getName() != null ? lastPlayer.getName() : ""; + } } diff --git a/src/main/java/com/loki/lochat/listener/ChatEventListener.java b/src/main/java/com/loki/lochat/listener/ChatEventListener.java index 5167893..6c0834c 100644 --- a/src/main/java/com/loki/lochat/listener/ChatEventListener.java +++ b/src/main/java/com/loki/lochat/listener/ChatEventListener.java @@ -150,9 +150,7 @@ public class ChatEventListener implements Listener { private void recordStatistics(LoChat loChat, Player sender, boolean isGlobal) { com.loki.lochat.api.service.PlayerService playerService = loChat.getServiceRegistry().get(com.loki.lochat.api.service.PlayerService.class); - if (playerService instanceof com.loki.lochat.core.service.PlayerServiceImpl impl) { - impl.recordMessage(sender.getUniqueId(), isGlobal ? "global" : "local"); - } + playerService.recordMessage(sender.getUniqueId(), isGlobal ? "global" : "local"); } private record ChatMode(boolean isGlobal, String message) { diff --git a/src/main/java/com/loki/lochat/managers/AutoMessageManager.java b/src/main/java/com/loki/lochat/managers/AutoMessageManager.java index 53a1a94..dc51733 100644 --- a/src/main/java/com/loki/lochat/managers/AutoMessageManager.java +++ b/src/main/java/com/loki/lochat/managers/AutoMessageManager.java @@ -11,7 +11,11 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.scheduler.BukkitTask; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import io.papermc.paper.threadedregions.scheduler.ScheduledTask; diff --git a/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java b/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java index 437d5d4..513cd55 100644 --- a/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java +++ b/src/main/java/com/loki/lochat/renderer/EnhancedChatRenderer.java @@ -1,6 +1,8 @@ package com.loki.lochat.renderer; -import com.loki.lochat.renderer.components.*; +import com.loki.lochat.renderer.components.EmojiComponent; +import com.loki.lochat.renderer.components.GradientBuilder; +import com.loki.lochat.renderer.components.UrlProcessor; import com.loki.lochat.utils.format.TextFormatter; import com.loki.lochat.utils.player.MentionHandler; @@ -15,6 +17,7 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.util.List; +import java.util.Map; import io.papermc.paper.chat.ChatRenderer; @@ -63,12 +66,18 @@ public class EnhancedChatRenderer implements ChatRenderer { Component playerSuffix = buildPlayerSuffix(source); Component player = buildPlayerComponent(source); - return buildFormattedMessage(format, emoji, prefix, separator, playerPrefix, playerSuffix, player, processed); + return buildFormattedMessage(format, Map.of( + "emoji", emoji, + "prefix", prefix, + "separator", separator, + "player_prefix", playerPrefix, + "player", player, + "player_suffix", playerSuffix, + "message", processed + )); } - private Component buildFormattedMessage(String format, Component emoji, Component prefix, - Component separator, Component playerPrefix, Component playerSuffix, - Component player, Component message) { + private Component buildFormattedMessage(String format, Map parts) { Component result = Component.empty(); java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\{([^}]+)\\}"); java.util.regex.Matcher matcher = pattern.matcher(format); @@ -81,16 +90,7 @@ public class EnhancedChatRenderer implements ChatRenderer { } String placeholder = matcher.group(1); - switch (placeholder) { - case "emoji" -> result = result.append(emoji); - case "prefix" -> result = result.append(prefix); - case "separator" -> result = result.append(separator); - case "player_prefix" -> result = result.append(playerPrefix); - case "player" -> result = result.append(player); - case "player_suffix" -> result = result.append(playerSuffix); - case "message" -> result = result.append(message); - default -> result = result.append(Component.text("{" + placeholder + "}")); - } + result = result.append(parts.getOrDefault(placeholder, Component.text("{" + placeholder + "}"))); lastEnd = matcher.end(); } diff --git a/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java b/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java index 1910f23..f6ade84 100644 --- a/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java +++ b/src/main/java/com/loki/lochat/utils/platform/AdventureManager.java @@ -70,7 +70,9 @@ public class AdventureManager { try { // Используем Adventure API Object playerAudience = audiences.getClass().getMethod("player", Player.class).invoke(audiences, player); - playerAudience.getClass().getMethod("sendMessage", Class.forName("net.kyori.adventure.text.Component")).invoke(playerAudience, message); + playerAudience.getClass() + .getMethod("sendMessage", Class.forName("net.kyori.adventure.text.Component")) + .invoke(playerAudience, message); return; } catch (Exception e) { // Fallback на legacy diff --git a/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java b/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java index 08027fb..35925f8 100644 --- a/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java +++ b/src/main/java/com/loki/lochat/utils/platform/FoliaUtil.java @@ -55,7 +55,10 @@ public class FoliaUtil { // В Folia используем AsyncScheduler для глобальных задач long delayMs = delayTicks * 50; // 1 тик = 50мс long periodMs = periodTicks * 50; - Bukkit.getAsyncScheduler().runAtFixedRate(plugin, scheduledTask -> task.run(), delayMs, periodMs, java.util.concurrent.TimeUnit.MILLISECONDS); + Bukkit.getAsyncScheduler().runAtFixedRate( + plugin, scheduledTask -> task.run(), delayMs, periodMs, + java.util.concurrent.TimeUnit.MILLISECONDS + ); } else { // В Paper/Spigot используем обычный scheduler Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, task, delayTicks, periodTicks);