From 67b8b9e47c306f8bd450204c71f398915b7e8a31 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Fri, 23 Jan 2026 21:41:49 +0100 Subject: [PATCH] Update to version 1.5.5 with latest changes --- bin/main/automessages.yml | 74 +++ bin/main/chat.yml | 3 + bin/main/com/loki/lochat/LoChat.class | Bin 0 -> 8166 bytes .../lochat/commands/AnnounceCommand.class | Bin 0 -> 4484 bytes .../loki/lochat/commands/ChatSpyCommand.class | Bin 0 -> 2022 bytes .../lochat/commands/ClearChatCommand.class | Bin 0 -> 2204 bytes .../loki/lochat/commands/CustomCommand.class | Bin 0 -> 2565 bytes .../lochat/commands/GlobalChatCommand.class | Bin 0 -> 3100 bytes .../loki/lochat/commands/IgnoreCommand.class | Bin 0 -> 2634 bytes .../loki/lochat/commands/LoChatCommand.class | Bin 0 -> 6128 bytes .../lochat/commands/LocalChatCommand.class | Bin 0 -> 2557 bytes .../com/loki/lochat/commands/MsgCommand.class | Bin 0 -> 4871 bytes .../lochat/commands/MuteBlameCommand.class | Bin 0 -> 6305 bytes .../loki/lochat/commands/MuteCommand.class | Bin 0 -> 9211 bytes .../lochat/commands/MuteHistoryCommand.class | Bin 0 -> 7000 bytes .../lochat/commands/MuteListCommand.class | Bin 0 -> 4898 bytes .../loki/lochat/commands/ReplyCommand.class | Bin 0 -> 4766 bytes .../lochat/commands/UnignoreCommand.class | Bin 0 -> 2536 bytes .../loki/lochat/commands/UnmuteCommand.class | Bin 0 -> 6241 bytes .../loki/lochat/config/ConfigManager.class | Bin 0 -> 8519 bytes .../loki/lochat/config/MessageConfig.class | Bin 0 -> 4132 bytes .../loki/lochat/gradient/GradientModule.class | Bin 0 -> 8789 bytes .../commands/GradientAdminCommand.class | Bin 0 -> 18169 bytes .../commands/GradientColorCommand.class | Bin 0 -> 13533 bytes .../commands/GradientPrefixCommand.class | Bin 0 -> 12107 bytes .../gradient/config/GradientConfig.class | Bin 0 -> 6478 bytes .../gradient/config/GradientMessages.class | Bin 0 -> 4009 bytes .../gradient/data/GradientDataManager.class | Bin 0 -> 10376 bytes .../gradient/data/GradientPlayerData.class | Bin 0 -> 2767 bytes .../gui/GradientConfirmGUI$ConfirmType.class | Bin 0 -> 1322 bytes .../gradient/gui/GradientConfirmGUI.class | Bin 0 -> 10174 bytes .../hooks/GradientLuckPermsHook.class | Bin 0 -> 5908 bytes .../listeners/GradientGUIListener.class | Bin 0 -> 7504 bytes .../listeners/GradientPlayerListener.class | Bin 0 -> 2713 bytes .../gradient/util/DisplayNameUtil.class | Bin 0 -> 7422 bytes .../loki/lochat/gradient/util/FoliaUtil.class | Bin 0 -> 4978 bytes .../gradient/util/GradientConstants.class | Bin 0 -> 573 bytes .../lochat/gradient/util/GradientUtil.class | Bin 0 -> 6994 bytes .../lochat/integrations/LibertyBansHook.class | Bin 0 -> 1588 bytes .../integrations/PlaceholderAPIHook.class | Bin 0 -> 4250 bytes .../loki/lochat/listeners/ChatListener.class | Bin 0 -> 9350 bytes .../managers/AntiSpamManager$SpamResult.class | Bin 0 -> 1397 bytes .../lochat/managers/AntiSpamManager.class | Bin 0 -> 5033 bytes .../lochat/managers/AutoMessageManager.class | Bin 0 -> 8994 bytes .../loki/lochat/managers/ChatManager.class | Bin 0 -> 6798 bytes .../lochat/managers/CooldownManager.class | Bin 0 -> 2156 bytes ...stomCommandManager$CustomCommandData.class | Bin 0 -> 1171 bytes .../managers/CustomCommandManager.class | Bin 0 -> 12018 bytes .../loki/lochat/managers/EmojiManager.class | Bin 0 -> 4570 bytes .../loki/lochat/managers/IgnoreManager.class | Bin 0 -> 6354 bytes .../loki/lochat/managers/MentionManager.class | Bin 0 -> 6220 bytes .../loki/lochat/managers/MuteManager$1.class | Bin 0 -> 790 bytes .../loki/lochat/managers/MuteManager$2.class | Bin 0 -> 839 bytes .../managers/MuteManager$MuteData.class | Bin 0 -> 1101 bytes .../MuteManager$MuteHistoryEntry.class | Bin 0 -> 1132 bytes .../loki/lochat/managers/MuteManager.class | Bin 0 -> 16142 bytes .../com/loki/lochat/managers/PMManager.class | Bin 0 -> 1306 bytes .../com/loki/lochat/managers/SpyManager.class | Bin 0 -> 2697 bytes .../com/loki/lochat/utils/ChatFormatter.class | Bin 0 -> 8858 bytes .../com/loki/lochat/utils/DistanceUtil.class | Bin 0 -> 1299 bytes bin/main/config.yml | 227 +++++++ bin/main/custom-commands.yml | 51 ++ bin/main/emojis.yml | 385 +++++++++++ bin/main/filter-words.json | 624 ++++++++++++++++++ bin/main/gradient-config.yml | 68 ++ bin/main/gradient-messages.yml | 57 ++ bin/main/messages.yml | 69 ++ bin/main/plugin.yml | 221 +++++++ .../data/GradientPlayerDataTest.class | Bin 0 -> 3770 bytes .../gradient/util/GradientConstantsTest.class | Bin 0 -> 871 bytes .../gradient/util/GradientUtilTest.class | Bin 0 -> 5400 bytes .../lochat/managers/CooldownManagerTest.class | Bin 0 -> 1820 bytes .../loki/lochat/managers/PMManagerTest.class | Bin 0 -> 1732 bytes 73 files changed, 1779 insertions(+) create mode 100644 bin/main/automessages.yml create mode 100644 bin/main/chat.yml create mode 100644 bin/main/com/loki/lochat/LoChat.class create mode 100644 bin/main/com/loki/lochat/commands/AnnounceCommand.class create mode 100644 bin/main/com/loki/lochat/commands/ChatSpyCommand.class create mode 100644 bin/main/com/loki/lochat/commands/ClearChatCommand.class create mode 100644 bin/main/com/loki/lochat/commands/CustomCommand.class create mode 100644 bin/main/com/loki/lochat/commands/GlobalChatCommand.class create mode 100644 bin/main/com/loki/lochat/commands/IgnoreCommand.class create mode 100644 bin/main/com/loki/lochat/commands/LoChatCommand.class create mode 100644 bin/main/com/loki/lochat/commands/LocalChatCommand.class create mode 100644 bin/main/com/loki/lochat/commands/MsgCommand.class create mode 100644 bin/main/com/loki/lochat/commands/MuteBlameCommand.class create mode 100644 bin/main/com/loki/lochat/commands/MuteCommand.class create mode 100644 bin/main/com/loki/lochat/commands/MuteHistoryCommand.class create mode 100644 bin/main/com/loki/lochat/commands/MuteListCommand.class create mode 100644 bin/main/com/loki/lochat/commands/ReplyCommand.class create mode 100644 bin/main/com/loki/lochat/commands/UnignoreCommand.class create mode 100644 bin/main/com/loki/lochat/commands/UnmuteCommand.class create mode 100644 bin/main/com/loki/lochat/config/ConfigManager.class create mode 100644 bin/main/com/loki/lochat/config/MessageConfig.class create mode 100644 bin/main/com/loki/lochat/gradient/GradientModule.class create mode 100644 bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class create mode 100644 bin/main/com/loki/lochat/gradient/commands/GradientColorCommand.class create mode 100644 bin/main/com/loki/lochat/gradient/commands/GradientPrefixCommand.class create mode 100644 bin/main/com/loki/lochat/gradient/config/GradientConfig.class create mode 100644 bin/main/com/loki/lochat/gradient/config/GradientMessages.class create mode 100644 bin/main/com/loki/lochat/gradient/data/GradientDataManager.class create mode 100644 bin/main/com/loki/lochat/gradient/data/GradientPlayerData.class create mode 100644 bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI$ConfirmType.class create mode 100644 bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI.class create mode 100644 bin/main/com/loki/lochat/gradient/hooks/GradientLuckPermsHook.class create mode 100644 bin/main/com/loki/lochat/gradient/listeners/GradientGUIListener.class create mode 100644 bin/main/com/loki/lochat/gradient/listeners/GradientPlayerListener.class create mode 100644 bin/main/com/loki/lochat/gradient/util/DisplayNameUtil.class create mode 100644 bin/main/com/loki/lochat/gradient/util/FoliaUtil.class create mode 100644 bin/main/com/loki/lochat/gradient/util/GradientConstants.class create mode 100644 bin/main/com/loki/lochat/gradient/util/GradientUtil.class create mode 100644 bin/main/com/loki/lochat/integrations/LibertyBansHook.class create mode 100644 bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class create mode 100644 bin/main/com/loki/lochat/listeners/ChatListener.class create mode 100644 bin/main/com/loki/lochat/managers/AntiSpamManager$SpamResult.class create mode 100644 bin/main/com/loki/lochat/managers/AntiSpamManager.class create mode 100644 bin/main/com/loki/lochat/managers/AutoMessageManager.class create mode 100644 bin/main/com/loki/lochat/managers/ChatManager.class create mode 100644 bin/main/com/loki/lochat/managers/CooldownManager.class create mode 100644 bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class create mode 100644 bin/main/com/loki/lochat/managers/CustomCommandManager.class create mode 100644 bin/main/com/loki/lochat/managers/EmojiManager.class create mode 100644 bin/main/com/loki/lochat/managers/IgnoreManager.class create mode 100644 bin/main/com/loki/lochat/managers/MentionManager.class create mode 100644 bin/main/com/loki/lochat/managers/MuteManager$1.class create mode 100644 bin/main/com/loki/lochat/managers/MuteManager$2.class create mode 100644 bin/main/com/loki/lochat/managers/MuteManager$MuteData.class create mode 100644 bin/main/com/loki/lochat/managers/MuteManager$MuteHistoryEntry.class create mode 100644 bin/main/com/loki/lochat/managers/MuteManager.class create mode 100644 bin/main/com/loki/lochat/managers/PMManager.class create mode 100644 bin/main/com/loki/lochat/managers/SpyManager.class create mode 100644 bin/main/com/loki/lochat/utils/ChatFormatter.class create mode 100644 bin/main/com/loki/lochat/utils/DistanceUtil.class create mode 100644 bin/main/config.yml create mode 100644 bin/main/custom-commands.yml create mode 100644 bin/main/emojis.yml create mode 100644 bin/main/filter-words.json create mode 100644 bin/main/gradient-config.yml create mode 100644 bin/main/gradient-messages.yml create mode 100644 bin/main/messages.yml create mode 100644 bin/main/plugin.yml create mode 100644 bin/test/com/loki/lochat/gradient/data/GradientPlayerDataTest.class create mode 100644 bin/test/com/loki/lochat/gradient/util/GradientConstantsTest.class create mode 100644 bin/test/com/loki/lochat/gradient/util/GradientUtilTest.class create mode 100644 bin/test/com/loki/lochat/managers/CooldownManagerTest.class create mode 100644 bin/test/com/loki/lochat/managers/PMManagerTest.class diff --git a/bin/main/automessages.yml b/bin/main/automessages.yml new file mode 100644 index 0000000..bef3d02 --- /dev/null +++ b/bin/main/automessages.yml @@ -0,0 +1,74 @@ +# LoChat - Автосообщения +# Автор: loki +# +# Смайлики настраиваются в emojis.yml + +# ═══════════════════════════════════════════ +# НАСТРОЙКИ +# ═══════════════════════════════════════════ +settings: + enabled: true + interval: 300 # Интервал между сообщениями (секунды) + prefix: "&6[&eINFO&6]&r" + + # Режим отправки: + # - "sequential" — по порядку (1, 2, 3...) + # - "random" — случайный порядок + # - "custom" — свой порядок (указать в order) + mode: "sequential" + + # Свой порядок (для mode: custom) + # Можно указывать названия или номера + # Пример: "welcome, rules, 3, donate, tips" + order: "welcome, motd, rules, donate, tips, discord" + +# ═══════════════════════════════════════════ +# СООБЩЕНИЯ +# ═══════════════════════════════════════════ +messages: + # Приветствие (однострочное) + welcome: "&aДобро пожаловать на сервер! &e:star:" + + # MOTD (многострочное) + motd: + - "&6╔══════════════════════════════════╗" + - "&6║ &e:star: &fДобро пожаловать! &e:star: &6║" + - "&6║ &7Онлайн: &a%online% &7игроков &6║" + - "&6║ &7Сайт: &bexample.com &6║" + - "&6╚══════════════════════════════════╝" + + # Правила + rules: + - "&c&l:warning: ПРАВИЛА СЕРВЕРА :warning:" + - "&71. &fНе гриферить" + - "&72. &fНе читерить" + - "&73. &fУважать игроков" + - "&aПолные правила: &e/rules" + + # Донат + donate: + - "#FFD700&l:gem: ДОНАТ :gem:" + - "&7Поддержи сервер и получи" + - "&7крутые привилегии!" + - "&eПодробнее: &a/donate" + + # Советы + tips: + - "&b:zap: &fСовет дня:" + - "&7Используй &e/sethome &7чтобы" + - "&7сохранить свою локацию!" + + # Discord + discord: "&9:game: &fНаш Discord: &bdiscord.gg/example" + + # Голосование + vote: "&a:thumbsup: &fГолосуй за сервер: &e/vote &7и получи награды!" + + # Градиентное сообщение + gradient: + - "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + - "" + - " &f:fire: &eСпециальное событие!" + - " &7Двойной опыт до конца недели!" + - "" + - "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" diff --git a/bin/main/chat.yml b/bin/main/chat.yml new file mode 100644 index 0000000..2bad806 --- /dev/null +++ b/bin/main/chat.yml @@ -0,0 +1,3 @@ +formats: + global: "[G] {prefix}{name}: {message}" + local: "{prefix}{name}: {message}" diff --git a/bin/main/com/loki/lochat/LoChat.class b/bin/main/com/loki/lochat/LoChat.class new file mode 100644 index 0000000000000000000000000000000000000000..a89b2a87cb5300231faaee69f88a51bfddd5b4a1 GIT binary patch literal 8166 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 R0uB{|Uvvd;lyFs>{s(~W$;SWy literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/AnnounceCommand.class b/bin/main/com/loki/lochat/commands/AnnounceCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..800e3e0e48119d897b1bcc3deb7edb421fda0f96 GIT binary patch literal 4484 zcma)9Yg8O(8GZ(qo!w=U*lj|yBuycq375#knzoURu|UBP7lMUQ4OSg?hh<=PhR)2= z;N{qAtH!&jml7}a-m38uEp&-CYQ0peRpMRy%X9qWUynaM*5{j9U>6n$oSpgRoA-OK z&wH8Y|99mofKI$9qe?<^+Rmw_J!SBcp3pp%&pFM?xN4_m*?B9icLy6XLK0p!sm*Ar zsaaX|^w^}H_GE-5?6;k)I+mZBGFFbO#Zx`!^mN{{9SPxSGoLjq3A;01Gje*LHDkC24H(oMEvI|BBZA~O_DDe+D%qfAE7AYq>` zUI3`!__c?YuJZr#wew5!OV2D7mgY~yupdn_4$!!@dZc}MdXdQ-xo=G1jaX&H&& zD3iz0Oa3wKqr@N5LfCF~ScpudoV0xXk);Z(JMFuma1K}P~@oaU5=0lAV#k;m)2#!0O=bPyb(BCg;qcx<)0W9nI%sOMy2A>yds%IfGz7Y7 zvIj8gMEV#qGSalnH*3v%1v2fZ!oy;g zt#x70j*>D&hbgg$J~zBsHL#!-IUEszykCI>+OyAaOFi7_8`GsZJ(g$_8Naif6{qqF zW<-8&6ZyG9CRm+QFe_Nqm$Mo+JX0^S5oB*y@D2fp`Za*?=}zhzdqoY~GXJFi#PA^A zE#skOCy3Io-kqoC=xPP;!NYW=J>GAars!WcHJ>Visf^G^?0Xfw5AT<-x02XpmcE&N zLh1(;d{A(Y+T%ky>u|=c#fR}x86S~wYsFF|%v60Nnue*StKeh!I7_Ecg}UiQ#FlFo zV0P=h4UoK6CQT+P29@esMoRIy7f^Xsyk(kq_#JG^w zyn79Af-Be4ERV`mYN3@XSB0ARZG2b8cbL_y1)*G71()$XmIcEaw>M~Iv?44rS5*A{ zn~Y>b!O%vVIVFfOn3=N)Ip@I|QybG+l;Z2Hp-P&QrSUgb80#p42@=dO;h@&jtHHt( zm8YpPqRIyhf2pKA z?$^BuJLAUi0)8jsw{+GjZVYS2p3>EzI|f+n)za)avjU_`5*{mUqDAU};YrFeb+;*H z+f(`J3gdZ6jLQxRb1IORhP~LIO1plMMYm>}Lu`!69bx*}tIKeHOIv$&ECGXBaYw>c>>6c|h}`z0KW{FJKZuZF+4_@ZKp zS8*LhjMrK|_42uj_gL%GP+HsOvE#B&a|5s2c^24-5O(oI9XWtkpBguEU;M>RQ0vtB2yRO@s>Q>!=CH`WNu}j&LHJs43vy4!MBQ zMG$@+(I;>&5nTj7g?@}&Md@^6cbws5T$Y2&)%WofqbT;~sT)Jj z)zc^lU~sjFD+I?Vp1}{eS3^B6@sm+tzy-IMLhk+l_%@InBvScgXm;f92vAJUjtxN+KgyBr;V<|b5}c(T#oxox{{ylH7*_xQ literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/ChatSpyCommand.class b/bin/main/com/loki/lochat/commands/ChatSpyCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..0a8cc6d133ab43391595212335e89f1dfc5ce989 GIT binary patch literal 2022 zcma)7T~ixX7=8{USqMw{5=sCqr4Qi`=D)mBsqrKuDl>OYTU^k#63)mDy6+z(7P`!t?W1ro6pv zzqGa*RyQ7~Y&r0Jfk@FQ=WSPDICVT?%G05e)VXTAc5qE#G=7p&VnZOb=;c%t?dUeq zi8BK2@x(?an4Sp(9RfWm+f}ROLPq&(GUF(L{*;%M&W7}Dy>AFZ!F{_VkZ6i^LJOE- zr{^{*6Sx;oom_ZYxjE%0Pti!G4w{(`eA~?@?>37Pn*tZ_l-qF(!dBOa42m>&q2ky?Z}GqJ1|B! z)gP<-)!(0gUwu~HAFn>)=MUr6r`5;LzoVS8>M!TJ@EXPqoDl6j6}Fy5lljVLZ+(!lEiL#-iVVhVAA?!3~#T#+uF5n5C6<`ELY`mkgj zC?>lQ!?cMRyup0vW8JmCEvw}m;Xx0zX_N!ovDVj@uP39J!>=bqKLD-QQF0Sb2U=X~8XxK_ zCopn2!jbDp|3(8R0)j*kDU|Xz6|vQw4rF$FMHXvJX5gzM)Lds1fpf=sW35tDM<^qj z_R4-%E!mnQ2aXc{oUVv%CMfuX`SfdcY_V9@|q}z683NoC*bF_p6z;cphBNMa11^HkSzr=G^kTGIFoH<>h3LkcUk zO4C@yty&+_xJ}Ct{am4CnmwJxB-XHw2)zztgL($OpmiTYy)V#dAohZkykOu{cKI literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/ClearChatCommand.class b/bin/main/com/loki/lochat/commands/ClearChatCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..96253d11552faab1aa97f81a511ad957c5a9fb86 GIT binary patch literal 2204 zcma)7T~ixX7=BJZI3a`rX`!UWLTPOiqO8_hTT-VcBIi8>Woo zoxj36uX@v)&S)*p=y>g~@fV2CZbE_ZF`b<~XV1s`^}Nsf?mz$i@fUzetV@IhGG%AO zu$*<1LwQws2G<+PuGEbwODlJZTT{&)iHJb&n%Yu^rRH|6fsRe9Q8R6U!F;>TyyM%+@y=b-HocDoE~Zbqlqm{Crksk7BaH3@ zI&nrIoX!+GLH81nhza!MOxix@6gYFoS1JebZjJ!^QT#pGHRlTV|$E{tGQ;$C%CJZS5KB+m34*sp{6S*5=t`a1Q#dU%LVq4q7-=71S?GzB2;d1y7aNXVqrV8YQZf zJDF4xj|GO?d(zVOrash;;svMSmi4shci{f^AIi8N5iYZBhxtbNCjIWspHqn6orrVn z;%b`f5a;;V??{Yge?!mn;7%XMGn55-5kVg%l6-)H=53tCIj$%dXl0n_=UEu%xtEG? zImnNrBTb6wmLt`dNbO))V4~wG7E&EMcvIkSWGABGTkZ>rT_!`TM$KPAQqX2{|zQMNvL{)r; z$Al@xKmYeognNi!lu)LY3T2iM*+n;`gpjx=p(WT-YdpOM?9#bd+lfS$XMR)N#rO$w eSf%C>L;c~PCnnRM!oIJ~9GLtHVeNm3Tscwz literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/CustomCommand.class b/bin/main/com/loki/lochat/commands/CustomCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..4b364f642e99655ac7cae8c0bf937995d766c802 GIT binary patch literal 2565 zcmcIm&sSST6#gbjc_9RW@S{L&Nn08rfxfEsSA!^oVyS^*LqS?yOv0S-$jf^;H6g&TG0#!VNfl`3eDZe4}{$K&zNON4}kp3`%5k$H1x?%esld%u~xZ*$$`R$k9Y$FTCr=ZrSK$`DA|8zKZhI>OKp zX6SDbcYL)S3@?On25mufGmKTfsq7wpdiYu8Y30|-Z`A)HTG{uET{0h6cB5%KML7!5 zx=0wk=%e+nkaNP#IYvnuw#9I*)mG`#Gnb4|H3q^si$R97MP3jo+sbjdX2?zIxsqGb zr8>0?+mtK?Z8(f`3R;k$-E*lX3|(o%5=-S`RyZp>Ytl$0ZRfbT${j=5wZVYgG-$7} zrj)l91ywF!@uC;42?;4eJQTUIr0LsZ&qzQ!*X?gJgG0)a;a>ZNewSC4A#{~P-MBIFPnTv zI6;h4n98@LfP=%&l@g*Pf&-hwhH+Kt zvBM?Oi^5ga3E>)E(eN_EyFkZ!VhQ3;s8;&c(Yzw{A7omY^@|0A!DVXX=U#ef) zk{D?rT$@PqtT0I$+{sfNdRxS%6JPRDOk%B%+z5)HGb4Gfu*gd_eU6+g{mM>BG*rDq z@@&d3mQ2zE!}@=wyQ&n+(lGV3;Ywl~y7@3Cyfg1=n57gQpMV9^6nSpWIQepsC>=R6 zv}cUG#bwzcaK--%+*I?qnI^#JPA0D|aT?yEN_h-Cjx&zKcNEbO=CPnI(c29EF?F|| z;ikcikH-6Po<^h9K)8SrvOr@|Z+q2KTl;9sOSnv4qcq#Aa9p8IeX9_C ziGa6BEb#|oUn89O9kCmM@6efujQxVR4}nMV$LO3G3QX=ne?%+%9<&Ip1BTFzVGPoP zHcUVitn1ZiN3dde4X@L#Kn!mXK%dup6K_$RVT5r5Ns2T@qwVl@|Alsq9N#8$2>t>3 z5at0|tv>X3$m>wFX}m)e-z7Uh)(leA^I;A*>DyN0_)OZ%2{&cf?uf;o#5vP9_?|MI!L)JMb_YzmgR+jiNJCJddf2>R8n)>qjbj7DGU00o z39NU$q%n{g8L?(AFbby*UX+Q9?|K5EQ9F~g9D$WxbB%Vn%1&G$(A_Pty~~llF*4?Q zmSGNFkdB}6q~XhpzLByVD<#uuGbxR3uDkPVo(%6z*cABt1uB}F`vrm>?x3u~QY_O@ zEwJr*@6-{+a)BykvS3DFM^p3jJGTe|wK^6dBCxc}a%4{?H6Xo{=722)qFrvnwEIoZ zQtt&}Xm25wRZR9sqK>zlsi zIt*n)&e*W@2Rzeq(uP@78a=Mxldg|Ug(WPiy{WdE4D zo_&;^Xvp5<@`r}(gY4a@%al`=y|b7mpA87(I!;jjg zGLbS-242#zO`v|^TXk&5%K}XJqFf3t~F%jBnXSUti~ecm$m| zs^JJJ^DLL^=mPslbv~A2BNJF&$WQU=X2yL?U|Am0t@$H^TU;lMH|fh<@z9WhrdP*F z^w9zxFXX<%b%v~Dc>oeQol&xrF`dF`4R4i+soZ`YXK-qY|d zxjz>+1wcL_hg>gZ`m8w}@52fl09W@EZ9Xm+|;P+uU8~68hF0H zv2|!o}1s_+NAL<3!|zxuQ&mr_HWIBpMCd3nI!%mR!sBsneM8MPwBSdy z;#W4h-#FiIb9_I>4*Y|iImCx@sh*rcd=i)NA)zIJ_y`~8@-c}|@M$hvlemm4%ve3{ z;xl|s+8m{wFYqNIaP<=`($M$>ZGv-q_rIvG h6>IPJ&Q$>4{SVcsWmfe^>E?^pK*9BV)fX-eLViWo=gtm8Qm&e^HJ(N+6l_a?%-zE}AKSTb?if`sAzf!}5G<`5vcVx0dghe|mD8``j!4xVI56q1C`1fz}na zs;DheA3|VaFWLkeiv(m)6^pV!Hnyj0L^_(lK6Ds(S)i$QhM3roG+8dFplYhmbI0uh zDNJ{+OPE~c%vvRxsYe$LSav0|TThf9F|vmz6LylLQsz?Kz6pQ@C)iIaGX zB|#Lz^bzQ(dAAjstI{o_Ved6@3VpP{WQMug@0HxVz&5hFu1IvPTv>`a-?EA<#)=7n7M6qPfs9lmEGtJ#atq0YD=6X$R~%&M^A4N8|;%9hntBdgdM z_2FW3tjbovycaE--O1wcB!lKI&K;WDo;@sWv-wc!St&xf(sLkgIS8u`4+ z8^{rywKUX&saSt&y3#kk(5Y20aa|K>F!~|3Cyn)l#(GlVSdF}>)$G=@O^$Wv&}_6l zrlc_^-9KZ~-HOZ>em7DV*o-K)P$S77&=g8zE4Fb(y^2*q zYukAi!4B@FqFnCeWc`;e#UE5Lc)HO2J5qOGcK?Rd@z{6R(4A~~fZcV7exHiYe}k4( ztm_^&&7nQnIfw51IP?H-gr||i_i_AqJQe>FsU@j7yuCsuo{G)k^qrMf&d%Z8Wr@)C zU@G*>yd;Ms`6}00TIxx;R?Q^8@CAx8kCG!Ig;4Tj0F%ID` zz7zj&{Fg6)X6bAQ@DfW4a4GRQBWpO8@2i(ajVzhBigOm5%&8uGnS0BSyIlo7fhj%O zfEI~sW>;iwXOAAW6$AuMvl3mA&Qx!&acptKTeWJd9!=R+LP1dA)Dm>-wN8@u$8}pz z2n71$sV>75IH`@hDA<*|nI?g<_I80KZKiHVdbe2#BcjCybkj~H^oXr*wIh9oY4qvI zq}HWJ+SzV*+gur37L9YjUM^5xSHD5P*KEb~N=!wyf+~TAH_B7RG@Kw%DMfl>1kR|d zf8(2*0D%)#R6-S)+-8{inp9t>o}hN(xDKcNlG|X#ROFF+;+E-6ewOtrI#>0RX4#hJ&Ou#scS1?NN>7BH)DFDX&j2Cwj78$ z?1W)!tMR6O1k#5@7j1^8kuMuSzN9t#xA7YM)BX;du4B7uqBT5_G9=rfW@3Klq_ zuGF?G5W(pR8U$)eLs-QUyos*VrQ056nk{pS(M5X@Ib+vEow-N>Wm5&t#MuhYqKaM* zy^5uHGjTm`mOXjZWjs{|(T94qx?G-32h1PCnPG4gEa#*oN5 zCzRw7wit1psyiR83RVlud!0*ETp+bqL8%+`gfx8>qi36ncC4Y(_G!I34H(tzjfUOL zR?^l?o3O0S*OmwL66y|O9l6xbUfLl4>D}og=_k^I>BH&$nH`NmTqJN_?d%r*8XCL+ z9Zu+RON)gUh12(>4`i-QA4nhMihY@DGuN{4OvNnKK3rs8tEok5;nN;AZWR|fgkAT*{GcTbWm zsv-u?1@tRZTAXGo@Zv0}FAjqK7|be2qR&vFVNwvi0?TS=H#A6tIM(u%oVlKs7|h&6 zE$$3cnPUwzL^B;u56+UC=u=_Jh%&|9L~EC6C3N>75%jCL63m4s5^&9_q;2)l5u}~k zHIq4wGpCn`6C{w6$w;XsM7<3|K}ui|&s30C$6Xl2RRXK>jyt~9j(hIR4xZb_HWgRn z9kiW1ng>3Cso5x$vW`O8nRWYAkC!O$mX~WhM zo+Y{5sNyEPhvpv8;whcxKB+)hvlWlCilI+a<}KKv;8uZYIhnb66}RENgoMHDqp_f2 zcrW18>W!1nPP|{i?abOaKG|6nAHWBB0F#9Z1!Xzp6;w?MJ|u9?8?w@z0-LYYY;6MW zz(-WviCt0{bEd2ziXy$F`lyPJIaKzxe(JOgcT1h#GbY%3;j5TM3AIbE_p10f?h{a$ zIq09%`xJMrW63rnDRaUD*sI_{#`Bz>;FDZxBv{AU_F*B70=C&vn*H>9rP;QjOzJ?hGPI$5X@IaYN%q3)F#dLxQcy_XoiqAv``QS z1UhA)Yv3<^7d?2G0rqkFwv3MSX6foO(0Y+EJ-9fWzLQb(Nsb-L+?GDbh&)2l1L17! zPVeW06CmWOBbi&$!;1+|nG~gKpO&A<2m3+- z7i~~oqRx`#W={Xo`Ka({Urb;{Q7tlVs3-;@In@*vu7sFZyv7QJE-SXme=U7ENmQ(JRVEGkl;1G>Q;g+v#xOsQZYnygR3fU&Qq;NDtHR4dT~K`!cYuJiDR6z1fEc zL=e9fSezYZarGM2MxCfk4LyX;$-;Tzx;8n2I zG+8^wwWO1srWR#T1%DQpTcq$(Dpc@SftllzGQ_+3#w^w?<;=5w@aqezS&KN;s8Ah$Del9N?y z$Mi28)9)D5e_O6Eg_JKD!p6;w{vllYF!wf%yDxkCg6+HHabBpYxS8+TkiY7RA$0CW z^;c>B%wPi|4t0-~Ct^^7)p?#qnJTyTsNIk`DbqKK(<-Cbu>Q z(E9D!5soF}N2SLctNdPv9xs(Wp4fl>PW{h>zW)xT|0#$M%fi zenG8=9r+JQvOU9iWE6u1lw|oB$&Nm_7u62s{@hM|k5C~#2VFfx6L1P4IfDq8NyE>= z0-|9xdz*-dZjNk4Ep8@2Z^e8(gN4Xo5nefuO(tCzi~{%86u1`MI*mdY{c2Z z#!|7JcelIQe;CWfA%26D2wqKBAb7F}WNQcq2{k!3OqCGLY>i@I(2l4emiNQVS@VbqD5ABVCsw=9t3?n^)Z@Dm< zeGEpM8kLX|3Jl@fyD%~24=E$~UKuvZc?T2Eh5VAOe-D;QZqgM9?S*+FeA1z$h#Z%y zD?Bd#!R*$!V;4m&{Eh@#rjquprh89E8}ZXltgJ;V)}aFz;xe|oupT|w$jjO$-qki! z|Ci9xm*PI&=O5&qTOwqO6C@v{(r2+pon#ThmWL3wzV9N0Ee9c#c0OJpA3tR-#}7Cg zpyX-9$}ZaZCUSFUcQO*Xvrmz?jEC;ZA9AHjC0i0nEeKQ}<;SdI@H{~LxZpWeLdQP_ zI>5iMRDq=WJNZih)xtkMfEckPRLb!qKFjc9{Dkl6)b1|{qF*`B-#E|TInS5yN6yPD S+#S4XzfA1>34g)g5c&_5vPFmh literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/LocalChatCommand.class b/bin/main/com/loki/lochat/commands/LocalChatCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..3a101dec232bab8bf0c4a95cb260104790546f6f GIT binary patch literal 2557 zcmb7G-BTM?6#v~MWFc%zgq9MZZQ9Z{0qxdWYb994ShSkZT3Y<5sGHgYwE zK(|uaR3mUcm40#Kx*%{+M;BrOJvqyf)3r)LdN<61Ed_c5KhK(;rS?r?bfSr6D7BNb z(z7vyF{EPvy3%l1hlWn#_U~9#fw66JI|i2C>vElDyaaBiayy4}Mmi07QtBqsu8^U^PPrsY%( zbAxG2yZ&^|wlf+|GOsq7&7`sXW#gJ{E=#Wyr+H2Nm-=e`_q8AE&+Dtn`eQDCO4e8E zkJi2;owWMHW8Fw&Ov9)^a?@Q+$Nitt4HxKm8Lu!ss&vSDdK^r(LCQE8cvZt$f&TW1 zuj3qEV{MhC-@Gd8I=8K|K#KXcRi+s5jFyv`PP{H~$gq055A`SYKM3&2 zr5N78n;I_C<$JkI$2gc1Jv4`*F>R}KQx%-Rsdn(TBaY!Mysd$icw(!%ns3=vLlyg! z>s3sjvDWbpCIvbcO|MEF7u)LCv3Rp?WzlsQ?MydDkX2E6PvCTF=PKQhNY8d+N-|C~SVE-c=c)(={{d`6PMjVF%3b-3UqA4`RGa=GrqrYKrbnFR+H{|wH z0jM;BJ}NvA$oDr+;|PwDN4dZxmLrlhHH_n=B_iCO;9~oeb_#_@p_m){3nTZSkNt^} z@s3}yZ>;y!Go(U@+)qSSf5uRvWArhGpW;mK`KP$Bf{AB%S8;nUCn76&e?0mS2NKa| z$cHelHI9Cq=tyW!aWitC3c>;U(ZE#$h!gVwT{noswDkxs5Wz*-JBgFX(|Na$3J_jz z7`Kjaj+`$Dg$DEcWq^MUU*YS(J998mpoa#LMG+;2X%fSbYV2@goXbAkdn=% literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/MsgCommand.class b/bin/main/com/loki/lochat/commands/MsgCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..dcce42ed8d5987877d89ec6915be9611f30f0599 GIT binary patch literal 4871 zcmbtYdw3LA75`nb$!s>00HHhT6Q$0Gjj%qH1QmVEs_zb`v;?>*<9 zdmg`Y=G?sa-;q%OTkuZ>GXz$|?NrpX2Mj*qhc!3Kc}lYqPPEfWw)$fQ0fAXZv_UOu zYF0A3v+sx=cNJ6#EVnbsXkT_J0nn)HnT~?5?IhN`LqtZm50X2 zv)Ql=w?$x4!;P34dj$fmc0v!K0<|itQ72H*(AZlIs;5FhP+(?i?j4IMW&x<|JXdL}jvN33JQkv(q4 zu#&L@QLMWM_=1mKY@LvKc+<>c?CO zm$YqhC02tlwo1UX3an}9cnv!m37T!VTS1$^>>?;`^(v8y?PzDx(hEMo1vZq`t!QUS zLNGjUrr>mHL)uG_^>%;1$+{w=(W#=95X(b3I*iK1Q=`|uVYMeRw;&gkQ)URws$tjQAcPPByAbKQOw2k=&+l^X4}jH6k- zooKD65U4{+ES4eYs13pp5D_^ZP+=lPhid6Gi-*Aava!2?G#aVHR*}Y0 zfuL*qC05|3F?V=hutMRL@pM$Ul2_(Tcgn{$OBiFj8G|bB!!gqOJ;-;bB%w>cPvHJC zIu#fFQaDXRnQTU^@wMPzD*kpA?~sbmDN=m59@mXQJt38Umx}wP@^i+NA0yHLSq>ji zaazm z$#|D9Ig__}2tJ|WBY44xfFB<{FkQK3y5xgCbs`w~A#vGRk>YXpJuH?f!&R#6T zINT@xA#}%9`Q!U5yX@XtFXYg6t*q5=j zL|k*+?oNUB5}p4K)OZGcUd0#iMFG`|+PFQdr?aQKv%p7lPT{nIFY&{4!}2iBt>Vl0 z3c=;*ZU=4Q2XK(psSvr>P$Q`CT6|T-*CYh%Bm_I`PBwrL+N^Y7$-h4EHccj;mQN3-*q3 zxjZE=r+zF8^|iF1l68P1z$)C{d`5R8h+$>7F@d z+EcHmm#w3~!r~K30ZcBJGIW;_PWe4xq2>#Or<_ehKd(7_{99JX6XANgdZCzWM-ClD zTvg%99Cn^8=IANm@TKn!S6#wAOt?z#mBYc3E%A~qm!aQt5y@sHaC`6!md*_ZPNOEQ z)E~~_$iA==4$KX1l*0#uVs4OTJaPS%u#$t-92_?$hfKIKTon!uBkLIyt}2+B!_XMz zogQV}E$=>w#_`E}hVj1UYD%EqAEw^bs(J~JRN@ROo2z}UkNa|R__RO&T*0`4sX06` zwm!-B!a5^y<|LN;OkbCqzsZBhD__A85HmSk2%LowE#i>q!w8`uAvA&we9p%#;$Z=A zEeo-jchj5EhzM>WJln9GcaK%P5v)cpDJB|Vp$W&Z4iEEA`6zFWPhumU!)_Xh=oX#WB@Xc>l0dI;8SxX?FHYm2IEQ;ho{hYOds-%mxH<-Rj=qCuh-_vBOQH%d;73sKbK3c1yvSs{hL`aZ?hR6x zdfN6=rrFPU>NeEQdKJ|Q!gWht#VWp+ZM=p$1-huMy$(l`gn}iMrQnK!Uy#H5(>axt z5%C`k;FlB?L0}$V%*J`tTE3{Vd{uBN2UPrJK4;)p_%+`_8uv&3{zMnc>=yV7{)T@b F{6Fn@fgb<> literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/MuteBlameCommand.class b/bin/main/com/loki/lochat/commands/MuteBlameCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..16bbe50fb1cf4a78020ff7484b470cac23c7b55d GIT binary patch literal 6305 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 Vz}fQW2?MoaB7CAm1Q?vb{{R6vB=P_N literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/MuteCommand.class b/bin/main/com/loki/lochat/commands/MuteCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..4dcb40a20dd03a86e9db57d5139371a88f71f730 GIT binary patch literal 9211 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/MuteHistoryCommand.class b/bin/main/com/loki/lochat/commands/MuteHistoryCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..1b2338c2a470f256986de0e61390ba186741c731 GIT binary patch literal 7000 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/ReplyCommand.class b/bin/main/com/loki/lochat/commands/ReplyCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..d362a66cf0aa7aba9afcab148b21417a31cf202f GIT binary patch literal 4766 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/commands/UnmuteCommand.class b/bin/main/com/loki/lochat/commands/UnmuteCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..f4f970fd0c75dcf4f635bf7c16bee4124324569b GIT binary patch literal 6241 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/config/ConfigManager.class b/bin/main/com/loki/lochat/config/ConfigManager.class new file mode 100644 index 0000000000000000000000000000000000000000..231d75872f05c994897c109438859760bc70b254 GIT binary patch literal 8519 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 H5zYD^Q5~T9 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/config/MessageConfig.class b/bin/main/com/loki/lochat/config/MessageConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..9668a73955641f27b77d1f5835df7306d8e45884 GIT binary patch literal 4132 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 D7*f7t literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/GradientModule.class b/bin/main/com/loki/lochat/gradient/GradientModule.class new file mode 100644 index 0000000000000000000000000000000000000000..d96164d59589aba2514e9b1aa157b2fcd94cc7dd GIT binary patch literal 8789 zcmb7J3wRXQb^fok(nza8APGMduq`Ye((1AJ0S1KSfB+ju!o<7+7{|kEkQS|W<$YkN zA8~A_apTyH8{09oshcNl>b7!hEdm8-(-zlh+N_$m^x>vWoVso5v`N~uZi?OhXYR~u zR_qG+_}IB~=bUrTJ?B4AZhhS?RYwT zt2^jR^k-tWfq=rC{ni019JAsB;XC&3wTXJDdl3%~a;UI6-u$@X-19nQ``iti7b9u;L({H7%J}XWU zNrf9qix9f}^6RFUC}UPE6B*iUCx=tFB@#ml%S%fcBta@Krq|C$L9<6<)*(B&IT4Mg zQ)@PFRA|=*j9HPP4@VCkqz#2 Z8E~KUa!;V{fV|KrS+C{srj>eMAya2 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 JM)jca{{a-GbU*+A literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class b/bin/main/com/loki/lochat/gradient/commands/GradientAdminCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..56013de9fe0c94c6e8e246633881dbd5716fe244 GIT binary patch literal 18169 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 CesYfh literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/commands/GradientPrefixCommand.class b/bin/main/com/loki/lochat/gradient/commands/GradientPrefixCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..bcce8ebb2ebdc8b4b78eb5ae6377f3477ed261b2 GIT binary patch literal 12107 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/config/GradientConfig.class b/bin/main/com/loki/lochat/gradient/config/GradientConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..a3dbbede3699869e9e52bcf1a66f139b286f69dd GIT binary patch literal 6478 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/data/GradientDataManager.class b/bin/main/com/loki/lochat/gradient/data/GradientDataManager.class new file mode 100644 index 0000000000000000000000000000000000000000..2386639bcb38bcdd239a013764db7ba55200464d GIT binary patch literal 10376 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI$ConfirmType.class b/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI$ConfirmType.class new file mode 100644 index 0000000000000000000000000000000000000000..80fb367d1fbd3f2a3fb88911f9eba882b0f42a36 GIT binary patch literal 1322 zcmbtT-%ry}7(JJ6>sBh@6p&y3MBN5b(df%2fh+?T2U7-%i%*ww8O5$8ZAY^IO5p*b zk@)N%W&Ccb(8Tya)}+1PcklO|d(Q2-zkYu^2e5*dDh3#errR-W_p?PGbDsxB+vB^I za46_n##)q=U1!hoI&0h2*(luV9SRi*hM@y~#0{G}ZKL9JI}FKky;k33cvI^Gy2y}v zzgbzWeqx3eR>Exuz5hHT9> zx!vTRCG&7ngMwkA5bRq%?Rv!RuApE!m+w!ehWmJ^;sL`*jDF7#L`TOX%ra!S=kcED z9`+atagp_%17QZmYE1XvDH6`0h9v8I3?Jfc(b?qt`aAMCaylL(&+saaUbeaK7h{wz zx4V)j?MJ@R8gAD!#i}KbeEeSrFUStk->}*a54s*z)nmXCrPP;*B_g3$9Y=T}YvHSS z&R|^gHjwXQSB)XPA^hO2>j%q=WHN=Wu(CWM4G7Rk-UCJ^rSoVdL8FF2s?#akq+C7= z-@#hh8_Fq$PLK_g+leq4P5z)IgjJMt?h4WTPvRPNA&Tw!3 z3$0wxxIkl<6f$I!ClN-0YUEy8mKDzM^e5Q=`w}RGm~)s9$7fiOozzc135#@?FT#1_ E5AMcA=>Px# literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI.class b/bin/main/com/loki/lochat/gradient/gui/GradientConfirmGUI.class new file mode 100644 index 0000000000000000000000000000000000000000..d6e2e177a3edbc3c21b4e5af394ce589ff9b3722 GIT binary patch literal 10174 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/hooks/GradientLuckPermsHook.class b/bin/main/com/loki/lochat/gradient/hooks/GradientLuckPermsHook.class new file mode 100644 index 0000000000000000000000000000000000000000..136622e4ebc5e03d1a95cf87db221c62c15e3589 GIT binary patch literal 5908 zcmcIoXLJm#Ew%*!3iWFBN5}01QN$dr1ai>q~LFRByj?U5UzPaz-?|!$v zH&6X%=sbW;__v0Dz{*H6Zp4y(HvdI>O~>d-n^D_JI7V+W*_Sc4dq2b3NME~^j%Rjo zSwm2u`k>iw8Zk4`W9;cZXhj@>%2-ZHU|u+3Ifh(F$!&(2vW>iw76HvlnB6feDj>Q9 zCakv;wsXC}l7?_H-D7lT`}%ChNX4=}cEV7WcF|nB`rXplDG+Q;My)E8;VK=Km?Tiv z(AZfC;?kj^q6#&bs$q)2)dl)CE44bNVLAnSEXP&YW+u!YD=kpp(CA~nNT{U(GwEsG zm5G>*xfEWT_b0hbT+&z3|_|dv5EXN8B z&l8w=DTO+okChC(oj8yb@FlIY3ahbJ!y17pqm*vFBVwf-JDJdNE!GKC(StTClVQvS zrsiBwne4G&!wOli<2o=SXT;4ut2LR3n9hFN>E*YKVRytq8&Az!GXS0YI zSqd5j(k&D5B6MlEky%%e{zYJQ+=QD2CQ3UA`?jpLlP#+zmozHx_wC!cg{p4FOEkP# zprI7Czj+-dx|tK63j(XWMlh^iBD`~YmYsc7;1-AM0^__kZ^;NfMv#WHB2?xYWw zi6pmG$E)!ga;gvsEcOkzGTsqMrmU#+LdETF9k0XdIZn(dvwe4i&ooin)CNC~+#FT$ z-NHm_%Q{Sn8>~z==Fq^cc%zPc@FszZjM;C=iWF$`vobc<3&%}_Jvp0B%d<*rGM9Z~6J|sXNr9e*D;qUF zkliI!Uik`^^_7it22|l8ykEonI7ZbNQexwURL2MKL9*=hT8T{_*zJYRm)f{&CS;_u zHdDR20JDmOfS$JE$$l$0*XE5g*JM)?_?V71?B)ri5S&uxK7Uv~zmF#X_We!lnxndx zjiG%{r&EZUCt!AXxipqKuSm9gi5hbC@a#YwGovh0bn;A^3s6Nok721#-Ih3#Q^i88 zh?(*3sJUpl9B)2*3wmCcoDZMV@p)WuJ#SCj$u!S6>LRj}2_=R7uR)_~MoseIyVlE> z!h@&}h_Q{Qv9pG^po62TR)X;`|%@8bI!z9+D-gqN^N8<|K4a;*FS zKV)9SN0$Vi{{M3{E`dc4-LMq$Tl83w{~Wx2XUrum7mcoJ{8;wEpXqo4Pci^Mt;Um= zknOC-FQx2nbbJv{P1f*hb*(Dx0Hs-9jo*2Op3(8NGW17fNZ*-ASn1Z7naNlg4S(Z+ zEs2<4Zff|4!2Iz=IVjyk<~h$hpP`QU%Xnc7@Q+t&^^I>J_$fWBRR1UP*JFGx11tE(;X14&##OupuI2sbTII}27iXTs81BWJm4h+71#hJv z^RNeR!`ta(8z$i$cqd~co#qRxif1uPLv*e3{XWn4G$mzj)cg7Vt^h*KLwL80{(B1` zPf}af6Y}+h8!iZMeI8mpK7+&K`x~e#K>J##Netkll9qrqU0*8-cT8J4qh|hA$MjwI}JdR*V zbu3r*-RhWwi}(V!OAF-)%-Sfb1F|i8+8_3qkiG^_(N$FfU-C+z=>nFpQ?LXUG!>P= zZda0Y6cqqhiwj^rJp|iCIp0)GV|~}MF&JzO>xn1K${%eWZF!#BJa!CRrIOrbCx}4# zY7)byeC5P!9+w!#;mbrDz*q29elB7BzDZl(!jJgmC-^yjp}zeJzs2v>w?E)d_%r@O WS$XUEEB=muGPXx}i2K)s%KriMT6^07 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/listeners/GradientGUIListener.class b/bin/main/com/loki/lochat/gradient/listeners/GradientGUIListener.class new file mode 100644 index 0000000000000000000000000000000000000000..5a49b70620258e548c3912efeb9c6119f381e5fa GIT binary patch literal 7504 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/util/DisplayNameUtil.class b/bin/main/com/loki/lochat/gradient/util/DisplayNameUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..1a21ef0a4836ea6c9ae3fd3ecf36ed1cd0a44bc2 GIT binary patch literal 7422 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/util/FoliaUtil.class b/bin/main/com/loki/lochat/gradient/util/FoliaUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..8e8953d1475374818df3a8e20c7980b5562a9be1 GIT binary patch literal 4978 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 D#A|mq literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/gradient/util/GradientUtil.class b/bin/main/com/loki/lochat/gradient/util/GradientUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..37704fa8e06a31059b07d5934cf25b7fe4afc068 GIT binary patch literal 6994 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 U@3=g_5w4eS5);HkaWo?T1^WK);{X5v literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/integrations/LibertyBansHook.class b/bin/main/com/loki/lochat/integrations/LibertyBansHook.class new file mode 100644 index 0000000000000000000000000000000000000000..4217b180cf3c1f8cb7f30ad4363bd6806ab2ef65 GIT binary patch literal 1588 zcma)6O>@&$6g|&zBjP9+8Gl=OamnBSac=*p_cO`57;4L7|pzS@7;UPJ@?+D_wRo%HUXT2r6D6QS@oCA zx?huAs(0yzMnE`+iMBR$$LP`+;rNZO=8YFWqyhp+N8b zdefDjz_JgOL11Y6Ogi>rpFp4Mg!4}DzzGBfOJ&OsTyv>etI5zzuPgl+!hQ{(3lu&u>i7Z& zSSdknB$dtCp6x2Ev2LuiZnMj&vI`>u{T;3A$CofPj0%i)q}nc4$5%L%vQIGurb^cP zhR=tA^xR5UJzY2z)u6*Vj^JntWBG1Ee1yakoMtHNoVCk&xn^o54OStLoA;YR)ww9u;P!QBQawOZ zN*Vk|7|u70RjD_DyDaw_c5&_F=^--wfTQEjksF^_!@xuf`E?93V0aw|Gk61?S7XIv zEtH?qvj-;EA)*1hiIyi$5hHv{j$jZc5?g|Zukj5}#7;5`e9L_v;(t13Gzg7DR>V%? zyEd7bHkrcs-xz4&`-ye@EYQN)Kk1lB^7hgd81BeZc$cSu8C;}Y;1VvkAt#eFqqAEv ZMiUI3c7>gC6`1{m$gyoBuOv8E-vXxcrp^EW literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class b/bin/main/com/loki/lochat/integrations/PlaceholderAPIHook.class new file mode 100644 index 0000000000000000000000000000000000000000..165c7bca7e4e65b10e5f35320621b0f0e83df439 GIT binary patch literal 4250 zcma)9X>%OK8Gd@S)~vK+qsxbEu)#Jud@aH;5XtzG57x*!EK3F(5To7EYOLLzWp-A! z2pF8ifk12$LPBhE$7CQJu>mhON&F#IfvTiZNu?@9KBS5&s`4R!AXOoblc#4^dr2~u zO4I#zzx^K1dvxpf*FLxcU^{-JLJyBxqGU5J&9yP|T zM9i?a_ebuttO*qXflWyx98H+%aJsm!r_Hc&EUl+9JXv~h*Yu)5bvluan<;@MJ(X&E ztZr)WBF|2M1a@KW;dYn2~bKG1IUGn%dfXj_8wm zIH9NF;X%hXQ*p8_+n*&%(ukxc&5TLS+fyma@c|ZC)nnQ5@DalqwRMw->&4A*ujTY+ z6N#=MmJk;|J_0K$f7VcWCLxMc@%Gog~<6{zLvuwl#a)M5p0Q*o=nqS@o1 zVI@`(OCH&2WTLj2miZvCmM%(rN3#TZiEds4Kctpc3 zXcAD<(#nkE#q^Lsjg{JOJeD=&%C@#r{e5F&2}YS&I%U{hGr^xV9;>g1IN_Gb!LY5a zgt=e0^`zmj5{e-TA}oLqI?CL_aJPng@I`@oGVihVn8_5|XT`EIhh+dNL&j?Lc*5n(l+}fMRcscht4vD`TO`sU z$Lg_;8g{pyVJ&rGo5sGdLm)V=XU1iLc_D}du~TMyUd_lDL6Y3NHSEEC%uEJHPq2s< zwv~jSZ}f-}b-LOQ1+lmEbc!Gb(Zd2Q2u$0?n0YLSUfCh?^M2+*LeDrO>0}W5nZ#0S z5C=H(C9nsCGU=%iBP9bC3*rHpuL)~ZPZZafJ@d_Y%Ce2vNYr8-2JsLRDv=)X^+>oM z(J+EX2@>Isc)a`clpdEAy=E4)lm2EVT*gbVM-fvI6=ZNl6}bQ(>y;jD1NRNqg0Ep;G~ML zvT#efzz(ldYWNzS@l&j97&R*7%4EHxQoWg1UMjA{{ z6<}(;9!y0>;`B|tsN!3^j^@Ov$gbhrGS)#e!!_P<(yH%h_%2>%X~{Tw?O5PuYAP1QU5hh#Ma5a(4wWjW`$9!O)9`(?Q-hh=<(Iq^@k0$i!jE~6QSWZcPU?vc*6^9D7!GqZJ0IZ&fupSekNtg(%h48dc9_JLh5@}!_VcO=cm`IBf1)K%sjqcDw@z>VJw z@=d@L=bJzd)A7=*RPi1pp7rQ#BMjd#fu>OsW^<@aHk2&x{m zvUb#vPX&R+w4vgmxj~An~*?<5V$=ifFt}XJpQBQgDr`D4yD6NqkRanS1sbLXEDStiZyx~#Ru=qR&U$A5V zmUsd+e>*R*nd>yINh*>?FZ~>$%PNK5asxv7NSejcO;jh%3axn$^K)39!|F=mD@%lj z=CHU8?Gz(jUzZoC1l}Z7>UnF493?M@mnGH`>S+Mi@yvSu)yU`+@T|H@K|xBJTKf^I z8#bI@dl`2K^!hg6)frfqL+68?^K#hw2G2nm<|lOO;ZL`4jGodvJ2|GW4D2|;@yXx4 z^v;VMpZjmepLcV78F#FFf#W%BeEfNi7pnf6k^kykSswrNRgQmXIT#w{__wk6?Qe1X zNAtXf?i_ZV#b>VgCy9t8#8y}Qoy7efG3kmwk=W-ErYn9+qR%^X+!Yr|40yz4SG-1I z&?Bz7;uR7@9&y?gr%4?2hz?hrAn~9_G`hkeaaa;!vn%302oJB%LBE8!D-QY#6I`&) zK&^5S2wXze6AuH<>UInZ34!w+1XyS~Je zlKbgWi3Mdxd>KD+@o1?G=@@!TPk1YveeQEE?wrAW>kRG%KDSE%g{+AxuRR>+#VNB~ z#Rj&DFczajH1ZL@8XLvEe5~)qUE%=l7Kd?t1Y9L6I`5+lk{=*lr(nRV2j=Kl^X zhI|dl*)Q;hEMv~z#9J(u1d2X#R3x`ai0er$X>Fh5K40)kR}L=#@ouko}QeQg#V}U-7Hp*Z&6` CLrii2 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/listeners/ChatListener.class b/bin/main/com/loki/lochat/listeners/ChatListener.class new file mode 100644 index 0000000000000000000000000000000000000000..c1620347cee2fda8e4c1db0769f6f04fe1c00165 GIT binary patch literal 9350 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 GFZw??LCb{z literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/managers/AutoMessageManager.class b/bin/main/com/loki/lochat/managers/AutoMessageManager.class new file mode 100644 index 0000000000000000000000000000000000000000..6151e92da21079c915aaebe8eefe6571711ef7ef GIT binary patch literal 8994 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 Xi=3_6YcI)C`SRsad0AeS*Ae|6SPRn+ literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/managers/ChatManager.class b/bin/main/com/loki/lochat/managers/ChatManager.class new file mode 100644 index 0000000000000000000000000000000000000000..422d457a02da74af683c197af55a39a5455d94e1 GIT binary patch literal 6798 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 aPjbHNg(|yY-kU4tiv~ov{U*_j$o~P_`(6M5 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/managers/CooldownManager.class b/bin/main/com/loki/lochat/managers/CooldownManager.class new file mode 100644 index 0000000000000000000000000000000000000000..0bcf35420160d6c7d14eac3b01ca6f98893b766b GIT binary patch literal 2156 zcmbVN+in|G6kQWv#&IS$*KwM(fuv1R+evE5MQ!5{E^bO3a-ntN&;Sn;=ip2`o(c9i zkPkrO9bS-l=cO-5rA-ri@Qwf0(P{OjL8`~=`F ze59gBLAqksa;AOH;G=S=JGq)}=~Yp0e0>?cWs@ zN5Np#wD)zhRo!4_-K}amhMC*YkMat7OGeewon~DqxYGUWQb)M6Q@oM)V)ux3+p6Z5 zxqpDzx{io08J6KJD+r}CWd-4aeIVipVL(G1eJX|&%(g*PY^&0&*M;SfRBO4aHx7v| zjzJ9cLctjg5k%!`L_;s4l80f5&1P+1)VKA0lh_mM5=U9D8#4BjVdu~w>+JgTPLhN) zqp@YRMnJt>l#0nNO}tVK7jTh<;*+Ls64{8~y+gKq zX0H!3xTIoML4SKv9EgTAG8}AGP}~-laGQ$K2m1MXW>km@!B zkM&K_Uvl)yJ&x0llN{%5QPXK#tNLGsFUIi>iYivShP1zn5eZzuGvCti9&VB1v7GnT$Gj8iwM>WF?tPTLDQVco4$nPm(j?cO;jfNe zzDGJ6`6<$=i<*5b+Gx)_g*H=`C*IMpCv6$^HYkXf>}I_pZW{7lCR+{schzMnJf?V; zL$pi}67p&@Qr#%Vm>0Ywj&RNQ2A>)$ZgH2w?{nEl=+FL$!8?yI{5=xwW%4_>QHsw5 z!hG`O$d-d_GS2lVGn&@|XEDY|Vg8)o{twp1m|K}ooPUTHzD7Lz0Eus*@+-L*9t+Ps z#&i#UMs_hW7WoB{(EU@)k3}BhWs$^dwX4xobmH@`zCk2>KXjjs!jM45$q4A@dH@$O z#9KT}O_R8e5f{*^%YMZN#N%-l*IbY*tXbrgWG;^-vQHt0*V!-3P8YC@H#ooRr1U2L zHllc&m6D!U6=PL_nIytP1r;-YVT4Z=**|eM%&Hsg>do~xpLpSa6Aw+KqF)@G;^vdI z#|UPeV9%5G1Zhta?ojNxNcd7iS^dOD*eh+q~5B+7^=N_gkFUcHdJ?~;ld0PWaqdq1D KAFyQ)KKuvv^1>?s literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class b/bin/main/com/loki/lochat/managers/CustomCommandManager$CustomCommandData.class new file mode 100644 index 0000000000000000000000000000000000000000..76bcc94b562969251cdb4bc215e2a718948cdd66 GIT binary patch literal 1171 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 Z+jxR!Y5yNd}w!bBtZ z6@LORCN?BK_yhb=#(SsbBjE*K=AOBG=ghh1&i?uP>o_|WjEC;{mrc4XDU@TEW+rPdaL}73OD>$tu5V73APT`*MhDl&@v$xYn4PH zVXS^yx|+s8xG~SQT_#(9x_68g`FwGwqxN*%P(qP=9E3r-K*-Ehn*?hqTGvHnFzUcT znJ`ihLfzQywsgFvS{*(yR*%}M(^PRF`$5u5H-m)W*Z-?S7FeBIKCk5vU%tKJaG ztEp;luc)1Y1;y29H*V|aftWOUW}pvcE(GUg80vVbqmo1?Hax=YMa&}Pj~@iXhECEK zQIf)C#TkBDS&rNaBOWpGCUP4lauX(U3mh%3;F0n=%sZbWam;#082Q0q2$y)xNs``S zjIq-%z-5f{P7Yt;RSvh9(3T2sx>m6!vUG%rQ;s5Yf!?D;9}LeU7AS0e9zh~lE;rtr zHjMWyQF0<%+TuwM?mOTbX~7k--gFNYuhzqLuVVFZ)0@clFzr?B9^6wAQzDQ)@-MWH z0v%wOK4F|bW0JmLhQ1nM3&tP!M3{Rb%r#z$zpgwABg`ELlbkqev$)%s9Y}m)`~}M1 yPgDx~-;lKqGlxu&Ipgd1GrpDw*WNKTRN}(B42N(Ja~$Qh^WTB{eE$QJul@s6m literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/managers/MuteManager$MuteHistoryEntry.class b/bin/main/com/loki/lochat/managers/MuteManager$MuteHistoryEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..d30b49c6b32f9a5655eafde0e9ea0afe17154362 GIT binary patch literal 1132 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 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/utils/ChatFormatter.class b/bin/main/com/loki/lochat/utils/ChatFormatter.class new file mode 100644 index 0000000000000000000000000000000000000000..81b1e240141486cc362498fbccb73232e066fde6 GIT binary patch literal 8858 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 L;Scg7wROJ)JhT52 literal 0 HcmV?d00001 diff --git a/bin/main/com/loki/lochat/utils/DistanceUtil.class b/bin/main/com/loki/lochat/utils/DistanceUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..48dca495d91943504a8be7090c790f93f605bd68 GIT binary patch literal 1299 zcmbVL+fEZv6kVs&GA)!_X-m0@T*MZH5!7%gB5GqoQqh1?!`pN^DMN=2wo@a%_{c99 z6aRpO_=3>~Kfs^y55#q*Euk7>;$-HWefHUBowe8A^W)dI?*JZRU4>6z+;9#w+bLNb zj6L1eYOZBhwTxAD^|E2UHS*KFe^0iXQay7H;TJDkd+}4lGO8V-Zjnr-jdeNsMB9OQWAdDzt0>Pr`=A4RM z5QrvImq9&mTISmyMgjxW!+c%SZKe`SX8%+xUB7fFjA4ujbP!f*;aW~vpuZKlxk2zz zjH$RT(07Sub32T2Oi*@0z4B_1k?}Xem}%j8?Nx(Hif5*58*)tH3X zAhzuoJQ}-vw0S*iA-8$NS9r_tj5OW}bk+g3sYS)4Y@OS#Zj_$thmCT})SKNUu=rmk zOl4Fow)AAisj;Kl-v2!J9;rk+j8)uc2@8#0X0=;xyT~L(?(N%7tzwu@EZL{MO@gxh z=VUE025QXz1{{5|zqwYq(l`swf$1*@ex~6=J4d+<1ku4UTo2&f$yEql=%$BUC9)THeJVX2=0?G+}g94j$a$51vp5fYnpF?puKzmZ!lf`9q_;~oZv>ZwV5`j`e zO{gU!5&G~60so0|LTJUKGfpa!NQ4xk=)n+wfC*X}Vn`#7N9|sY;sdJx@y|VhjtkLb$`zgYZSqv5ugMUcN%b zC|^a9iiU`DuPz8myunA`)L(+AQ7oO-C8;ZNhLuxB*7NJ)4Bj2V2(uaWa*5ZGE^?V_ R: " + symbol: "!" + cooldown: 3 + + local: + enabled: true + radius: 100 + prefix: "[L]" + format: ": " + cooldown: 1 + + pm: + enabled: true + log: false + sound: true + sound-type: "ENTITY_EXPERIENCE_ORB_PICKUP" + +# Интеграция с GradientNick (LoPreff) +# Использует PlaceholderAPI плейсхолдеры +lopreff: + enabled: true + # Использовать градиентный ник в чате + use-gradient-name: true + # Использовать кастомный префикс + use-custom-prefix: true + +# Настройки отображения ника +display: + # Обновлять display name игрока (показывает префикс+ник над головой) + update-display-name: true + # Обновлять tab list + update-tab-list: true + +# Упоминания @ник +mentions: + enabled: true + sound: true + sound-type: "BLOCK_NOTE_BLOCK_PLING" + # Выделение при @ник + highlight: "CADF@{player}" + # Выделение когда твой ник написали (без @) + self-highlight: "CADF{player}" + +# Фильтр мата +filter: + enabled: true + # Регулярные выражения для обнаружения мата с обходами + patterns: + # Основные корни с вариациями + - "х\\s*у\\s*[йяёе]" # хуй, хуя, хуё, хуе + - "[хx]\\s*у\\s*[йяёе]" # латиница: xuй + - "п\\s*[иi]\\s*з\\s*д" # пизд, пiзд + - "п\\s*[иi]\\s*д\\s*[оа]\\s*р" # пидор, пидар + - "[еeё]\\s*б\\s*[аоуыи]" # ебать, ебут, ебал + - "б\\s*л\\s*я\\s*[тдь]" # блять, блядь + - "с\\s*у\\s*к\\s*[аи]" # сука, суки + - "м\\s*у\\s*д\\s*[аи]" # муда, муди + - "г\\s*а\\s*н\\s*д\\s*о\\s*н" # гандон + - "д\\s*р\\s*о\\s*ч" # дрочить + - "с\\s*с\\s*а\\s*т\\s*ь" # ссать + - "с\\s*р\\s*а\\s*т\\s*ь" # срать + - "ш\\s*м\\s*а\\s*р\\s*[аи]" # шмара + - "ч\\s*м\\s*[оы]" # чмо, чмы + - "г\\s*н\\s*и\\s*д\\s*[аы]" # гнида + + # Простые слова (для быстрой проверки) + words: + # Основные + - "хуй" + - "хуя" + - "хуё" + - "хуе" + - "хуёк" + - "хуёчек" + - "хуесос" + - "хуеплёт" + - "пизда" + - "пизде" + - "пизду" + - "пиздец" + - "пиздюк" + - "пиздюшка" + - "пиздануть" + - "спиздить" + - "пиздоглазый" + - "ебать" + - "ебал" + - "ебут" + - "ебись" + - "ебитесь" + - "ебашить" + - "уёбывать" + - "заёбывать" + - "ебашка" + - "ебанарот" + - "блять" + - "блядь" + - "блядина" + - "сука" + - "суки" + - "сучка" + - "мудак" + - "мудила" + - "мудачок" + - "гандон" + - "гандоник" + - "пидор" + - "пидорас" + - "дрочить" + - "дрочка" + - "онанист" + - "ссать" + - "срать" + - "говно" + - "говнюк" + - "шмара" + - "шлюха" + - "проститутка" + - "чмо" + - "чмошник" + - "чмырь" + - "гнида" + - "тварь" + - "падла" + - "сволочь" + - "охуеть" + - "ахуеть" + - "нихуя" + - "кончепизд" + + # Обходы с символами + - "х*й" + - "п@зда" + - "б#ять" + - "хуй" + - "ebat" + - "pidar" + - "mudak" + + action: "censor" # censor/block/warn + replacement: "***" + +# Анти-спам +antispam: + enabled: true + max-caps-percent: 70 + max-repeat-chars: 5 + similar-message-delay: 30 + +automessages: + enabled: true + interval: 300 + random: false + +formats: + announcement: "CADF[ОБЪЯВЛЕНИЕ] " + +# Настройки объявлений +announcements: + # Показывать title при объявлении + show-title: true + # Заголовок title + title-header: "CADFОБЪЯВЛЕНИЕ" + # Показывать actionbar при объявлении + show-actionbar: true + # Время показа title (в секундах) + title-duration: 3 + +# ======================================== +# Система мутов +# ======================================== +mute: + # Сообщения с плейсхолдерами: + # %duration% - время мута + # %reason% - причина + # %player% - замученный игрок + # %operator% - модератор (чистый ник без префикса и цвета) + + messages: + # Сообщение при муте (broadcast) + muted: "&#FF6B6B%player% 󅒐был замучен на &#FF6B6B%duration% 󅒐модератором &#FF6B6B%operator%󅒐. Причина: &#FF6B6B%reason%" + # Сообщение при размуте (broadcast) + unmuted: "BCB77%player% 󅒐был размучен модератором BCB77%operator%" + # Сообщение замученному игроку + you-muted: "&#FF6B6BВы замучены на %duration%! Причина: %reason%" + # Сообщение при перманентном муте + you-muted-permanent: "&#FF6B6BВы замучены навсегда! Причина: %reason%" + # Сообщение при попытке написать в чат + cannot-chat: "&#FF6B6BВы замучены! Осталось: %duration%" + cannot-chat-permanent: "&#FF6B6BВы замучены навсегда!" + # Тихий мут (только для тех кто видит) + silent-muted: "󅒐[Тихо] &#FF6B6B%player% 󅒐замучен на &#FF6B6B%duration% 󅒐(%operator%). Причина: %reason%" + silent-unmuted: "󅒐[Тихо] BCB77%player% 󅒐размучен (%operator%)" + + # Причина по умолчанию если не указана + default-reason: "Нету." + + # Максимальное время мута по умолчанию (если не указано время) + # Используется наивысшее доступное время из прав игрока + # Формат: 1d, 7d, 30d, perm (перманентный) + default-duration: "7d" + + # Доступные длительности для прав lochat.mute.dur.<время> + # Игрок с правом lochat.mute.dur.7d может мутить максимум на 7 дней + # lochat.mute.dur.perm - может мутить навсегда + durations: + - "10m" + - "30m" + - "1h" + - "6h" + - "12h" + - "1d" + - "3d" + - "7d" + - "14d" + - "30d" + - "perm" diff --git a/bin/main/custom-commands.yml b/bin/main/custom-commands.yml new file mode 100644 index 0000000..213e8a5 --- /dev/null +++ b/bin/main/custom-commands.yml @@ -0,0 +1,51 @@ +# Кастомные команды LoChat +# Здесь можно создавать свои команды с сообщениями и алиасами + +# Пример структуры: +# command-name: +# permission: "lochat.command.name" # Право для использования (опционально) +# message: "Текст сообщения" # Сообщение которое отправится +# aliases: ["alias1", "alias2"] # Алиасы команды (опционально) +# type: "chat" # Тип: chat, broadcast, title, actionbar +# target: "sender" # Кому отправить: sender, all, permission:право + +# Примеры команд: +help: + message: "&6Добро пожаловать на сервер!\n󅒐Используйте /rules для просмотра правил" + aliases: ["помощь", "хелп"] + type: "chat" + target: "sender" + +rules: + message: "&c&lПРАВИЛА СЕРВЕРА:\n�. Не гриферить\n2. Не читерить\n3. Уважать других игроков" + aliases: ["правила", "rule"] + type: "chat" + target: "sender" + +discord: + message: "Наш Discord сервер: discord.gg/example" + aliases: ["дискорд", "ds"] + type: "chat" + target: "sender" + +# Команда для админов +restart-warning: + permission: "lochat.admin" + message: "ВНИМАНИЕ! Сервер будет перезагружен через 5 минут!" + aliases: ["рестарт", "reboot"] + type: "broadcast" + target: "all" + +# Команда с title +welcome: + message: "Добро пожаловать!" + aliases: ["привет"] + type: "title" + target: "sender" + +# Команда с actionbar +coords: + message: "Ваши координаты: {x}, {y}, {z}" + aliases: ["координаты", "pos"] + type: "actionbar" + target: "sender" \ No newline at end of file diff --git a/bin/main/emojis.yml b/bin/main/emojis.yml new file mode 100644 index 0000000..fe22215 --- /dev/null +++ b/bin/main/emojis.yml @@ -0,0 +1,385 @@ +# LoChat - Смайлики и стикеры +# Автор: loki +# +# Формат: "триггер": "замена" +# Игроки пишут триггер, он заменяется на символ +# +# Права: +# - chat.emoji.use — использование смайликов +# - chat.emoji.* — все смайлики +# - chat.emoji.hearts — только категория hearts +# - chat.emoji.custom — кастомные смайлики + +# ═══════════════════════════════════════════ +# НАСТРОЙКИ +# ═══════════════════════════════════════════ +settings: + enabled: true + # Требовать право chat.emoji.use + require-permission: false + +# ═══════════════════════════════════════════ +# ЛИЦА И ЭМОЦИИ +# ═══════════════════════════════════════════ +faces: + ":)": "☺" + ":D": "😃" + ":(": "☹" + ";)": "😉" + ":P": "😛" + ":O": "😮" + "XD": "😆" + ":/": "😕" + ":*": "😘" + "^_^": "😊" + "-_-": "😑" + ">:(": "😠" + ":3": "😺" + ":'(": "😢" + ":')": "😂" + "o_o": "😳" + "O_O": "😱" + ":thinking:": "🤔" + ":cool:": "😎" + ":angry:": "😡" + ":sad:": "😢" + ":happy:": "😊" + ":laugh:": "😂" + ":cry:": "😭" + ":sleep:": "😴" + ":sick:": "🤢" + ":dead:": "💀" + +# ═══════════════════════════════════════════ +# СЕРДЦА И ЛЮБОВЬ +# ═══════════════════════════════════════════ +hearts: + "<3": "❤" + ":heart:": "❤" + ":red_heart:": "❤" + ":blue_heart:": "💙" + ":green_heart:": "💚" + ":yellow_heart:": "💛" + ":purple_heart:": "💜" + ":black_heart:": "🖤" + ":white_heart:": "🤍" + ":orange_heart:": "🧡" + ":broken_heart:": "💔" + ":two_hearts:": "💕" + ":sparkling_heart:": "💖" + ":heartbeat:": "💓" + ":heartpulse:": "💗" + ":love:": "💕" + ":kiss:": "💋" + +# ═══════════════════════════════════════════ +# ЖЕСТЫ И РУКИ +# ═══════════════════════════════════════════ +gestures: + ":thumbsup:": "👍" + ":+1:": "👍" + ":thumbsdown:": "👎" + ":-1:": "👎" + ":clap:": "👏" + ":wave:": "👋" + ":ok:": "👌" + ":ok_hand:": "👌" + ":fist:": "✊" + ":punch:": "👊" + ":peace:": "✌" + ":v:": "✌" + ":muscle:": "💪" + ":strong:": "💪" + ":pray:": "🙏" + ":hands:": "🙌" + ":point_up:": "☝" + ":point_down:": "👇" + ":point_left:": "👈" + ":point_right:": "👉" + ":middle_finger:": "🖕" + ":call:": "🤙" + +# ═══════════════════════════════════════════ +# ПРИРОДА И ПОГОДА +# ═══════════════════════════════════════════ +nature: + ":fire:": "🔥" + ":flame:": "🔥" + ":zap:": "⚡" + ":lightning:": "⚡" + ":boom:": "💥" + ":explosion:": "💥" + ":sparkles:": "✨" + ":stars:": "✨" + ":snow:": "❄" + ":snowflake:": "❄" + ":cloud:": "☁" + ":sun:": "☀" + ":sunny:": "☀" + ":moon:": "🌙" + ":crescent_moon:": "🌙" + ":full_moon:": "🌕" + ":rainbow:": "🌈" + ":water:": "💧" + ":drop:": "💧" + ":ocean:": "🌊" + ":wind:": "💨" + ":tornado:": "🌪" + ":leaf:": "🍃" + ":tree:": "🌳" + ":flower:": "🌸" + ":rose:": "🌹" + ":cactus:": "🌵" + +# ═══════════════════════════════════════════ +# ЗВЁЗДЫ И СИМВОЛЫ +# ═══════════════════════════════════════════ +symbols: + ":star:": "⭐" + ":star2:": "🌟" + ":glowing_star:": "🌟" + ":dizzy:": "💫" + ":sparkle:": "❇" + ":skull:": "💀" + ":ghost:": "👻" + ":alien:": "👽" + ":robot:": "🤖" + ":poop:": "💩" + ":100:": "💯" + ":gem:": "💎" + ":diamond:": "💎" + ":money:": "💰" + ":dollar:": "💵" + ":coin:": "🪙" + ":gift:": "🎁" + ":balloon:": "🎈" + ":party:": "🎉" + ":tada:": "🎉" + ":confetti:": "🎊" + ":trophy:": "🏆" + ":medal:": "🏅" + ":crown:": "👑" + ":king:": "👑" + +# ═══════════════════════════════════════════ +# МАЙНКРАФТ ТЕМАТИКА +# ═══════════════════════════════════════════ +minecraft: + ":sword:": "⚔" + ":crossed_swords:": "⚔" + ":shield:": "🛡" + ":axe:": "🪓" + ":pickaxe:": "⛏" + ":bow:": "🏹" + ":arrow:": "➤" + ":bomb:": "💣" + ":tnt:": "🧨" + ":potion:": "🧪" + ":ender:": "🟣" + ":nether:": "🔴" + ":emerald:": "💚" + ":gold:": "🟡" + ":iron:": "⬜" + ":coal:": "⬛" + ":redstone:": "🔴" + ":lapis:": "🔵" + ":exp:": "🟢" + ":xp:": "🟢" + ":heart_mc:": "❤" + ":hunger:": "🍖" + ":armor:": "🛡" + +# ═══════════════════════════════════════════ +# ЖИВОТНЫЕ +# ═══════════════════════════════════════════ +animals: + ":cat:": "🐱" + ":dog:": "🐶" + ":wolf:": "🐺" + ":fox:": "🦊" + ":pig:": "🐷" + ":cow:": "🐮" + ":sheep:": "🐑" + ":chicken:": "🐔" + ":dragon:": "🐉" + ":bee:": "🐝" + ":fish:": "🐟" + ":spider:": "🕷" + ":bat:": "🦇" + ":rabbit:": "🐰" + ":bear:": "🐻" + ":panda:": "🐼" + ":monkey:": "🐵" + ":horse:": "🐴" + ":unicorn:": "🦄" + ":snake:": "🐍" + ":turtle:": "🐢" + ":frog:": "🐸" + ":bird:": "🐦" + ":penguin:": "🐧" + ":owl:": "🦉" + +# ═══════════════════════════════════════════ +# ЕДА И НАПИТКИ +# ═══════════════════════════════════════════ +food: + ":apple:": "🍎" + ":green_apple:": "🍏" + ":bread:": "🍞" + ":meat:": "🍖" + ":steak:": "🥩" + ":cake:": "🎂" + ":cookie:": "🍪" + ":pizza:": "🍕" + ":hamburger:": "🍔" + ":fries:": "🍟" + ":hotdog:": "🌭" + ":taco:": "🌮" + ":sushi:": "🍣" + ":ramen:": "🍜" + ":egg:": "🥚" + ":cheese:": "🧀" + ":milk:": "🥛" + ":coffee:": "☕" + ":tea:": "🍵" + ":beer:": "🍺" + ":wine:": "🍷" + ":cocktail:": "🍹" + ":ice_cream:": "🍦" + ":donut:": "🍩" + ":candy:": "🍬" + ":chocolate:": "🍫" + ":watermelon:": "🍉" + ":banana:": "🍌" + ":carrot:": "🥕" + ":corn:": "🌽" + +# ═══════════════════════════════════════════ +# ИГРОВЫЕ И ИНТЕРФЕЙС +# ═══════════════════════════════════════════ +gaming: + ":game:": "🎮" + ":controller:": "🎮" + ":joystick:": "🕹" + ":dice:": "🎲" + ":chess:": "♟" + ":target:": "🎯" + ":flag:": "🚩" + ":checkered_flag:": "🏁" + ":warning:": "⚠" + ":no_entry:": "⛔" + ":stop:": "🛑" + ":check:": "✓" + ":checkmark:": "✔" + ":x:": "✗" + ":cross:": "✖" + ":question:": "❓" + ":exclamation:": "❗" + ":zzz:": "💤" + ":bulb:": "💡" + ":idea:": "💡" + ":bell:": "🔔" + ":mute:": "🔇" + ":speaker:": "🔊" + ":mega:": "📢" + ":mic:": "🎤" + +# ═══════════════════════════════════════════ +# СТРЕЛКИ И НАПРАВЛЕНИЯ +# ═══════════════════════════════════════════ +arrows: + ":arrow_up:": "↑" + ":arrow_down:": "↓" + ":arrow_left:": "←" + ":arrow_right:": "→" + ":arrow_up_right:": "↗" + ":arrow_up_left:": "↖" + ":arrow_down_right:": "↘" + ":arrow_down_left:": "↙" + ":arrows_lr:": "↔" + ":arrows_ud:": "↕" + ":return:": "↩" + ":redo:": "↪" + ":refresh:": "🔄" + ":infinity:": "∞" + +# ═══════════════════════════════════════════ +# МУЗЫКА И ИСКУССТВО +# ═══════════════════════════════════════════ +music: + ":note:": "♪" + ":notes:": "♫" + ":music:": "🎵" + ":musical_note:": "🎶" + ":headphones:": "🎧" + ":guitar:": "🎸" + ":piano:": "🎹" + ":drum:": "🥁" + ":violin:": "🎻" + ":art:": "🎨" + ":palette:": "🎨" + ":camera:": "📷" + ":movie:": "🎬" + ":tv:": "📺" + ":radio:": "📻" + +# ═══════════════════════════════════════════ +# РАЗНОЕ +# ═══════════════════════════════════════════ +misc: + ":lock:": "🔒" + ":unlock:": "🔓" + ":key:": "🔑" + ":hourglass:": "⏳" + ":timer:": "⏱" + ":clock:": "🕐" + ":calendar:": "📅" + ":pin:": "📌" + ":paperclip:": "📎" + ":scissors:": "✂" + ":pencil:": "✏" + ":pen:": "🖊" + ":book:": "📖" + ":scroll:": "📜" + ":mail:": "📧" + ":envelope:": "✉" + ":phone:": "📱" + ":computer:": "💻" + ":keyboard:": "⌨" + ":mouse:": "🖱" + ":trash:": "🗑" + ":tools:": "🛠" + ":wrench:": "🔧" + ":hammer:": "🔨" + ":gear:": "⚙" + ":link:": "🔗" + ":magnet:": "🧲" + ":battery:": "🔋" + ":plug:": "🔌" + +# ═══════════════════════════════════════════ +# КАСТОМНЫЕ (добавляй свои) +# ═══════════════════════════════════════════ +custom: + # Примеры кастомных смайликов + ":server:": "🖥" + ":admin:": "👨‍💻" + ":mod:": "🛡" + ":vip:": "⭐" + ":donate:": "💎" + ":online:": "🟢" + ":offline:": "🔴" + ":afk:": "💤" + ":gg:": "🏆" + ":ez:": "😎" + ":rip:": "⚰" + ":f:": "🇫" + ":pog:": "😲" + ":kek:": "😂" + ":sus:": "🤨" + ":bruh:": "😐" + ":based:": "💪" + ":cringe:": "😬" + ":ratio:": "📉" + ":w:": "🏆" + ":l:": "📉" diff --git a/bin/main/filter-words.json b/bin/main/filter-words.json new file mode 100644 index 0000000..4bdd05c --- /dev/null +++ b/bin/main/filter-words.json @@ -0,0 +1,624 @@ +{ + "words": [ + "хуй", + "хуя", + "хуе", + "хуи", + "хую", + "хуё", + "пизд", + "пизда", + "пиздец", + "пизду", + "пизды", + "пиздо", + "блять", + "блядь", + "бля", + "бляд", + "ебать", + "ебал", + "ебало", + "ебать", + "ебет", + "ебут", + "ебу", + "ебё", + "ебан", + "сука", + "суки", + "суке", + "суку", + "сукой", + "суко", + "ебан", + "ебана", + "ебану", + "ебань", + "ебля", + "ебли", + "ебло", + "ебля", + "ебут", + "ебуть", + "ебёшь", + "ебёт", + "ебём", + "ебёте", + "ебут", + "ебаный", + "ебаная", + "ебаное", + "ебаные", + "ебаного", + "ебаной", + "ебаному", + "ебаным", + "ебаных", + "ебаным", + "ебаные", + "ебаными", + "ебаных", + "ебанный", + "ебанная", + "ебанное", + "ебанные", + "ебанного", + "ебанной", + "ебанному", + "ебанным", + "ебанных", + "ебанным", + "ебанные", + "ебанными", + "ебанных", + "заеб", + "заеба", + "заебе", + "заеби", + "заебу", + "заебё", + "уеб", + "уеба", + "уебе", + "уеби", + "уебу", + "уебё", + "выеб", + "выеба", + "выебе", + "выеби", + "выебу", + "выебё", + "проеб", + "проеба", + "проебе", + "проеби", + "проебу", + "проебё", + "долбоеб", + "долбоеба", + "долбоебе", + "долбоеби", + "долбоебу", + "долбоебё", + "мудак", + "мудака", + "мудаке", + "мудаки", + "мудаку", + "мудаком", + "мудаки", + "мудаков", + "мудакам", + "мудаками", + "мудаках", + "мудила", + "мудилы", + "мудиле", + "мудилу", + "мудилой", + "мудило", + "гандон", + "гондон", + "гандона", + "гондона", + "гандону", + "гондону", + "гандоном", + "гондоном", + "гандоне", + "гондоне", + "гандонов", + "гондонов", + "гандонам", + "гондонам", + "гандонами", + "гондонами", + "гандонах", + "гондонах", + "пидор", + "пидора", + "пидору", + "пидором", + "пидоре", + "пидоры", + "пидоров", + "пидорам", + "пидорами", + "пидорах", + "пидарас", + "пидараса", + "пидарасу", + "пидарасом", + "пидарасе", + "пидарасы", + "пидарасов", + "пидарасам", + "пидарасами", + "пидарасах", + "педик", + "педика", + "педику", + "педиком", + "педике", + "педики", + "педиков", + "педикам", + "педиками", + "педиках", + "гомик", + "гомика", + "гомику", + "гомиком", + "гомике", + "гомики", + "гомиков", + "гомикам", + "гомиками", + "гомиках", + "шлюха", + "шлюхи", + "шлюхе", + "шлюху", + "шлюхой", + "шлюхо", + "шлюх", + "блядина", + "блядины", + "блядине", + "блядину", + "блядиной", + "блядино", + "блядин", + "шлюшка", + "шлюшки", + "шлюшке", + "шлюшку", + "шлюшкой", + "шлюшко", + "шлюшек", + "проститутка", + "проститутки", + "проститутке", + "проститутку", + "проституткой", + "проститутко", + "проституток", + "проституткам", + "проститутками", + "проститутках", + "еблан", + "еблана", + "еблану", + "ебланом", + "еблане", + "ебланы", + "ебланов", + "ебланам", + "ебланами", + "ебланах", + "ебанутый", + "ебанутого", + "ебанутому", + "ебанутым", + "ебанутом", + "ебанутая", + "ебанутой", + "ебанутую", + "ебанутое", + "ебанутые", + "ебанутых", + "ебанутым", + "ебанутыми", + "ебанутых", + "ебанутый", + "ебанутого", + "ебанутому", + "ебанутым", + "ебанутом", + "ебанутая", + "ебанутой", + "ебанутую", + "ебанутое", + "ебанутые", + "ебанутых", + "ебанутым", + "ебанутыми", + "ебанутых", + "уебан", + "уебана", + "уебану", + "уебаном", + "уебане", + "уебаны", + "уебанов", + "уебанам", + "уебанами", + "уебанах", + "долбоёб", + "долбоёба", + "долбоёбу", + "долбоёбом", + "долбоёбе", + "долбоёбы", + "долбоёбов", + "долбоёбам", + "долбоёбами", + "долбоёбах", + "долбоеб", + "долбоеба", + "долбоебу", + "долбоебом", + "долбоебе", + "долбоебы", + "долбоебов", + "долбоебам", + "долбоебами", + "долбоебах", + "еблан", + "еблана", + "еблану", + "ебланом", + "еблане", + "ебланы", + "ебланов", + "ебланам", + "ебланами", + "ебланах", + "залупа", + "залупы", + "залупе", + "залупу", + "залупой", + "залупо", + "залуп", + "залупка", + "залупки", + "залупке", + "залупку", + "залупкой", + "залупко", + "залупок", + "залупкам", + "залупками", + "залупках", + "мразь", + "мрази", + "мрази", + "мразью", + "мразь", + "мразей", + "мразям", + "мразями", + "мразях", + "мразота", + "мразоты", + "мразоте", + "мразоту", + "мразотой", + "мразото", + "мразот", + "мразотой", + "мразотам", + "мразотами", + "мразотах", + "ублюдок", + "ублюдка", + "ублюдку", + "ублюдком", + "ублюдке", + "ублюдки", + "ублюдков", + "ублюдкам", + "ублюдками", + "ублюдках", + "выблядок", + "выблядка", + "выблядку", + "выблядком", + "выблядке", + "выблядки", + "выблядков", + "выблядкам", + "выблядками", + "выблядках", + "падла", + "падлы", + "падле", + "падлу", + "падлой", + "падло", + "падл", + "падлюга", + "падлюги", + "падлюге", + "падлюгу", + "падлюгой", + "падлюго", + "падлюг", + "падлюгам", + "падлюгами", + "падлюгах", + "гад", + "гада", + "гаду", + "гадом", + "гаде", + "гады", + "гадов", + "гадам", + "гадами", + "гадах", + "гадина", + "гадины", + "гадине", + "гадину", + "гадиной", + "гадино", + "гадин", + "гадинам", + "гадинами", + "гадинах", + "тварь", + "твари", + "твари", + "тварью", + "тварь", + "тварей", + "тварям", + "тварями", + "тварях", + "тварина", + "тварины", + "тварине", + "тварину", + "твариной", + "тварино", + "тварин", + "тваринам", + "тваринами", + "тваринах", + "сволочь", + "сволочи", + "сволочи", + "сволочью", + "сволочь", + "сволочей", + "сволочам", + "сволочами", + "сволочах", + "сволочка", + "сволочки", + "сволочке", + "сволочку", + "сволочкой", + "сволочко", + "сволочек", + "сволочкам", + "сволочками", + "сволочках", + "скотина", + "скотины", + "скотине", + "скотину", + "скотиной", + "скотино", + "скотин", + "скотинам", + "скотинами", + "скотинах", + "скотиняка", + "скотиняки", + "скотиняке", + "скотиняку", + "скотинякой", + "скотиняко", + "скотиняк", + "скотинякам", + "скотиняками", + "скотиняках", + "козел", + "козла", + "козлу", + "козлом", + "козле", + "козлы", + "козлов", + "козлам", + "козлами", + "козлах", + "козлина", + "козлины", + "козлине", + "козлину", + "козлиной", + "козлино", + "козлин", + "козлинам", + "козлинами", + "козлинах", + "козлище", + "козлища", + "козлищу", + "козлищем", + "козлище", + "козлищ", + "козлищам", + "козлищами", + "козлищах", + "козёл", + "козла", + "козлу", + "козлом", + "козле", + "козлы", + "козлов", + "козлам", + "козлами", + "козлах", + "козлина", + "козлины", + "козлине", + "козлину", + "козлиной", + "козлино", + "козлин", + "козлинам", + "козлинами", + "козлинах", + "козлище", + "козлища", + "козлищу", + "козлищем", + "козлище", + "козлищ", + "козлищам", + "козлищами", + "козлищах", + "козёл", + "козла", + "козлу", + "козлом", + "козле", + "козлы", + "козлов", + "козлам", + "козлами", + "козлах", + "козлина", + "козлины", + "козлине", + "козлину", + "козлиной", + "козлино", + "козлин", + "козлинам", + "козлинами", + "козлинах", + "козлище", + "козлища", + "козлищу", + "козлищем", + "козлище", + "козлищ", + "козлищам", + "козлищами", + "козлищах" + ], + "fragments": [ + "хуй", + "хуя", + "хуе", + "хуи", + "хую", + "хуё", + "пизд", + "бля", + "бляд", + "еб", + "еба", + "ебе", + "еби", + "ебу", + "ебё", + "ебан", + "ебал", + "ебан", + "ебля", + "ебли", + "ебло", + "ебут", + "ебуть", + "ебёшь", + "ебёт", + "ебём", + "ебёте", + "ебут", + "ебаный", + "ебаная", + "ебаное", + "ебаные", + "ебаного", + "ебаной", + "ебаному", + "ебаным", + "ебаных", + "ебаным", + "ебаные", + "ебаными", + "ебаных", + "ебанный", + "ебанная", + "ебанное", + "ебанные", + "ебанного", + "ебанной", + "ебанному", + "ебанным", + "ебанных", + "ебанным", + "ебанные", + "ебанными", + "ебанных", + "заеб", + "уеб", + "выеб", + "проеб", + "долбоеб", + "мудак", + "мудил", + "гандон", + "гондон", + "пидор", + "пидарас", + "педик", + "гомик", + "шлюх", + "блядин", + "проститутк", + "еблан", + "ебанут", + "уебан", + "долбоёб", + "долбоеб", + "залуп", + "мраз", + "мразот", + "ублюдок", + "выблядок", + "падл", + "падлюг", + "гад", + "гадин", + "твар", + "тварин", + "сволоч", + "скотин", + "козел", + "козл", + "козёл", + "козлищ" + ] +} + diff --git a/bin/main/gradient-config.yml b/bin/main/gradient-config.yml new file mode 100644 index 0000000..344091b --- /dev/null +++ b/bin/main/gradient-config.yml @@ -0,0 +1,68 @@ +# LoChat Gradient Module Configuration +# Модуль градиентных ников (интегрированный LoPreff) + +# Включить/выключить модуль +enabled: true + +# Максимальное количество цветов в градиенте +max-colors: 7 + +# Минимальное количество цветов +min-colors: 1 + +# Цена за каждый цвет (PlayerPoints) +price-per-color: 50 + +# Цена за префикс +prefix-price: 500 + +# Покупка префикса один раз (потом бесплатно) +prefix-one-time-purchase: true + +# Кулдаун на смену цвета (секунды) +color-cooldown: 60 + +# Кулдаун на смену префикса (секунды) +prefix-cooldown: 300 + +# Максимальная длина префикса +max-prefix-length: 7 + +# Формат префикса ({prefix} - сам префикс) +prefix-format: "[{prefix}] " + +# Применять градиент на префикс +gradient-on-prefix: true + +# Применять градиент на LuckPerms префикс (если нет кастомного) +gradient-on-luckperms-prefix: true + +# Единый градиент на префикс + ник +continuous-gradient: true + +# Использовать &#RRGGBB формат (true) или <#RRGGBB> (false) +use-legacy-rgb-format: false + +# Отображение над игроком +display: + # Обновлять display name игрока (показывает префикс+ник над головой) + update-display-name: true + # Обновлять tab list + update-tab-list: true + +# Тип хранилища: YAML или SQLITE +storage-type: YAML + +# Файл SQLite базы данных +sqlite-file: gradient-data.db + +# Чёрный список префиксов (нельзя использовать) +prefix-blacklist: + - admin + - owner + - moder + - helper + - staff + - модер + - админ + - хелпер diff --git a/bin/main/gradient-messages.yml b/bin/main/gradient-messages.yml new file mode 100644 index 0000000..f8dfe09 --- /dev/null +++ b/bin/main/gradient-messages.yml @@ -0,0 +1,57 @@ +# LoChat Gradient Module Messages +# Сообщения модуля градиентных ников + +# Общие +only-player: "CADFЭта команда только для игроков!" +no-permission: "CADFУ вас нет прав на это действие!" +player-not-found: "CADFИгрок не найден!" +reload-success: "CADFКонфигурация градиентов перезагружена!" +cooldown: "CADFПодождите ещё {time} секунд!" + +# Цвета +color-help: | + CADF=== Команда /color === + CADF/color <цвет1> [цвет2] ... 󅒐— установить градиент + CADF/color on 󅒐— включить цвет + CADF/color off 󅒐— выключить цвет + CADF/color reset 󅒐— сбросить цвет + CADF/color copy <игрок> 󅒐— скопировать цвет + 󅒐Пример: /color #FF0000 #00FF00 #0000FF +color-enabled: "CADFЦвет ника включён!" +color-disabled: "CADFЦвет ника выключен!" +color-reset: "CADFЦвет ника сброшен!" +color-no-colors: "CADFУ вас нет установленных цветов!" +color-success: "CADFЦвет успешно установлен! Списано: {price} PP" +color-copy-usage: "CADFИспользование: /color copy <игрок>" +color-copy-no-colors: "CADFУ игрока {player} нет цветов!" +invalid-color: "CADFНеверный формат цвета: {color}. Используйте #RRGGBB" +too-many-colors: "CADFМаксимум {max} цветов!" +not-enough-colors: "CADFМинимум {min} цветов!" +not-enough-points-color: "CADFНедостаточно поинтов! Нужно: {price} PP" + +# Префикс +prefix-help: | + CADF=== Команда /prefix === + CADF/prefix <текст> 󅒐— установить префикс + CADF/prefix on 󅒐— включить префикс + CADF/prefix off 󅒐— выключить префикс + CADF/prefix reset 󅒐— сбросить префикс +prefix-enabled: "CADFПрефикс включён!" +prefix-disabled: "CADFПрефикс выключен!" +prefix-reset-success: "CADFПрефикс сброшен!" +prefix-no-prefix: "CADFУ вас нет установленного префикса!" +prefix-success: "CADFПрефикс успешно установлен! Списано: {price} PP" +prefix-success-free: "CADFПрефикс успешно изменён!" +prefix-no-colors: "CADFПрефикс не может содержать цветовые коды!" +prefix-invalid-chars: "CADFПрефикс содержит недопустимые символы!" +prefix-blacklisted: "CADFЭтот префикс запрещён!" +prefix-too-long: "CADFПрефикс слишком длинный! Максимум: {max} символов" +not-enough-points-prefix: "CADFНедостаточно поинтов! Нужно: {price} PP" + +# Админ информация +info-header: "CADF=== Информация об игроке {player} ===" +info-prefix: "󅒐Префикс: &f{prefix}" +info-prefix-enabled: "󅒐Префикс включён: &f{enabled}" +info-colors: "󅒐Цвета: &f{colors}" +info-color-enabled: "󅒐Цвет включён: &f{enabled}" +info-prefix-purchased: "󅒐Префикс куплен: &f{purchased}" \ No newline at end of file diff --git a/bin/main/messages.yml b/bin/main/messages.yml new file mode 100644 index 0000000..f148fab --- /dev/null +++ b/bin/main/messages.yml @@ -0,0 +1,69 @@ +prefix: "CADF[LoChat]" + +global: + disabled: "CADFГлобальный чат отключен" + toggled-on: "CADFГлобальный чат включен" + toggled-off: "CADFГлобальный чат отключен" + +local: + no-players: "CADFРядом нет игроков" + +pm: + # Форматы личных сообщений + # {sender} - ник отправителя, {receiver} - ник получателя + # {sender_display} - отправитель с градиентом, {receiver_display} - получатель с градиентом + # {message} - текст сообщения + format-sent: "󅒐[PM] Ты → {receiver_display}󅒐: {message}" + format-received: "󅒐[PM] {sender_display}󅒐 → Ты: {message}" + # Использовать градиентные ники в PM + use-gradient-names: true + # Старые форматы (для совместимости) + sent: "󅒐[PM] Ты → {player}: {message}" + received: "󅒐[PM] {player} → Ты: {message}" + no-reply: "CADFНекому ответить" + ignored: "CADFЭтот игрок вас игнорирует" + player-offline: "CADFИгрок не в сети" + self: "CADFНельзя писать самому себе" + +ignore: + added: "CADFИгрок {player} добавлен в игнор" + removed: "CADFИгрок {player} убран из игнора" + already-ignored: "CADFИгрок уже в игноре" + not-ignored: "CADFИгрок не в игноре" + self: "CADFНельзя игнорировать себя" + +announce: + reloaded: "CADFКонфигурация перезагружена" + +spy: + enabled: "CADFШпион режим включен" + disabled: "CADFШпион режим выключен" + format: "󅒐[SPY] {sender} → {receiver}: {message}" + +filter: + blocked: "CADFСообщение заблокировано (мат)" + warned: "CADFПредупреждение: не используйте мат!" + +cooldown: + wait: "CADFПодождите {time} сек перед следующим сообщением" + +antispam: + caps: "CADFСлишком много заглавных букв!" + repeat: "CADFНе повторяйте символы!" + similar: "CADFНе отправляйте одинаковые сообщения!" + +clearchat: + cleared: "CADFЧат очищен администратором {player}" + +errors: + no-permission: "CADFНет прав!" + player-not-found: "CADFИгрок не найден" + invalid-usage: "CADFИспользование: {usage}" + +mute: + muted: "CADFИгрок {player} замучен на {time}" + unmuted: "CADFИгрок {player} размучен" + already-muted: "CADFИгрок уже замучен" + not-muted: "CADFИгрок не замучен" + you-muted: "CADFВы замучены! Осталось: {time}" + permanent: "CADFВы замучены навсегда!" \ No newline at end of file diff --git a/bin/main/plugin.yml b/bin/main/plugin.yml new file mode 100644 index 0000000..9a0757f --- /dev/null +++ b/bin/main/plugin.yml @@ -0,0 +1,221 @@ +name: LoChat +version: '1.5.5' +main: com.loki.lochat.LoChat +api-version: '1.21' +folia-supported: true +author: loki +description: Advanced chat plugin for Folia with gradient nicks + +softdepend: + - PlaceholderAPI + - PlayerPoints + - LuckPerms + - LibertyBans + +commands: + g: + description: Send global message + usage: /g + permission: chat.global.use + aliases: [п] + + globalchat: + description: Toggle global chat + usage: /globalchat toggle + permission: chat.global.toggle + aliases: [пдщифдсрфе] + + l: + description: Send local message + usage: /l + permission: chat.local.use + aliases: [д] + + msg: + description: Send private message + usage: /msg + permission: chat.pm.use + aliases: [tell, w, pm, m, ьып, ееддж, цж, зьж, ьж] + + reply: + description: Reply to last message + usage: /reply + permission: chat.pm.use + aliases: [r, ответить, кузду, к] + + ignore: + description: Ignore player + usage: /ignore + permission: chat.pm.ignore + aliases: [игнор, шптщку] + + unignore: + description: Unignore player + usage: /unignore + permission: chat.pm.ignore + aliases: [разигнор, гтшптщку] + + announce: + description: Send announcement + usage: /announce + permission: chat.announce.use + aliases: [объявление, анонс, фттщгтсу] + + chatspy: + description: Toggle chat spy mode + usage: /chatspy + permission: chat.spy + aliases: [spy, шпион, срфезуж, зуж] + + clearchat: + description: Clear chat for all players + usage: /clearchat + permission: chat.clear + aliases: [cc, очиститьчат, сдуфксрфе, сс] + + lochat: + description: LoChat admin command + usage: /lochat [reload] + permission: lochat.admin + aliases: [дщсрфе] + + color: + description: Set gradient nick color + usage: /color [hex2] ... + permission: gradient.color + aliases: [gradient, цвет, градиент, сщдщк, пкфвшуте] + + prefix: + description: Set custom prefix + usage: /prefix + permission: gradient.prefix + aliases: [префикс, зкуашч] + + aprefix: + description: Admin gradient commands + usage: /aprefix + permission: gradient.admin + aliases: [gradientadmin, азкуашч, пкфвшуетефвьшт] + + lmute: + description: Mute a player + usage: /lmute [time] [-s] [reason] + permission: lochat.mute + aliases: [mute, мут, ьгеу] + + lunmute: + description: Unmute a player + usage: /lunmute [-s] + permission: lochat.unmute + aliases: [unmute, размут, гтьгеу] + + lmutelist: + description: List all active mutes + usage: /lmutelist + permission: lochat.mutelist + aliases: [mutelist, мутлист, ьгеудшые] + + lmutehistory: + description: View mute history of a player + usage: /lmutehistory + permission: lochat.mutehistory + aliases: [mutehistory, мутистория, ьгеершыещку] + + lmuteblame: + description: View mutes issued by a moderator + usage: /lmuteblame + permission: lochat.muteblame + aliases: [muteblame, мутблейм, ьгеуидфьу] + +permissions: + chat.global.use: + default: true + chat.global.toggle: + default: true + chat.global.color: + default: op + chat.local.use: + default: true + chat.local.color: + default: op + chat.pm.use: + default: true + chat.pm.ignore: + default: true + chat.announce.use: + default: op + chat.announce.reload: + default: op + chat.spy: + default: op + chat.clear: + default: op + chat.bypass.cooldown: + default: op + chat.bypass.filter: + default: op + chat.bypass.antispam: + default: op + chat.mention.use: + default: true + gradient.color: + default: true + gradient.prefix: + default: true + gradient.admin: + default: op + gradient.bypass.cooldown: + default: op + gradient.bypass.cost: + default: op + lochat.admin: + default: op + lochat.mute: + default: op + lochat.unmute: + default: op + lochat.mutelist: + default: op + lochat.mutehistory: + default: op + lochat.muteblame: + default: op + lochat.mute.silent: + description: Can use silent mute (-s flag) + default: op + lochat.mute.see-silent: + description: Can see silent mute notifications + default: op + lochat.mute.dur.10m: + description: Can mute for 10 minutes + default: false + lochat.mute.dur.30m: + description: Can mute for 30 minutes + default: false + lochat.mute.dur.1h: + description: Can mute for 1 hour + default: false + lochat.mute.dur.6h: + description: Can mute for 6 hours + default: false + lochat.mute.dur.12h: + description: Can mute for 12 hours + default: false + lochat.mute.dur.1d: + description: Can mute for 1 day + default: false + lochat.mute.dur.3d: + description: Can mute for 3 days + default: false + lochat.mute.dur.7d: + description: Can mute for 7 days + default: op + lochat.mute.dur.14d: + description: Can mute for 14 days + default: false + lochat.mute.dur.30d: + description: Can mute for 30 days + default: false + lochat.mute.dur.perm: + description: Can mute permanently + default: op diff --git a/bin/test/com/loki/lochat/gradient/data/GradientPlayerDataTest.class b/bin/test/com/loki/lochat/gradient/data/GradientPlayerDataTest.class new file mode 100644 index 0000000000000000000000000000000000000000..0f2c6111c24f9c254997f6972cd07b0916663095 GIT binary patch literal 3770 zcmb7G33n7#8oiY?be3lVod^U7U_eQN(h(QLAc7=;ga)EXT4dB%bSj++m9DnBT8*=~ z@6PCq`!b8p=qb<9#R zd-lSzRqzd@xvK>oHPGf0c&=(M5IGk>SAE;b&dp7ZadrJ+yJY)E473goDlrePNw`NyJFz>s}?9$Q^vZA z<VLeSP&??`n7JS#6U$7RHo zTXUdtHZw+$4=day$k&9(t}o!7xEsgPINFo~az^1E9H+B5z0<2eS#ri)%9aeA&>iMF+H0zD}KOue2J}ql31Zra`*v>;Ca@};MA1X_@Kf= za;zsjrq$HXb(2=l%rDl79#JqwUVF6GhJpcz2uooRMXs?X>)~w*SQuUD7hTc$d8V?} zhGpu^PfpV*T+sn+u&yYS>a6wP3PQL~BRt9&?Vgwz;a?jV{q*jU5qXrrRuvw@;|5yX zMK+s+BuYrxSQUn;(~nh!C-F;dVqHj6y#_l21L=fNUMWc3-o`}1E!$Q_wu-i=MBCE_ z_9V!PH<|!i4m_*y9G+*YRqQ8qcqb*iFG_e{lJHJW4&`OzD+;gTH9D5zmD-sM;o_Ca zKJR*V(Jq-RuXvvi=nQOX?%J#6dgtDAnSTz)To?xW2pe=yL5eX<@Oj@Y7M&nt|Df=e zWO8@iE#Ve+gmTatt~~Ot!h3RLLzG|9nQnb1RxADZP~julo{6?c%cOOhtE2;e!e7$( zbJHz4vs&>j=H4e#BO41<&*L>b%UkBO?KpNta{jLhf5T^*Om?E1GfHp325jULkm2DL^l&7*dig6rlSl>o zHV@Zu?N`_~{4M$)82%F5zQ)e4FwlVR3Up<7KlbpV?Tt}vjwtptQCuHVd>K+K3M@YZ zYq+6?AwA00aEl%ttYI`9T>@W9Y8caxC!^7+XmqBAd)xK$Yz^na;V(FBC?2L7U<)17 z$M3Bez&74p+cC;`jbjJSVkgei;}))qS+f{f^Khayvvi_(eurkCrw|!sF05gpG1X9! zq4mJ^#JYi=+e_}j7~77BZ7Gp$B4q0gIP5sbSc5~y=0@hnP2|`g!|#poFDBw2qAg-g zrKVOn^8X+V;qPWf1Swq63r5K+?*-b@SB|Q?jvtX z+jZ~~o{^M&AyW<~S})<{7S0TbfYzWoH?gFFG1lKWpC_1tCoqDOfrw2SJQT4W`|vt` zOF#aOC!~_~%o~Ac-%J#^61pU-1=Opibq&9dW`a~r#b;vC*c$Yk9Klc1KWA7eXR(KG zGW&6F%um_KPj4s6mI`bf@N#CUkkG6}W$a!LzWL zFICc#b&$7&My1$AKgZvLkpAOmGyXGVZ0>d1vSl(}B%?#dm7ioZ@E_`F!GC`M37#1* literal 0 HcmV?d00001 diff --git a/bin/test/com/loki/lochat/gradient/util/GradientConstantsTest.class b/bin/test/com/loki/lochat/gradient/util/GradientConstantsTest.class new file mode 100644 index 0000000000000000000000000000000000000000..24a6ae4199b4fc001821477d4f4173fa690f6ffa GIT binary patch literal 871 zcmbVJ%We}f6g^HRoph3rNodmtg%(zYMZG{Eq#~rK0@P{*6{)g!CRXayW4ALNBtDB3 z6$?IqFX1Z?*J;!gDH|A#?!))`oO6AD{{H?0Kp#&+R2ZJ8Hsjh}C^G4}aD0-Bv69B| z(kac~&$AaP%M4E!JUMCf5N z#0JCOa*lpc$b6=wi7jk1G{x-X?Nuo>X{+s@ocM>VPf9h=))gM{q3?al*wJNr zLBnRnX|8Op+!uyuV9Pv}@05Sz?WH?B@aw}KXj!uv1G2Ov%0r4cdFD@^eM9{#1r%H{!-McH(y2_O2DT$Su&j#0=6AqC?ucSjYW4EWKNn-K8uq=PdPj9FPCPy-~eE RxSMzI>T^8WHL+Ik_zzzdu^#{c literal 0 HcmV?d00001 diff --git a/bin/test/com/loki/lochat/gradient/util/GradientUtilTest.class b/bin/test/com/loki/lochat/gradient/util/GradientUtilTest.class new file mode 100644 index 0000000000000000000000000000000000000000..bb70bcae49e5d18716b7c8cfc2aab0d9dc75326e GIT binary patch literal 5400 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 Ce1OXU literal 0 HcmV?d00001 diff --git a/bin/test/com/loki/lochat/managers/PMManagerTest.class b/bin/test/com/loki/lochat/managers/PMManagerTest.class new file mode 100644 index 0000000000000000000000000000000000000000..920d1a9aa09e097234fdab89f9caa3990992c17f GIT binary patch literal 1732 zcma)+=~5Fx6opTRKwuaX42u##A#6!l261Q8u!;txG*Bgfs3x>9IGKqv6RLbHtJq4b zd;lNH^7dpP3!(H+-`;Y*d+yxM?>|3&0Z8Lr2mywXoR!xM>x)i9?uffuo}2to*p9Zf zu~C|4h2w@0WN16)CtNeQd8obLKNdNcp{0=bZ!rvI{;f635Gok_o3I~|Ud9tFy1Jol zZ?7+x52qQL=5$kc7Z@56$sLB^l64>yG$5=(K`TQfqnl#0nBNz6mhT&aA)2vr+}Po^ zF4z8M&^^)}hQxp5CVf&0jgD})3k=;Kil(dQ#g6Xiq?a~L%jK?anIsp_SoWcIT%-(X zEa=G)H zNHMgN$jzS*CTdftT_<;>%D9RNOp?lBJ(c(kl^f0!Okp|%>YM)h#ZNnqu)PnY;xV2u zsNCCG`C8-#eY8=ZQPIG&rCcj_WV6NV=nSc`&gnOFD%m70dG2=V$GrduH=yht5JQSQ;hqVL3W9kBTzSAUt2#rnNrh+z_tECILizuytcKUGu9W;}-Iw?w_Eka76Sn4ObK3(Ac z8M;%K=sCkcDGZj?qX^Q?DCxA**nw_RDU)K?q~R*kh)>G;qjcXcj&t)Pl#T Xj^k9x2_!IC0Z#g0hIJ}Q0B`>SX;yR8 literal 0 HcmV?d00001