From af478adb3bf7a9fced041e02ca5e5571ea0e44d9 Mon Sep 17 00:00:00 2001 From: Colbster937 <96893162+colbychittenden@users.noreply.github.com> Date: Sun, 11 May 2025 14:40:36 -0500 Subject: [PATCH] fix some logic --- bin/main/bungee.yml | 7 + bin/main/config.yml | 69 +++++++ .../base/Base$LoggerAdapter.class | Bin 0 -> 323 bytes .../originblacklist/base/Base.class | Bin 0 -> 15422 bytes .../base/Command$CommandContext.class | Bin 0 -> 435 bytes .../originblacklist/base/Command.class | Bin 0 -> 1584 bytes .../base/ConfigManager$Blacklist.class | Bin 0 -> 702 bytes .../base/ConfigManager$Discord.class | Bin 0 -> 509 bytes .../base/ConfigManager$MOTD.class | Bin 0 -> 534 bytes .../base/ConfigManager$Messages.class | Bin 0 -> 660 bytes .../originblacklist/base/ConfigManager.class | Bin 0 -> 5387 bytes .../bukkit/CommandBukkit$1.class | Bin 0 -> 1619 bytes .../bukkit/CommandBukkit.class | Bin 0 -> 1226 bytes .../bukkit/OriginBlacklistBukkit$1.class | Bin 0 -> 1268 bytes .../bukkit/OriginBlacklistBukkit.class | Bin 0 -> 3937 bytes .../bungee/CommandBungee$1.class | Bin 0 -> 1575 bytes .../bungee/CommandBungee.class | Bin 0 -> 1206 bytes .../bungee/OriginBlacklistBungee$1.class | Bin 0 -> 1268 bytes .../bungee/OriginBlacklistBungee.class | Bin 0 -> 3908 bytes .../velocity/CommandVelocity$1.class | Bin 0 -> 2212 bytes .../velocity/CommandVelocity.class | Bin 0 -> 1508 bytes .../velocity/OriginBlacklistVelocity$1.class | Bin 0 -> 1339 bytes .../velocity/OriginBlacklistVelocity.class | Bin 0 -> 5285 bytes bin/main/plugin.yml | 9 + bin/main/server-blocked.png | Bin 0 -> 5380 bytes bin/main/velocity-plugin.json | 14 ++ build.gradle | 4 +- .../originblacklist/base/Base.java | 175 ++++++++++-------- .../originblacklist/base/ConfigManager.java | 56 ++++-- .../bukkit/OriginBlacklistBukkit.java | 4 +- .../bungee/OriginBlacklistBungee.java | 4 +- .../velocity/OriginBlacklistVelocity.java | 4 +- src/main/resources/config.yml | 2 +- 33 files changed, 244 insertions(+), 104 deletions(-) create mode 100644 bin/main/bungee.yml create mode 100644 bin/main/config.yml create mode 100644 bin/main/dev/colbster937/originblacklist/base/Base$LoggerAdapter.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/Base.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/Command$CommandContext.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/Command.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/ConfigManager$Blacklist.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/ConfigManager$Discord.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/ConfigManager$MOTD.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/ConfigManager$Messages.class create mode 100644 bin/main/dev/colbster937/originblacklist/base/ConfigManager.class create mode 100644 bin/main/dev/colbster937/originblacklist/bukkit/CommandBukkit$1.class create mode 100644 bin/main/dev/colbster937/originblacklist/bukkit/CommandBukkit.class create mode 100644 bin/main/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit$1.class create mode 100644 bin/main/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.class create mode 100644 bin/main/dev/colbster937/originblacklist/bungee/CommandBungee$1.class create mode 100644 bin/main/dev/colbster937/originblacklist/bungee/CommandBungee.class create mode 100644 bin/main/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee$1.class create mode 100644 bin/main/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.class create mode 100644 bin/main/dev/colbster937/originblacklist/velocity/CommandVelocity$1.class create mode 100644 bin/main/dev/colbster937/originblacklist/velocity/CommandVelocity.class create mode 100644 bin/main/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity$1.class create mode 100644 bin/main/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.class create mode 100644 bin/main/plugin.yml create mode 100644 bin/main/server-blocked.png create mode 100644 bin/main/velocity-plugin.json diff --git a/bin/main/bungee.yml b/bin/main/bungee.yml new file mode 100644 index 0000000..7916bf5 --- /dev/null +++ b/bin/main/bungee.yml @@ -0,0 +1,7 @@ +name: OriginBlacklist +version: ${version} +main: dev.colbster937.originblacklist.bungee.OriginBlacklistBungee +description: ${description} +author: Colbster937 +depends: + - EaglercraftXServer \ No newline at end of file diff --git a/bin/main/config.yml b/bin/main/config.yml new file mode 100644 index 0000000..6d34b2b --- /dev/null +++ b/bin/main/config.yml @@ -0,0 +1,69 @@ +messages: + # Valid Placeholders: + # - %blocked% - The player's origin/brand that was blocked + # - %blocktype% - Shows what the player was blocked for + # - %easyblocktype% - Shows what the player was blocked for in an eagler-kid readable form + # - %host% - The IP the player pinged + + kick: | + This %easyblocktype% is not allowed on the server! + ยป %blocked% ยซ + + Think this is a mistake? Join our discord: + discord.gg/changethisintheconfig + + motd: + enabled: true + text: | + This %easyblocktype% is not allowed! + ยป %blocked% ยซ + icon: "blacklisted.png" + +# Origin + Brand blacklist supports wildcards +# Everything should be lowercase +blacklist: + origins: + - "hack.example.com" + brands: + - "*dragonx*" + - "*piclient*" + missing_origin: false + blacklist_redirect: "" + +discord: + webhook: "" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# :> \ No newline at end of file diff --git a/bin/main/dev/colbster937/originblacklist/base/Base$LoggerAdapter.class b/bin/main/dev/colbster937/originblacklist/base/Base$LoggerAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..6e15c25da1def1fd7427accc9b0d1f8ccb9e4a31 GIT binary patch literal 323 zcma)%%}N775QMAqvzuKL&BZtHU@p$VLlE(xLQn|t5b!>`X@`l!jLeMj-8}dJK9txi zf_TfN3%a`KuRg!tKLA`|TB1joZ+NHL;F^>E2q6t56za_Oc+@I6bQ$s%Rg_OqxI%;_9*t7j-D{&7(*n~>+l*| zURcM3s{3-*#R%hj?>XK&of4-K6T)n7P{QONDq*zZlwj){+n&92OOhe)i*UBwkQh literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/base/Base.class b/bin/main/dev/colbster937/originblacklist/base/Base.class new file mode 100644 index 0000000000000000000000000000000000000000..3feeb613402505e08c68eb3430d14d9a8a138148 GIT binary patch literal 15422 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 b^L9Mn!1E4ri95wk@o6d+cgxXX8D98b_zI4T literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/base/Command$CommandContext.class b/bin/main/dev/colbster937/originblacklist/base/Command$CommandContext.class new file mode 100644 index 0000000000000000000000000000000000000000..f1621598f7797ab7b5cc89f64a53ad35a5f03205 GIT binary patch literal 435 zcmb7=%}N6?6ot?2-?U>}tJXJg(E)K5E<}n8DTsnpq2NMSndxOr%_NefMPJQ@58y+I zX)TBp7jANrd(X{1d>@~0?*Puwk5C~Dr@TmWqcZ2&o*tj1#>ztKOo{wSN$1l{I8H~V zEQOvPtaW6x=NBKLM(EANLZnLQBE89GoO?o4upf((3H?EG{nMX#D|Im>)Ga@&SHk{a zvzy!zI*-ELvMr@^(&#^Y_uq@oZQ+)VB7J5s_q zb`f?6hyQ^==>En*XpY(WOXGZlK&S@HKrJw;qY*A4FPbZDAztYg+QCspC!7^@u^luH OlYuIB8!hau>b)-t407uL literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/base/Command.class b/bin/main/dev/colbster937/originblacklist/base/Command.class new file mode 100644 index 0000000000000000000000000000000000000000..91c01d56719e4890e556aed1d94ec35094efc2be GIT binary patch literal 1584 zcmbtU-Ez}b5dMzsSc;>BMERxAAZP$vNvsxHQewx27-$1dV46;5_?gZe%cr)eBBhd? z!et+$c>ykZ#Z5|j!8OCf^Z}TbVb76=K+?{TVQioEu6FnAxBIPLzW(bufF-PI$S};c z#J1yxelt!)bot_f6GmR!3z|N6fA+mNahg09PCeY*LA|54`(uR%^hKVZwrORu*hw)<7QThNzF|J{Z zp>mY+4qRej0+Up6B)0s=4CBSdemB>X$P3!4jN=T&YCGbOYnC-{9h`|32|whms-rxp z>u&OhVdYM?{-m9D8B#Kd|rVC^9ToBhjke4ZBt=w1P0PI(%DLTW^D{B(%D*uq0J1H>G8{ z>d2r17;FPWI99+M${Ob1BWv1T0}eiC7)ZiK_^XKO#BPSMV(BnAndE|ji};d3CjcGE zYDMuC9hazIDNgD3wSmi6B$FWK_^Ms+j`cBD&JE3sG-hK zSP#3AD{gplX^q}alw~ZbD?vaV^m!Z$!aVf;I#G|;M4YS&x%Dwl({Qr%-T|G&f8^=Z zNOMRsl704{(4W$u3<`A0$I^9xP9t?7IY?T+957jAaGkuR--vAv@4?K#Hm8)_Pc)=% z9fD3l!}QrtID$`bLM1%;HsRltFh@4m-ovL14ck1uhtD$Dfnl5H)6}!icc9zPP zy|9bf)w#QCyZGV{3L`22?8VLBekWVF&pq7;Q^MZEA(2&0AOd|gePH6bH|6fdNn4|B&;42Ev;yZer!3u7YlnXRUzgzi!G)T`${S7L=eeVDO literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/base/ConfigManager$Blacklist.class b/bin/main/dev/colbster937/originblacklist/base/ConfigManager$Blacklist.class new file mode 100644 index 0000000000000000000000000000000000000000..4b26a813f5d57c691f8d938dbe077b739b56e359 GIT binary patch literal 702 zcmbtSO)o=16g|@qk1DFZ)kh>2Sa=Bw5!HnzLh{t2(uIx8dmYa(=E=-d;%8Y&Ec^gJ zO5DEEM6JZ;o_prboO|cYynnpD0XW2}hYUltEgtK#5@@kXkf4_n|NsJXADlIY=U|THMGk|60ts z8%e{|g8#Tk7c4ZBj)}yvOgsH>d%J5OL-AB=Vd{!oE3AhlhMm9nB=h@k$1vOw)}18Q zVGU#ieTqC`9zzs8Vi^omHZs5q1AG)k+RHG8@f68Bl!#9f^9dPYe(MG0XG$`drr2!& h)GNwh3Uu(gIx-g&%QLCGZDAu~Dbf1~VY1)`TlGg8XCAjbd{3!8u zD2PiXaB|PN_qOx(9q zm&t2Y^!c^s;e2+6K%)O*s08|wphKqk;%FgjJ#77>|1 ze2Ew@GC=j<4e=`pB_xD3l7Ty{5GF-j#VQ)a%4ianu!a`haq)Z|n^bJ8(AU2KxLAL+ literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/base/ConfigManager$MOTD.class b/bin/main/dev/colbster937/originblacklist/base/ConfigManager$MOTD.class new file mode 100644 index 0000000000000000000000000000000000000000..e7767e68768796244971babd14676047cbe088a6 GIT binary patch literal 534 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 NIX8{0BIVPl_#d%~$$kI; literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/bukkit/CommandBukkit$1.class b/bin/main/dev/colbster937/originblacklist/bukkit/CommandBukkit$1.class new file mode 100644 index 0000000000000000000000000000000000000000..40160d7bde5dde674de9a9dba5bd79ffcf39954b GIT binary patch literal 1619 zcmbVM+iuf95Ivil+r()@nwC41VjxK`ZfWR+UJyhekkW!w)Q9r4Nfy_wV^?0cf`8%x zBq~%M_y9f%G3&Yz(u7F0WY4ZWbLO0xS^xa?{Repy`~rh!zCRW2GnXq#~{*b zHL4>6J&ian>&W5?L%gVhhHJJfHV<2M;lJf|M=<1TUV}T^+_%*}dYMqAW>~tABx8>1 zqFEx?2zI@uhDQvQi;TC9MJzE4dTx}5;eE0HaQ(+)<$TS$ zs4VR;=&xK?_*I8XDWnE!|5RTIZ6}>!sPn83Yzi5?^khKArykOsL_C*MgAU~KYRp4R zLr#CJB;8pIk=HP-))7O3Y@s}Pj9hu@82R$_F>SwL>@R@e)2-!A-^dE$~Fd~E}2LZ_^eHd)DtQv!2gvWJ)_n?MB% XSf*8;m?!ZVt10#CIlb1%#8CMS`u>Vo literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/bukkit/CommandBukkit.class b/bin/main/dev/colbster937/originblacklist/bukkit/CommandBukkit.class new file mode 100644 index 0000000000000000000000000000000000000000..9674d6a46b0d0da828dc29f82791c2678b4aa790 GIT binary patch literal 1226 zcmbVL+iuf95IvhZapQ(Gq);f7TM3Y)6&9i@LI#A0Ktf8(Lr^5(Y3*#&ZJf2VcB+09 zFFX~2#0T(E6|;^bE-fjHZ`p7{^Rv zUml8Jlth}L@I)$^JY$%vH@XZ~E9wacb66*fK(O~fYr-*-4fua0+Sr`^}M4W63GcGZ1fyRpd zJPmn{EDaQ`MLM};8QFaE2+pVUxkPIry`0B6+Ly)-C}WXMG~+l=s|nsEKm%F%it4-O z`igag3!ibx`bc*t&&%rwAU;YX+Qqf$ykI_{Q)b*Q0o8y literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit$1.class b/bin/main/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit$1.class new file mode 100644 index 0000000000000000000000000000000000000000..1c8f2a4c8fee6f0f3d264334ba0d6c1c942e7c9e GIT binary patch literal 1268 zcmbu8TW=CU6vzJq3k&OL5iMe+7ZsI@c8jfP47KScHJV`iP{aGOjN2*OT{FAj=Q7cn z_}~ZdLmAHijR`jJz;5Pt=Hz#-^ZU=wUjW|Vm5BtyZdVL!H}pGEEY$1GZ97!blR?LK z+@3F^*zWXuJsI04L-E0t_+Th4H%u4|xpQaW*uE2Z_DSblxUq>e!}d(F6AAl(rgAIv zJfZfx&S!FhAswH|sJubWwPrG=c-JJ-jtpeH%dlUW4^?e57>8k3WWjKg!$ihH5(^wz zdeM3|UXaqcSm+D%Fv}ek^_4r{a-Cdvx2hu!1!cs|>}V zQ`hKlETTY3yNEoUqW^rSz`i&t(4;3EPqnV81!RRGC6o%4zN>Q7^j$g<1EDC})@j&R zu6QeT>X)wV*mZ4;Ds>dNei#w(gNV<SyYZiH^=3izt29I+bRiPVpx294}}!sLR)}LAyN3QfOc^t>5VA+oC0b;$Km>DewRQ literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.class b/bin/main/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.class new file mode 100644 index 0000000000000000000000000000000000000000..63b233707088dc358b3874a9236fe2d8ac9fd327 GIT binary patch literal 3937 zcmb_f>37sr6#u=pH0?A9RCW;tD9{B72(mbcwxvLEh9bqXiJE2})6g^-l1v4~6?esb zLEQJ{n|>$-&e3mv@Ne>X{Jmtx&d@2)gYB6l@8!PVefQqqz4zs>f3Exv;6D7Kp+;bP zR*o8$=L`m+^tWx?VtBrtv)w_*w1yo!2#vwQ@UR^kebIDRX}T+#)les}-1BoKsk~F* zV&kMaY8rca*&mHH)C(*s6O*IT4UIJ6r7L}b`t7!BhdTsnTiXT%>bkwGOrRD`Iy5v0 z%u3s?+*cSGl>R|;(2)YoY0om90n@kDxHwrC4%vagj`XeAloDw0+#XlqCO}O(ZpU1K z#+(fMr9Z0nJFm4ZU1m-^ood2-EYz?-V9unMIu>EEz-)rVKFOG_nNwIRE3t|mtPn~y zUw(Ox)!X~uu5RzRJwGmL94)RG;*g5EZ@$Dw&x0TT*t&R!Ckf^Qwg+Vt%eSPHB+g% zW{HlwuudRBtpm~zB8_vYaguS3SdY6kY!GO>AwkSQ8eP2T*oaLesF}A3u6Q>IHbL0U zI<{adnPUw}YdDfzQ^mcL7q=Z%9J^OX3ftrGq`h3kizOu!3Zd;74rdu4BYvA|W(M!j zaX%gqSTJG^%WluL%aTBWkUjeIG_~u3v{;LTCr#wP~m@A#{dp7et`^2 z@!NhA$R(Dw#EUw!W}a0zr9hA1n1-VQ-L4D`$2`3uTgXa7PLu#+kQG|GStE#wl0k-+ zs&IwJ=wTg?;5f-?N6fGozfO{CI>5cxLNZU+<1rnN!;EMVcIIt?uGU*bjooSK$f~lh z`_l2uEE#>m&MAc_bmY{FI@K;3K#jAmX;&(nhIKd?i7P_4H!@o|iaS$=()Q=QfCQC*g*w^o2u_TE%Eer3UL8)(2;fw^ghKxUJ%RmoUJ zm5gU}JgbTVgK>gRs*m5W089-jpcRu{U}k?v0%y#8v3YBr%Pg?jF8Zg(qT&H1wkzgo z)FUIb$Om)~&mYBVG++m+@^rec7qSSkTC#hVZ@CDhoVSOBV9Slj{+f>0@djJ?P&7$W zy3&gKTV{G2jujMBs@hg(L=pn~r*CNpOzqn-rle_Kr3ce-P0fhXmdemK~+8U$Z<#}Nc`er^O!yzvl zB=8A7)o@XuWuo!f?x;5`i-)SXHSaPlX7m}=vp*BKP+pCS(lKC6xquzP8!qHilTQp~ zGZhODp2^E9;>XJ5`vy;vvOMHX+G)4xIQ@1gQ?u%Ep#fhCEUBpYNs+XJq%ThuY+q)V zvo!aT{(iS(27wGTd?T>shDEY^w__!!=zbc$7g#lEht<5J;YWd`*B2$_V^^}Y?vp{7 zk?JcVz;ZTdzcYAkJwCOmX7Wi$Ey>LPDGRI7!@PZH$N6C>Z3S!a-K^C-oo2AfPLp$*o}nUG$rf@1g*n| u+*1uc!pFQTQhd(e7x;>!#WekER=IEM8+nF||GvWy_=#V4KXa&v)b}qO|AsXH literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/bungee/CommandBungee$1.class b/bin/main/dev/colbster937/originblacklist/bungee/CommandBungee$1.class new file mode 100644 index 0000000000000000000000000000000000000000..b6f8737c1e9be29fa5414548b2e0a8bfe85d92ff GIT binary patch literal 1575 zcmbW1TTc@~6vzM5+d{iQDFyErq-t9(3sP=!G1_P}DQJS>K_AStoh*ynU9z(!_?>*v zL}Kv458#I~o>>;GrAh zEg4WtxMxa+vG@md3Ze0w5VN{2P0W})a zF^HrZjq6B3Pa=vdI)-qSA(~fTncw_Ps1d`WY0S2xP{vcaZeoDpD48aWn5uT0Uzjih#W&o z6?t1o$xYfn+K{FSvqSZU_PKl`yoM#E3@#OoYF%DdG6F~S5h}^3xD6OYgl3^_0!=xRJydX>=7ZRS3cZAlY6k+-l_akT*F&ZEy&fG!-EkGWH zV0-GNF0h#hKDX%^>jIk#VFukppCss7o2tFwX6OX zPema306q#ac3ec$NR;?tcV;|$_RP%LpTEBT0Pqxd4CEN@d*Z-$1AnL^5pLgmWCx)f zNj3Dj`^lF&vWKx631Rnw@t7;`Md}$SFsvyN*<$>#*fs`aH3JMnlZ!nb_r3x;|>aJj$BLz(zlun_G@&G4{4PrDojLmUb>jtG9c z-JjLCtiJ=HJP|rG$r`vs4CW!wx@)3|%SpekFa+)Ss+gCziEFrF;5tM1pX9mzBQ*;v zSS1DRk?fMWJU;{NzmB)Ej`ji-iNnZAhF#QYdl}ZxPz$M*ha(z#W5zTX%s~)`u6QX^ z&7621TZtSQtXE2ju;+8Fg*MP(aQ>(MsR9_PCo5to?+6{e7KwH>RzZ)99yX98YXL=C z4e}fm$O0;zdZ}*azr#90^>dnbj#iV>lhr~Qb+W8UG8#Bf9>WD(%z)kyXmUaI8=CJr zo82QUf5Fvhq#7z%PLWn7*%=a@!y498^eS4oN%!V)i|}%|jW+FdvNlL6o5e*E>*VXw Ime6nh28tLAr$R?*jTwN#UIx`tlylWF_JCH%L!?0JI4^{6n7za^L$Z-!9hP*G5QJEMjwfe|lKM6uRq~ei9dvx2ju!2<+_ZiAV zr>@Z9SVW1Eb{_jWMgRFufqik5)TGB8PqeP71!RRGBb17izN>RI^j$U<1EDC})=AV? zo_G`J)GuAxv1{5GRq9ZBVH6Yay+}@@9*3>Vn2Y409953LlTxUI(1~Lan|Q%cpP9wW zex?qY=;+*$h?BQboM4suCru**Rw(E;qPJ+!$ipJ(HQH?=ML%FQn%}`2KXBtKol>|- zbCz^K1u4?ZhkFaRaGOrl1t^UPyJG@xd;`D0o#q9WCmEF?qcpU{#|+JUfQLk3cr=Yx xoun<#pgo;Nt4-2YrqT>FDc%&G;W@1ab@>|BX;&m!1}$u4^&1_1o3x}*{tG@|DG&ev literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.class b/bin/main/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.class new file mode 100644 index 0000000000000000000000000000000000000000..169b89e6312cf1ceb04124387499fb705bbc48c0 GIT binary patch literal 3908 zcmb_fX;;)%7=A7wfia3w+^vp+2&lxh)(*7=#EQ-c3dOC~hMCI{8Im!{Q0%_heP69z z|3dp=gnlolS}~_S!&_TBzg1R=iQ$BzIXoo`_69w9>>obDg-(*a>7VE zxna+j?vVqB4ac>zmOY#^(_=Zy^Nrzxot4t)3&dR|aaSPKP$jU=npO$ss$S7QA^U0w52Oh-C^05e^j8drFBT4s@uuP7%H(`hlUz~x};^x(}nS2 z=?l(eRw?`-aVgU_vnnmS?_+0Hnj`H*4K~x+ z9y6PhZrU|R{PUqFF>FCx!&ZToa*mY4(y8Uwy-+1W(- zB+LS28YNUDz!Uqx~W2 zdV%c*+MW|pE!weHgCWqmAcag%8eRO-u@C!6Ve+5gikWj@V}w1Z;}9MpjnbnsJr-#0 zER)l@i(4-$7Cx%u2p$V-l60~GJvNs@DEL;+$Wh9w7~$JQJ$HMD&JE99wQk%TliiM; zHvMy!Kgv7LH*KF=rMZj?W%3fkljzdWDX=~Wu8ct)-8jZHc#`br23=DQc}T-?fsNA% zI$N-PYh3nBre(m18l0ewUOVlK=S|<@7L0fH_r?jSsun{JPO6r0tOiM%NLil8kmDig zBfe`m%@(j=`R3_wP5WXesOdO&hU(B!U!RpRW?08XTp~HG zfEj7luQS@4iv{kz7m}N`9hY@Hiz@*w{LZ{3(A5%j&i{@Yrqk3htOkSb%A8|n$mkI( zs|;pzNcEyh4HOMofrE>rLbo$MZrYh}#Kkaz<*IXD)iH(~Cy*<%YFxRIn!w30l6gm9 zqU@N6I%I?t)N%`K9S-sw10_S#)A7`US}H-&R1Mgo8j{SJ%*4Z3g>3&?5Vb0O(j;p%W-_qcg=iC`lC+9i{TS| zrr}dEX?kv1_JlJgqk~X5S&y4(-*K<2k^8y8&6(pb(hdPb%6V+)&R8Lzm^<)iNMF;*uOwW^^hMPPBF4#!R4=c8VS;I@icLF=+cvvnw8h#MiGQTP*AEr`Z`Dy9-DXD%Y zc-Y2MQzbvkco3@Ml|Ll-UCSqfSHbJDw%dsP!kY@{{H_j!%dvv@dZ>VvsN)k^QCciw z1goU%Mq3f9i&#^?sfdS@yZ%7?t|A(X*qPe>EA~v`z%4XWl(ITvpgx7I}TYs$xPdQ&1IDa&7 zw2scN!fO6+Ks_4y!(~4j(1CS0j!ihjoSegUj`~Ji=8@b%GhXD0`Yp5uLC3?uqM%n` z5)*iy!Ed1cB#|m`o%U)`@fSKYRMzs<3k0aZOBAc@y&Sw&zcK}-Oz^HLyfU5OSRmZP z1hxnE)`m)vJ*wjkyve149^F^~_U(IN_Y?NOePQ1xXca!7PZjtOAMvWl@C83#;%h!_ cWa!_}t#7MqdGrhaZsB|U$l!nCqasl1A67Mck^lez literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/velocity/CommandVelocity$1.class b/bin/main/dev/colbster937/originblacklist/velocity/CommandVelocity$1.class new file mode 100644 index 0000000000000000000000000000000000000000..99769cf19e0d7605b526bf19f4b538d3d4ccd947 GIT binary patch literal 2212 zcmbtVT~`}L7=9)R*+7;yrU4ZdTa7je(CwG@BS5WbE7(A*R4(*tvY8XM-H)7|Ni6;# zue{K6M8yk_*Z!y;-`NZylwuTf&hET3nfH00_jCVx@%tYDR`8XD6vOSd=sRxYx1sZ!QeFAC>Z+EjlLDJ zXgj>?k?)CH2V}Mq1yVnw)xEGExmzT$S5EKK zSOUhh@nP)s6ZuxR88VHiEhfS6nhgs%EuFJ5i7743*vP}4LK?5zn8q6n>55i5+w?-Q z*$Y}Ce!^Qm1-{s%0Q%cJ_VnHyW^{rXmQNju@)e4y)e&lw2V|sFsWuPma7)Er*r{uF z=WSfTJVQ=JgHwiySakhea-niurMjKR2e@eALx#(tP|mYmY6pk6`yy1mSU9>qoq$pq z2q}3-I2$By3}hP>R2lO6Z*#fpU}F(W1lJZ)Q1E>3J96~qDCt4J)&Ic& z)k8N5i910$poXQMS{hfyM~cYCRa_$$QiScHQx_{I`*dhh*F!px9bE&*lEW~)!{uWU z2cDEkd%ZFrUu)jCYpJ;&;|^8POr`qGaRYg*;u8yZC}!gvKB*0C+{LF1 zlRWP90tzD8I$CHZ0T%92Z@hv7Q69A715dX?$wc;Gf?m>5p`N)Px_%_7WH*G`iP{#{ ziS%g)pN)rTQg4Xo!tE)tx>EUnbHH8?LlHN8E~Stb9{r07IucL{!r>&e@Fm0IINwG; z4m5~O*oL2n+@_FfEs_f7X%waDnLxTw&{GO16!nZsR+>=sp_`y*8fWO%S&~+fLWb5- zZD9|E+TtFHwWU4U{)*Y3=sblt>7Aw9T5FEpb|RPX7T%^E!#kKaSXXJ)_j0wLQTzq( z{z&queqlsEH`IR*?;HJx#63ki=d}KBC@<`zmcl+RrEo}PD!DR)B4!h~*@23IBV}C2 zM+p(?5d(aO?r7k=1}4;-Dg5vfx499p{17aU+Xk$TWdo)`lV}iFX&);Lf1>fStMenS sP8+xk?k7ec;4@k?Si|SoAZd==Ud1LJXD2B+Uto(?Z9xB?(38U2-w_E`sQ>@~ literal 0 HcmV?d00001 diff --git a/bin/main/dev/colbster937/originblacklist/velocity/CommandVelocity.class b/bin/main/dev/colbster937/originblacklist/velocity/CommandVelocity.class new file mode 100644 index 0000000000000000000000000000000000000000..4ed656f1350cdcbb49f6aac70d02d3e7d503d10c GIT binary patch literal 1508 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 literal 0 HcmV?d00001 diff --git a/bin/main/plugin.yml b/bin/main/plugin.yml new file mode 100644 index 0000000..e583b2c --- /dev/null +++ b/bin/main/plugin.yml @@ -0,0 +1,9 @@ +name: OriginBlacklist +version: ${version} +main: dev.colbster937.originblacklist.bukkit.OriginBlacklistBukkit +description: ${description} +author: Colbster937 +depend: + - EaglercraftXServer +commands: + originblacklist: \ No newline at end of file diff --git a/bin/main/server-blocked.png b/bin/main/server-blocked.png new file mode 100644 index 0000000000000000000000000000000000000000..001ee13eee4b5db17c1187baec2d0bf2cb5accdc GIT binary patch literal 5380 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 b+qQX(G~NGj+s;uJ02JbQc(e1}RwVofS$Hu& literal 0 HcmV?d00001 diff --git a/bin/main/velocity-plugin.json b/bin/main/velocity-plugin.json new file mode 100644 index 0000000..bf1052d --- /dev/null +++ b/bin/main/velocity-plugin.json @@ -0,0 +1,14 @@ +{ + "id": "originblacklist", + "name": "OriginBlacklist", + "version": "${version}", + "description": "${description}", + "main": "dev.colbster937.originblacklist.velocity.OriginBlacklistVelocity", + "authors": ["Colbster937"], + "dependencies": [ + { + "id": "eaglerxserver", + "optional": false + } + ] +} diff --git a/build.gradle b/build.gradle index 5df1ba4..308e6b2 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { group = 'dev.colbster937' -version = '1.0.4' +version = '1.0.5' description = 'A reimplementation of OriginBlacklist for EaglerXServer' def targetJavaVersion = 17 @@ -64,7 +64,7 @@ java { } processResources { - filesMatching(['plugin.yml', 'bungee.yml', 'velocity-plugin.json']) { + filesMatching(['plugin.yml', 'bungee.yml', 'velocity-plugin.json', 'Base.java']) { expand( version: project.version, description: project.description diff --git a/src/main/java/dev/colbster937/originblacklist/base/Base.java b/src/main/java/dev/colbster937/originblacklist/base/Base.java index a423c34..892bfc2 100644 --- a/src/main/java/dev/colbster937/originblacklist/base/Base.java +++ b/src/main/java/dev/colbster937/originblacklist/base/Base.java @@ -5,20 +5,21 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.lax1dude.eaglercraft.backend.server.api.*; import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftClientBrandEvent; +import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent; import net.lax1dude.eaglercraft.backend.server.api.query.IMOTDConnection; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.HttpURLConnection; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; +import java.io.*; +import java.net.HttpURLConnection; import java.net.URL; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; public class Base { @@ -42,46 +43,51 @@ public class Base { for (int i = 0; i < Math.max(c.length, r.length); i++) { int c1 = i < c.length ? Integer.parseInt(c[i]) : 0; int r1 = i < r.length ? Integer.parseInt(r[i]) : 0; - if (c1 < r1) return false; - if (c1 > r1) return true; + if (c1 < r1) + return false; + if (c1 > r1) + return true; } return true; - } + } public static LoggerAdapter getLogger() { - if (adapter == null) throw new IllegalStateException("Logger not initialized!"); + if (adapter == null) + throw new IllegalStateException("Logger not initialized!"); return adapter; } public interface LoggerAdapter { void info(String msg); + void warn(String msg); + void error(String msg); } - public static void handleConnection(IEaglercraftClientBrandEvent e) { - IEaglerPendingConnection conn = e.getPendingConnection(); + public static void handleConnection(IEaglercraftLoginEvent e) { + IEaglerLoginConnection conn = e.getLoginConnection(); String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN); String brand = conn.getEaglerBrandString(); - if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) { + + if (origin != null && !origin.equals("null") && !config.blacklist.missing_origin) { for (String origin1 : config.blacklist.origins) { if (matches(origin, origin1)) { - setKickMessage(e, kick("origin", "website", origin, conn.getWebSocketHost())); + setKick(e, kick("origin", "website", origin, conn.getWebSocketHost())); webhook(conn, origin, brand, "origin"); return; } } - } else { - if (origin != "null" || origin != null) { - setKickMessage(e, kick("origin", "website", origin, conn.getWebSocketHost())); - webhook(conn, "null", brand, "origin"); - return; - } + } else if (origin != null && !origin.equals("null")) { + setKick(e, kick("origin", "website", origin, conn.getWebSocketHost())); + webhook(conn, "null", brand, "origin"); + return; } - if (brand != "null" && brand != null) { + + if (brand != null && !brand.equals("null")) { for (String brand1 : config.blacklist.brands) { if (matches(brand, brand1)) { - setKickMessage(e, kick("brand", "client", brand, conn.getWebSocketHost())); + setKick(e, kick("brand", "client", brand, conn.getWebSocketHost())); webhook(conn, origin, brand, "brand"); return; } @@ -89,9 +95,15 @@ public class Base { } } - public static void setKickMessage(IEaglercraftClientBrandEvent e, Component msg) { + public static void setKick(IEaglercraftLoginEvent e, Component msg) { try { - e.setKickMessage(msg); + String redir = config.blacklist.blacklist_redirect; + if (redir.equals("") || redir.equals("null")) { + e.setKickMessage(msg); + } else { + e.setKickRedirect(redir); + } + getLogger().info("Kicked " + e.getProfileUsername()); } catch (Throwable ignored) { String msg1 = LegacyComponentSerializer.legacySection().serialize(msg); e.setKickMessage(msg1); @@ -104,26 +116,23 @@ public class Base { String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN); List m = List.of(config.messages.motd.text.split("\n")).stream() .map(line -> line - .replaceAll("%blocktype%", "origin") - .replaceAll("%easyblocktype%", "website") - .replaceAll("%blocked%", origin) - .replaceAll("%host%", conn.getWebSocketHost())) + .replaceAll("%blocktype%", "origin") + .replaceAll("%easyblocktype%", "website") + .replaceAll("%blocked%", origin) + .replaceAll("%host%", conn.getWebSocketHost())) .map(line -> LegacyComponentSerializer.legacySection().serialize( - MiniMessage.miniMessage().deserialize( - line - ) - )).collect(Collectors.toList()); - if ((origin != "null" || origin != null) && !config.blacklist.missing_origin) { + MiniMessage.miniMessage().deserialize(line))) + .collect(Collectors.toList()); + + if (origin != null && !origin.equals("null") && !config.blacklist.missing_origin) { for (String origin1 : config.blacklist.origins) { if (matches(origin, origin1)) { setMOTD(conn, m); return; } } - } else { - if (origin != "null" || origin != null) { - setMOTD(conn, m); - } + } else if (origin != null && !origin.equals("null")) { + setMOTD(conn, m); } } } @@ -133,13 +142,15 @@ public class Base { conn.setPlayerTotal(0); conn.setPlayerMax(0); conn.setPlayerList(List.of()); - if (config.messages.motd.icon != null && !config.messages.motd.icon.isEmpty()) + + if (config.messages.motd.icon != null && !config.messages.motd.icon.isEmpty()) { try { BufferedImage img = ImageIO.read(new File(config.messages.motd.icon)); if (img.getWidth() != 64 || img.getHeight() != 64) { getLogger().warn("Icon must be 64x64"); return; } + byte[] bytes = new byte[64 * 64 * 4]; for (int y = 0; y < 64; y++) { for (int x = 0; x < 64; x++) { @@ -155,6 +166,7 @@ public class Base { } catch (IOException ex) { getLogger().error(ex.toString()); } + } } public static boolean matches(String text1, String text2) { @@ -163,55 +175,58 @@ public class Base { public static Component kick(String type, String easytype, String value, String host) { return MiniMessage.miniMessage().deserialize( - config.messages.kick - .replaceAll("%blocktype%", type) - .replaceAll("%easyblocktype%", easytype) - .replaceAll("%blocked%", value) - .replaceAll("%host%", host) - ); + config.messages.kick + .replaceAll("%blocktype%", type) + .replaceAll("%easyblocktype%", easytype) + .replaceAll("%blocked%", value) + .replaceAll("%host%", host)); } - public static void webhook(IEaglerPendingConnection plr, String origin, String brand, String type) { + public static void webhook(IEaglerLoginConnection plr, String origin, String brand, String type) { String webhook = config.discord.webhook; - if (webhook == null || webhook.isBlank()) return; + if (webhook == null || webhook.isBlank()) + return; - String addr = plr.getPlayerAddress() != null ? plr.getPlayerAddress().toString().substring(1) : "undefined"; - String protocol = plr.isEaglerXRewindPlayer() - ? (String.valueOf(plr.getRewindProtocolVersion()) != null ? String.valueOf(plr.getRewindProtocolVersion()) : "undefined") - : (String.valueOf(plr.getMinecraftProtocol()) != null ? String.valueOf(plr.getMinecraftProtocol()) : "undefined"); - String rewind = plr.isEaglerXRewindPlayer() ? "Yes" : "No"; - String host = plr.getWebSocketHost(); - String userAgent = plr.getWebSocketHeader(EnumWebSocketHeader.HEADER_USER_AGENT); - if (userAgent == null || userAgent.isEmpty()) userAgent = "undefined"; + CompletableFuture.runAsync(() -> { + String addr = (plr.getPlayerAddress() != null ? plr.getPlayerAddress().toString().substring(1) : "undefined:undefined").split(":")[0]; + int protocol = !plr.isEaglerXRewindPlayer() ? plr.getMinecraftProtocol() : plr.getRewindProtocolVersion(); + String host = plr.getWebSocketHost(); + String userAgent = plr.getWebSocketHeader(EnumWebSocketHeader.HEADER_USER_AGENT); + Boolean rewind = plr.isEaglerXRewindPlayer(); + if (userAgent == null || userAgent.isEmpty()) + userAgent = "undefined"; - String payload = String.format(""" - { - "content": "Blocked a blacklisted %s from joining", - "embeds": [ - { - "title": "Player Information", - "description": "๐ŸŽฎ **Name:** %s\\n๐Ÿ  **Address:** %s\\n๐ŸŒ„ **PVN:** %s\\n๐ŸŒ **Origin:** %s\\n๐Ÿ”‹ **Brand:** %s\\n๐Ÿช‘ **Host:** %s\\n๐ŸงŠ **User Agent:** %s\\nโช **Rewind:** %s" + String payload = String.format( + """ + { + "content": "Blocked a blacklisted %s from joining", + "embeds": [ + { + "title": "Player Information", + "description": "๐ŸŽฎ **Name:** %s\\n๐Ÿ  **IP:** %s\\n๐ŸŒ„ **PVN:** %s\\n๐ŸŒ **Origin:** %s\\n๐Ÿ”‹ **Brand:** %s\\n๐Ÿช‘ **Host:** %s\\n๐ŸงŠ **User Agent:** %s\\nโช **Rewind:** %s" + } + ] + } + """, + type, plr.getUsername(), addr, protocol, origin, brand, plr.isWebSocketSecure() ? "wss://" : "ws://" + host, userAgent, rewind ? "Yes" : "No"); + + try { + HttpURLConnection conn = (HttpURLConnection) new URL(webhook).openConnection(); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/json"); + conn.setDoOutput(true); + conn.setConnectTimeout(5000); + conn.setReadTimeout(5000); + + try (OutputStream os = conn.getOutputStream()) { + os.write(payload.getBytes()); + } + + conn.getInputStream().close(); + } catch (Exception e) { + getLogger().warn("Failed to send webhook: " + e); } - ] - } - """, type, plr.getAuthUsername(), addr, protocol, origin, brand, host, userAgent, rewind); - - try { - HttpURLConnection conn = (HttpURLConnection) new URL(webhook).openConnection(); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "application/json"); - conn.setDoOutput(true); - conn.setConnectTimeout(5000); - conn.setReadTimeout(5000); - - try (OutputStream os = conn.getOutputStream()) { - os.write(payload.getBytes()); - } - - conn.getInputStream().close(); - } catch (Exception e) { - getLogger().warn("Failed to send webhook: " + e); - } + }); } public static void init() { diff --git a/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java b/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java index 2310ba4..f0a6268 100644 --- a/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java +++ b/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java @@ -3,47 +3,73 @@ package dev.colbster937.originblacklist.base; import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.constructor.Constructor; -import java.io.File; -import java.io.InputStream; -import java.io.FileInputStream; -import java.io.IOException; +import org.yaml.snakeyaml.DumperOptions; +import java.io.*; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.List; +import java.util.Map; public class ConfigManager { public Messages messages = new Messages(); - public List subscriptions; + public List subscriptions = List.of(); public Blacklist blacklist = new Blacklist(); public Discord discord = new Discord(); public static ConfigManager loadConfig(Base.LoggerAdapter logger) { - File conf = new File("plugins/originblacklist/config.yml"); + File f = new File("plugins/originblacklist/config.yml"); try { - if (!conf.exists()) { - conf.getParentFile().mkdirs(); + if (!f.exists()) { + f.getParentFile().mkdirs(); try (InputStream in = ConfigManager.class.getResourceAsStream("/config.yml")) { - if (in != null) { - Files.copy(in, conf.toPath(), StandardCopyOption.REPLACE_EXISTING); - } + if (in != null) Files.copy(in, f.toPath(), StandardCopyOption.REPLACE_EXISTING); } } - LoaderOptions options = new LoaderOptions(); - Constructor constructor = new Constructor(ConfigManager.class, options); - Yaml yaml = new Yaml(constructor); - return yaml.load(new FileInputStream(conf)); + Yaml y = new Yaml(new Constructor(ConfigManager.class, new LoaderOptions())); + ConfigManager l; + try (InputStream in = new FileInputStream(f)) { l = y.load(in); } + + if (l == null) l = new ConfigManager(); + + Yaml raw = new Yaml(); + Map u = raw.load(new FileInputStream(f)); + Map d = raw.load(ConfigManager.class.getResourceAsStream("/config.yml")); + if (mergeConfig(u, d)) saveConfig(u, f); + + return l; } catch (IOException e) { return new ConfigManager(); } } + @SuppressWarnings("unchecked") + private static boolean mergeConfig(Map u, Map d) { + boolean c = false; + for (String k : d.keySet()) { + if (!u.containsKey(k)) { + u.put(k, d.get(k)); + c = true; + } else if (u.get(k) instanceof Map && d.get(k) instanceof Map) + c |= mergeConfig((Map) u.get(k), (Map) d.get(k)); + } + return c; + } + + private static void saveConfig(Map m, File f) throws IOException { + DumperOptions o = new DumperOptions(); + o.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + o.setPrettyFlow(true); + new Yaml(o).dump(m, new FileWriter(f)); + } + public static class Blacklist { public List origins; public List brands; public List players; public boolean missing_origin; + public String blacklist_redirect; } public static class Discord { diff --git a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java index 5354538..4735e1a 100644 --- a/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java +++ b/src/main/java/dev/colbster937/originblacklist/bukkit/OriginBlacklistBukkit.java @@ -2,7 +2,7 @@ package dev.colbster937.originblacklist.bukkit; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.bukkit.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftClientBrandEvent; +import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.bukkit.event.EaglercraftMOTDEvent; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -42,7 +42,7 @@ public class OriginBlacklistBukkit extends JavaPlugin implements Listener { } @EventHandler - public void onLogin(EaglercraftClientBrandEvent event) { + public void onLogin(EaglercraftLoginEvent event) { Base.handleConnection(event); } diff --git a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java index 5ed6065..aea4236 100644 --- a/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java +++ b/src/main/java/dev/colbster937/originblacklist/bungee/OriginBlacklistBungee.java @@ -2,7 +2,7 @@ package dev.colbster937.originblacklist.bungee; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.bungee.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftClientBrandEvent; +import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.bungee.event.EaglercraftMOTDEvent; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.api.plugin.Listener; @@ -41,7 +41,7 @@ public class OriginBlacklistBungee extends Plugin implements Listener { } @EventHandler - public void onLogin(EaglercraftClientBrandEvent event) { + public void onLogin(EaglercraftLoginEvent event) { Base.handleConnection(event); } diff --git a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java index 2019582..ed6f89a 100644 --- a/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java +++ b/src/main/java/dev/colbster937/originblacklist/velocity/OriginBlacklistVelocity.java @@ -6,7 +6,7 @@ import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.proxy.ProxyServer; import dev.colbster937.originblacklist.base.Base; import net.lax1dude.eaglercraft.backend.server.api.velocity.EaglerXServerAPI; -import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftClientBrandEvent; +import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.velocity.event.EaglercraftMOTDEvent; import org.slf4j.Logger; @@ -44,7 +44,7 @@ public class OriginBlacklistVelocity { } @Subscribe - public void onLogin(EaglercraftClientBrandEvent event) { + public void onLogin(EaglercraftLoginEvent event) { Base.handleConnection(event); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index e7e8b09..6d34b2b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -28,6 +28,7 @@ blacklist: - "*dragonx*" - "*piclient*" missing_origin: false + blacklist_redirect: "" discord: webhook: "" @@ -63,7 +64,6 @@ discord: - # :> \ No newline at end of file