From 5c2064cf5423612151b005b7d3602c75da846e45 Mon Sep 17 00:00:00 2001 From: lax1dude Date: Sun, 19 May 2024 12:32:34 -0700 Subject: [PATCH] final touches --- .gitignore | 3 + EaglerMOTD.jar | Bin 0 -> 73963 bytes LICENSE | 12 + README.md | 254 ++++++++++++++++++ .../EaglerMOTDConnectionUpdater.java | 1 - .../bungee/EaglerMOTDConnectionBungee.java | 3 +- 6 files changed, 270 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 EaglerMOTD.jar create mode 100644 LICENSE create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9a6133b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/.settings/ +/bin/ +.classpath \ No newline at end of file diff --git a/EaglerMOTD.jar b/EaglerMOTD.jar new file mode 100644 index 0000000000000000000000000000000000000000..2416b5bc159f5ce31b31e80899030aa51765e2d7 GIT binary patch literal 73963 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ℑ6sHxxl+(vZ|~#{IQCQ^t!va zo==cy>NO8#ok*Ibs1$CmtnkL0Z!kGIf!3Ps?QJ$UH%ejUcmLuqh~ki1wZ?0&y+*a> zGZ^-no1J5QeIq|fsnu$-y}gA}3g7qG+S+7tYMP~m#e(Fxf+Gz%-QC+E3_>c^3h%u0 z4hstl+`hHK+}s>N6fo!wOr3L#zR~BSEVX1s}r_qf=~`h zjCB0cW=Mo>hox1_BM&{u&dvs%PQb##B-QFzE;h=}=u1=06-$uq9|M6okYs7;2v@FN zVSUZ)E{{I?1b^}3cX;%%C+YWg3-*@@t-1DOIrdM>t-$2w_}+>%01 zh>`t8`FN5fCHtTG!4L7>7hhs#YMN80PUT9q%t;6#=yv%hfl3aFarSmQeD}NG z;qgZw<>i-O2H=rL-nY+Ln)c;VI-InQ1>o4iQci*7A&(W%WU0=g7;6-xm)nk4_EjB@ zRJ8}o>V=(e&s);&g|Gb{N-6HW=WgD3(>S6JKl3c_UcSV{#5k9)Ug2GfSkffP!`V?0 zSBsTfw~-G&dH`K2rD(LqK_{S7&YeBWi!Z&z+}xbyihN>{kpf8D4mL`uGHNch&=>GM zj!L>y&{Bra!j||ZT)6uL?|fi;K+8&7!pC z%9Sg;`s%A(dhb2f*4E51PNm#_QQfEWIN5PsQtJp!_g{q;30f#X<&(8IE{%HC%HcD| zkRpWO*wLdUO@+8)NE7dC1fma&T@gW)CBc&ArDbMkXL_$o+c_ck+G{VB>=z;}*$?FQ`-r?kGOO`dS`h?8s@2*74lEOco;!cP z4R1$_f2`)9qU2ER$OoT#3T?x!v!_oVYW|0xeTI##jS&gFvp4GZpV_Zeo(kXG+$!lZ zjN|dqIzEs#%pMu{lS|qc7R=$Gqobpw=?RdLH!O3Tae#SSZLPU}{W{mL zUoSP0a6OF{f!!TbKJ(eX#$WZ(wFNJ=T8-m{^3$co#k{mM2m-ELxyrkjF0r<@Myu8= z31jyA_iXo1Z3m{2C@e!b3N2C`+q~2$5>r}M0F$W0o&Jp*HxAfe+C^*8U)t{M9*vrW z!pY+&O0T(LOQN?nSGj!o3h!RJWX9Sa&RVp;lm)Q&+^Z5VYHEb6%WGN#dBL<#|5wiRU?Tbb)5G!MVFma`Bz3w%?y^hmEoS zu!gDCYL&ro$nw$=-n)F6#~*vt964@FnrCNcsZ^`%?e3zqIXvRMtC!i{-e%?Y3MWsT zV0Cq!H{ZLSBfum{N(Y}(uwUym=Ms`M$(==~yGuWasrs(bVhG1ZNhTi1#&fLIvV?>w zHD6qwrad;sz4xDDFc{+bf;1^K>+oDOg7uBV?XTBs1Yy9rv*-BFzxP!>_hX;KbsTnf zcTI`1>$0@8#NO_1z5z^4PH_3%OS%0*NdDxzui-cjah&EmZbkyv&c{DLHl0aACE2jcUawjAD)- zKX#zt$#q?#C}eeYl_W`c<<*zD@1A?Pb?b&9O&y8Wg4?&QGchq`=dS7IwJhC?>7d>ol58YRzh?#(ZvOwv?>^c*(}hnf*Z!+@T84ocSOM;oqI?_vFE5DnjW| zgAA>Z!ozb%p~FHU$DP@~AHIGs`)k#a0&;44nnxdfl+&k9<=K_AAXhJngfjcHbmD$B zXfbPqNEx-EwYFOOr>B++8jSLL-~ayiQ>)cDQ&4gWtr;DH1|R%^f(D?T=HZXY0JQE{ z7?jDqj~9@@)Z`?+ZkKQU`Jbcma_*Q*HvL(&F`HXb6b=SQTAGQ?n`QRm@@A0o^rq9G+sPyB;WJqU&@EibdQ zuvkjb2-|sBWSRw=5%7JFR;$JA>+SJIq$XC2_x8`pCOh}Jy&10OI@eQt&mOJ-rb{PHX4cmzu`2dGs<7!Iu(v&=hW z{R(olVjZBi5LF9>U-dYD_XQL0EsqY?yyt;?Sw3-umDQC4lYNwlNpf9?5MIfC#}Os_ zs}*;j24gf|u39Oww7niOXZqYT&++qr_iqDm@4a{PcYgYBvVV4_X-bkr2hyz4XX4)MUm)KAUVQ1LePbHr@wPyW$Z+kH=7{S$r8Uv2`8o7Y zQ|y_87T#x#O|mdbn)kIQTP!S^1-^8oh2xEK^G#c45XXu)-h4CH&m3?BcAOiHX5L5Q z@|7!0Oim(QkC~Y{hE_Scx;i?V{MEN#&xctmm5vU*uyMCa&B?!U9OpS~ksYmVb^qpO zn&YgbbcmvmxOf)5js5pJ9ik{AiXv9m)|r`^q1kBKG>OVj=21#BJ3Gr@ILvzjnEr6( zpkHfq9$y$nJpAB;oIZIn|K9Aor5v>Z&wlnik7~uF)yBuin3|kqVSb*X1I$=`RXB-v z)H2<+KUbrJ9knKRfWuC|R4_9l$3`WyNigK&OnQzr4ag^d}X$im)0t8r`Ul<9pgkanXla}UY5ISPA(Z+X2WZKE2^Esa| zDqmHH+TUz8dGE?4e#D-QkRd=5dXA%F^S%rL#c9I%d(P)$B)se(lmZXn`K9i^VjriG zCMijhngelwes_(|AVR0+DznZ>nf+O>Mq#?r=7mFx3)9?p&qLgO_I!!Zt2I>4CuJg{ z@8$end*f9;|6@O%lc0}0{BTZ!zWL@GrPsdw&fDBvz0Cs`M#@2H(qE=}FY5tNt<_js zTIR%wlT1uZnsdaIDq_<7!dx3~Cuz!HI7BHEONo7w+As_e0`~Uy%n?*lZ( zp69XG>7X^X+&3-MBABw)Uf&$UH9kK6eX|nM3Y~n&YK_rsHZ5t`Fmh*mT(q=g zpJ$o#!C*k8QXLVVg*42lbJ2u_+9`XT4oMQ{4lrkFqlhRBSY2CZZ*Pxgqj?}%(rDEA z=toW2=x`X|iSnsTCJrw{tcM?bkf%QI0o#*N6?W*6<8vJc$By%imF+GsEpcRdIp;m1 zFg4wPg+$wfQq2yNlB5wy5*$E6rVt7yr;q2?jOI|Zccr_>bCQjhQ*m&72k99EI5|6w>$ z@rVT1dgM&^%{9-f&}f+$zZ*t)rbiv=J}7+i=1pANh}Iy5!%4_tZ}j;dW$nvgFgT#p z1-SR_`jag? zByq%eYn-X6NnD!;cN`~=or-A~qny)7;m~Z1nf6afVqsJ~%Cgyk?DYrK8+CT}cJo$G zjwA3qH*aCx8}@7~F^KJ10;w_$5S2DJDGDR%^#;#A{S1o>iv^ix-UGb!6wrG9V=3yV08L#MMxXq!4<;jdGYC8wsRd|?~W${Yw;uh(-2 zs3`ZMGipBLXukUwFXq4hH~;20*t4ym;wUb(#nM(_)3xZq^iRynhl>z(zXNilq~iO` z&CPSd#*DpQk1-o#YMa+D+CM!tO&mv7l{ZQc7Q5=2h2OVi*r0%-5)cmWd+c$J9zDul zr^BmnyjiMgNRt%LhFi^w%j>VdVI{%WSzQ|`=90L42ua4^H(M<}^uZ72=!Zj6*BOM* z`am2zdJNxY0^WGzO+N6{lleS!_Hh78N7f-G#sS(K;C`+k3xnE~LV2)7O%8%%%STMR zvwfGiwz|jpGe#!s16~DQsN}VbzEw-I(vIvqBx;isaaX6HuQPnsf9vhX8|~X z)Fw`L6xxR$QHIHt$OBT+Lx5tUX#4_G4NfKJJ3zjTjFg7;M#Kh#NNGcOaIS#^}j#Kd)Oi#@n zlA%?6`@7#6r6(5_ICf$Q-}iA{iI9Rz?_K77?|ak=m>!|u>+^-5{QRM*zpSyTIkDK~ z(T5%>WN0XLn%=LO&k#|!+hO^rvF+}=FYwk|@8rXk7F)yHF-_8dYPD8K37bvDb=-X6 ztJKWR!&EST^v8cZ;=;m!Q^%JWYZwRg^FQ}RZrmJoD0=+SM>u(GArFDd_LpVk4?Xx0 ztG4y}XatLl62-tT_P`OZPW zd4j#W_oCUDgpve81HH})MA=>R8lB5qVgy#24wL>D%Q)IvV<*z^} zL9JfLfddC{< z9Uuge$1OYX}wy< zOE15SIWPR&Y;8F(*0H0H-embkLpDc4zyqk>)9AKydixoAf-#>;xV^@oP}ZMu;@`?cI-+Ys;9Pp2qzAydK>x zjY@|uVxsu~n_B}+PfdeDf0Q%UUS7i9eS5KIb~oZi z1$1h%2F3`u$iYR1q~F2X+8UC+raQ8D`0~>XW+>?jhb#zCZ!|yx1}-HAS>~8?l71hP z6BC+gh6}8(uOp6Q#BoJaJ<$L{C@d{4BM1V7W`4fiZex(97z_qTGfjh~05s|~Gh-hj z%QC$6)>}Av@+6-4{u5YOTmYqX^h7Y9lMgZda-Lw%-d*T)TL8&1Yfj{(pI~uuQJ+{t z!z$cRp-YbmmjwX`B^acAY_(br2XOoCx4V!!iX!y;eOz1HL>yHR#}&-&KL{xpl3t3l zXJ10KQbW7lLlhO^E9V?(mU>lUT@il#iO2Eq@xKG5fx~AkE-u2?d*VZ*(xsUP5UnK3 z0wif4M{YWTLuSBdacR*-M9~ll2Im}tOD9~R2TvwUuG-Up6Z1BA+;NACI0l(C5nx{n z$pGkf6I81)(m{sD9{VAJI6@G_X!Tld;7clnb}Jb<8GroaCrkFbI*pB3DACm50O}1L z#S!V*FR0r<)mo)A_6`EJAsC8WUbBU>xAm(h`z>e;cw# zf~)fjrPC*j7-nXt5d^VufH}I|E*NDARHuMcIp+WX z{Y0m0`}XZ|Q<>ui(4fe+O4jR}*GphAnA3l|$FZZwaO~(YFi+LDK3PY-UPD-^;a8`h zcetA{4AANH9jkK~#P}ay{_0SBwvd-60dohcP@ ztqzFNgCXDmkpz%t#?NyEQYi?cpdgT@9i(a7we1@9I;JKk5wHNnNMK*Sas^4!2cZF? zxQ_GZ-@w_IF5vq=ehLqK`w^Ue;U)a$xiiR83P!64g9=)$F0QX_Kni90`Wm8Hsnnp= zSs938Ac}%03Pu7@Fc6{e(wVb(^U~{xD08EvX_}(bZtJ4nV1PW=(_K@OH6;BuR+m?> zIDZwp%=l$Y{Z^}sg~eqgrpU&5?x?gGi#=co#amu+?Zi)i3Z)d@yky|7 z=Dt*_Rm6tqv)4Xwiq? ze^^I(yXW>n3XZK#3+t^7{MxGl=)s`~aV^4s{;yvILpiE?^|jaWZ@*B`nnes~x4UQ? z{=!bDa3sI@W%0WI>uZ05Z+`0`zj_IOnkOI(ks&(S+|<`Hj68!wVt#%e zVHo4LFTIQ_SLV@ZOdt#+B)vY)y>cGCUf&gQq9{TfMMf9UI=3;%BcfB2jg1W)m^*;D z61lkqOMxCmF~U$sH)mdW0l82}2N@_0kYyY+2sA(m1VR-!2^R%PtpngH=c2C_XOz~+ zsF}?+7z}W2brmbuu3>t58evEg#dTy^hL8TUKfqsq>B}Glc=E*0Awh8I(p5AY(~ydz z-_LMu1 zSX{*X!UASzW)MXTjm9LhEX6zDaU1^nOJBx4cfT8#-kis8&z;8y-}gS8IeQU8>P>d# z@`8(Bgpin=m_Vam$HwNm!&g{!C_)Hce(4>(>z&jY&J8<)83`5F|+#(=+=aM1u9}*UdC1(Ca5y zTe}WMDQ0)?1{5~~I|BRmAH@E>yCDR}fw==cR4Hpnuq0tL+-5HJP> zqG8#DVrp^{Qc8UO^Ph)OS|M9X1r{>HnhZpt#_QyQV|r>5gF%Y91N&hc4OA(;AuZs= z5`c1EkZ9UG-*V&;1NVUBph_WP%#7CpL~8hF9EPaXYN*#V4f7jsynz>9d=ag!EmUhY zOifK;qB)HytYV@$g<7=%B^8#ImvQRZ)7aS9Ffv+tp1V=6>$Vw@P!QWb?dR`yyLj`h zHz7rt&P#A^=+BCq+1l(Pj_ZgkbR^oD$RW{2mlKUr&0+7}-DpnCpxbTXGoSu6zV*;?Of;vl+3w@XC!fLZz4z|oqztQw z!z!{YN1pQ%&mbWTGc&tf+m|Q?Mi?lVv;V=r{RY1G=y&nGN55+dwgzI`ZX-)A!&1R= z#6^zl>uZ>7R>652tIO9M_^%QdksveOq@5nS=d?4GWV;P^JLBp01q28Pj@*10>l+(b-`FU%bf+d~F=ZmvFbMID2Ohu!4}QzEk-vlA zdR&US6Hq|7=MLz)Mp$KFF+tF7bPnmw` zb~k~PMo?dW<8|D2+pVaw>IjCxMh~s6E`(7}X#_EpL26kA8A1raw8tmrw4ug+B{QgO zfLctEd(lWWi~*$(1pylMIv8WPdi5%@J$CHr9iXZ#QN4I zl3wB_)2#hr5FjyB-XL~3%b)M(j!8t51FQZoklwsI??9 zY@<1`qc zX%HifY9J)kY%OL7Gp0iaLKP?!n37;hAt1W21j@iob&gA25Rpn6tw0@aYc?*W$q=N{ z(q7dXCh85;t2KlH1EUmSz)-7JQH^V;#x+#pDgqjs(ON??rnILciUN{AiSbY8fP^k? zu3ul*pFv7c5HP|3#Xw2mSbiv>kmiOdQiQwA>!C9x3+_2W5D*C>1=3y{#K#>dfXWi2 z3`z*ps#R3tcx(mv>61UllP6B%{CQ1cF;SnyWOE8huL}YVnJ(6yF3f7I5h*skAdr%j zyid!_f7^NnHD0~hXkxNC?RfBeN#fCMOEV=Gmkt2megYr>2N8Xwoi)^gkuppPh%-B* zA;{Hg6;D6&%!vIzdFmt{eDD#sq$vVSO-`cK+H#|`CHuXTziAAJ z9liO%xjD=)u8r9LSO4v6_|0=?kY-z^HQF#wC}e+C7w%RtJ}i**7v<*|o} zl^D;m95f6o2v}s`i)4rJdUPaF7}lFIp(8i!x~kk)^?*5H7@}IKXkGeBj5v-E$1&=r zW)Ozq$m@LkLb21+YXggWGvfpt3vC_%ye_L&F3 z$b~1KVLlfbT8tK)Gcz@fiFyM|i%Xa?y>nZUo?lqR?9^-l+%QCucJXTm=x_ewZ+#k> zNK9%62nk%idaNevd2R;46sS^=q-?)Mm<5%Zv!4i6 zM1Kk;5sjK@U+$gVjg^&arE2z}gE}96<@^P=_yJ(|>>m9(rtRz7KQuR*ECHNtk&WRKYCmI_Rjm^kkNY>S7U;wDuDK5{$vzaMSi9MSVsW zL?}`(H?>Yk3IWO(vOL$RhXEx4K*Ln714CMpW*KH@W*~$p%@Wv+bE7d>ZvLO|3@D|# zHe+fxr%s*5ks~*2AQS*b7&`3^CMTw~xC)>nKvZ;S?d0KeX+RHE2j69AZOG@+Ej%+xgAeB(`2Diy4(thn&prVCLRg3G)lIbL?AMa)H* zDmg*l*%Cr<`qXLs(I-Dqaz@>D7Zc419R&iI+dGR^J0DtGSt;NsL}Npf@|Zz2bK628 zAqWA4f?@>KAVOtk21%!jeTEd|+$(0@;mQ@aW}kch9De!hXT7?`KiO%t4VG$A($vA2 zZ4^XE2+6sVXO}|a!i7tC&pmfJwj%(TpTCMjhi(ET0Vp91APh5NY4Fsr=r&!;B1pj(lk>pM=D2{@H0A0R=Q1 zD%y^Z0F@x62+($2to?uV$xq;|%U6)68AQ&(Xn={yX}9?`O0SGpu)v{_?dRFw>u!QZ z6=bayHxp1G4869wcQccIAGK=L6=VH_%i8_aiJ!U(zs7OsO;7z*;fPW&5(Vmi>+A7} zKl~WpbI)DqCw=6cBj+4E&oMPQ>+GkRdrJ4UrIiCS6hcx7j~~4#oasNBE{vEbh;+PZ z`u?gNIsI*9u;Y{J5PbA$UY{sKFls)t;chD`<+@mT^~zOTxpLJY3OS_Ykb--2|HR2H z`5c$}2u8IX=$J9;UDMN; zo|?j7(07}^mn2TXhP=(o>92qN0i1a1X$%Hd@tC09+BC!-fr|ho##h>j zpJI6=p^b^%kXhMr2+qMJAFYQ-AD9$iW@;L*Uc7*7D=Rp9!hJH;NzFm_qlJWq}eW8u4Y>ZGBNp zooflb@x88rvzX}cgWOhBc{XxG(*EOQHW1M`YQgv*PzPy-Ihca+oYcrv$NL8T;JbXy9 zRgH2K>lPzn<`e?PFuiLAg6FQHpQb&;aUDhRGy)mY(Yth z$ZRVApctfjd^q$OnWe&Hqv`CPnX(K%S|6catvN@)WnMT1B1>U}5=1)zb6qOcXyj)$ ziu}RjKg8aBy9@Cdp_#sp-ttbpK9vG3JSIl+bw(Ljz})5^F80}+eo~RP7Ksgk*-_Q<_N&!-e|1=6L z%kxq#V{A&{osfQLT=elv^CvDEpiCkYX;G^|f%&%^#t~VXdwTKW#qrmM1-i5(GvxWe z)iWreP^v)uSu>MIhZ!1Eyp}Td0x>O@Qd<1aceV=i)2`&Vx zm5Q^UFf~*^6vZ_)bNI^Bdk{iGQ8~tbHQXTb$Xv#!L&FEIub^aec|Y12*#m-REU=@Y^#-SQADhxv4AGo>8$=r=f zh()+cDc$z>8Dkg>QoL~H3|_l*3GaC4JMlYr-Z{E@hpO+zAP~H;vw<)a=(Vq#REd_x zKQ$FsP_o}S%pr%c?IKrn$4e8kz@X5yvrV%MwMu0yLz?#Oa2til`o=+gj5@UtmwP9NWo}o^HZ$VYF<&8tY(me$0?@4n{Q2 zKh0BA<5Bw+B#s|{#E53r@hA7)SJ+?rOxzXoD3g#}IVV=!BVtSNh{8Iueor%L6Q-f@ zB}XDr^;m+29l=Q9cIbO96*TD|8Is_%tjL&q6oHWXsk`^o{jP2E?cXzpLkDic^UuDB|NXZQ!neQJ zOqzJY=D=ixnnIw{*+dY85Fj94(amn$YBkdK51)AC?^6R2Wk%W&=TMyfLMX@SufJ#P z*G+3z^?m60as1*JzjmLOGV0n!PH{FJlC}TO~4O2isCSWse!wGNPbq>hXQdT|jHttCa#?`O^~ zVG)v~NYAbFgZcSbK$G%lsm<567-rYHQp64BST&zej^^9((Kw{HOo& zS0lw$O5yC+o2DGbbI~v9-Z3+)L8&TQOO&G9>pM`97)}MuT!~Qf1~+`ve*3rGTS62q z$k6A#AG5RvgA|WH{zCx3m%s8AtgNi))PY!S2mwloVI7Lx_;iu30E59+sr79)8TGm- znrv0u)*tjs>#{63Lq-mQQY2(-^$Vf)Yg^HmQaG}hz!IT&yJ_{>HTU(a7cSx}|5I}a zT)zC4J7P!jGs})U?7i*xIL{5YUe3_UovKms@hm7fw^9zOp_|A_PGIE`=$w$+5Y< z9}!SOcPyAGsXtflxa*mtC9A|SvRsxo{}{)*)!M@5=GI6b-q#)Q?RS)FX7k(Dna@ze zOa$m0j-m*IP`9G24cFs0000N8NklD^tvJ(c(U7NvR%ZY>fwG+GXC<#DN@FjAdo7Us#{kINqoXsQYkXHyT zrJ^hZV^s5UMht^2yJ5HObNAnmZ#`7-2e4y@-|?5kfMd4nXO}L&hgAk;tk=XV&kqsN|N#JS>9?(Px zF*ZE54zP%LgbP7)uII(aE*{T;XK99e@4W~2-g7TzXJ&A9X{}V`wRHte?XLgWy`gI? z3S6Y1N+6RtLLy3mq+Qr7VBmt6)QA);Ze!Gb-Ao)Ewi*uo3DJc#VI;e){b`o!x)Y(^ zOn_CV)?Z7huy@ZseE35j!t*bj!HX}RMPT61HkwScK7`c7vpLVrX4dP0G6q6`PG=KD zatKgpVrgPprP`);x8v@$oCj1B*&4@(9*T4kDJ#7xgtkvqP(umL&;=Gj2+0siNPrZI z1qq;w6hY-#FkmQRSrCy#0T)zQbrnQ$R}iHMiYS60O+kD&xbHl&i+c_$@8--Tnar8r z|NHKDzx&;jNwCs_`K?C`TCb~Tc0?9Mn)->TE7b@X(cC@TpcJ~Wma#j_V8e~n4|e{{ zdIn{nrH|`pCzYb7Z;$3Ck^FNWRo%h%GwDVgLk&@N?JN~5Mo5uKRZ_F(D-DhHuZnwh zSIIt`&5~Bi)H585dex7V_H5LrKSKmu<#4>+nD_WqL(f&9Bh(rr62rTa{Nq0uPX9Q? zVKDDrUz;m>pzKovo6pLl>>~Ki&>Df?&?eqlC@M;mAME=sy2SLPSdKfvV#`I{cY6oQ zYtd`RaD~~uBP)ar`|l2LTu}(*Q?l2wp=)<4Jin{EW$hTdV%F$j3xXJ79;`Cpmx5AEU$InhX;5-ER zsd=b{m;r`qdU2C>mqOReB$4lF&mvZJZ-vf!7+GmL%cVEAqc~H_ua7#kTz7x%QA5)70R_JSkUk+5%)n$d)tTkVmBGVU8I$kAH+sT+R z(rO&YmlY z>Wa9Y_?_)6^m;~#>&*JVY3oZ@CF&aHt{5Yn+kE3JKQUcU_uXN1s|v(Q{X~E7(Y9#Y(+tAZ8XAk8WF-#I>T2#(TDPxhGT84?i?MD?ETj&$E(=MtkMpB zi%Yuo9o2;n`l&tqWiGd|h}k1|Jp!calRWsrPlwpya+&DP+Oyk=Zu?7}v>1pTy5ru| ztQr;SG_zUzr+sM&mFvuK)qdIACByh)SSK=W1qfAQ`W-mc$CUGwHCMTM?o5*z2seQQ zC9FfvdY9g?jCQrtJAKn5f7hE!J1QzG8JkG;suKyS)$VUp3H6bLiNlSUmKXjRyXk9@ zx`JzjSdp=eIV)id;-QT*DeJV?D{=pcpPxJvO7v2bBRcqHT06cl7DhJ@X`x(*E?t1lr#YiVj)0jGi3Zb(;iIar(E93&rpm!1L=w>@aUR`+n5?5}x zDwrUGD6?+3tb$`)k*WA~Pr+PM`=pn??E$49EMuSTwXgog`=FhfK#zLdaP`2ukLfAmxl-bA|(v~L*Zr|5j-~Q{I*a~Tf7CwWF(R?zn zmy9JD2pl?Gd`K$sRfAo>TguB#Qp4Qa;n;qv%;CqJ4aWo4UFk{?R}=>sGoSy_=5fir zwD_wJXF0t##TKL5c$TNyFQH1k^~jRAiJL+a!h2LUCzK9OomX9-vZqP4{eaK?i;)8M z9m6N(s|zlkxTBYOfoaPNqokO1P@)r1c)uuu$LZErO`JrX#pv3YXzP+n$WIWi-!MX&Sor(My#&vh8t zTMtU3vLg;}R3goMwrFd8UlZgrBzIqkaavLE@*sx%z+OAU|I#B>wZ4t|kO4|iNw|c4 zk6w}ZqC?E6?hLE`kWa_b<5o3jWaYIMLpZ65@=rbCdMvw)yH zgg_vm6P&ZY+%x~%#K4OvB8?D6GK!BRMrPGY-ZYl5n{xOd@)`23Wo01Hf&v1{rfmJ3 zj^evTjQUbcx^K2+=j~D2Z|O+_Y-UQ|U}f8R-8T{zj_nUGyli544Cy@3?Dg&DSWv6k zq~CWHD2_Z~YfK9;o$)^SGPLN!k7+w_skz?kE{W0|>~<7pTS}W{=iQ$?nt~Pn zmwhV}`G=Lk@zr3HhXlcXVZ+#Yp$r{e&`1o*#Sv}i>1BjL&)wy{N&@z>@Ah!9V^i`F z)QyB7%)$#mSn!SnQ;|e$oC%(WhmkOrK!js(G1w3)l5P@cf&AjkKaNL|sd%K_{3#e$ zFIyWjDI|d%uS9}z_IP8;FF{&KcRtSJ79$5LBrNb~Vg@Pr(Ze%iX zah!H;pF|39XEz81G!O2c<~QN&NYt44#hFf^w3Ub1ptE$Qbr>}g8-)%d ze#N0BZ(d(U0t>@|Q=NHen@pEZo9{gvEG`t*n&0EU4tCvgWGE20HB(dEIG7u!G^=JHU5bw)@-yVg>E{f+SWXCCmwe=vrCcwr!7wiuB z7W_6cfdI#R)p9Oc>_d9b20jqtVDsV$an8T*BjmO?iQ!T00KrWKSM1{7hbE35yHRnwiTL z20j=8KKOx005f431k4Ae1D1pb<<#Fr!$eJot^<&96ZnF+D-05sLB_T)3Kb^(y#!p- zF;)pkzp^0xf`Pc8O(g$g2{>|OB(NT7^W~XaE_%R3G8X^$k*Q{tgUJByumJ^!{{kft zr1RtdOUqy5!>9bLud*C$VhV=od9E5BC6<{>SAvH_urwkyFeC;W2~&*1DP+>ZQke^M zGui*55rA?5l($sw&idy-K;xE_iz5psf0~*FNO92nwmdc}WdCzyG$@(FzCv8MisLmh zC1>eG3LHa+V+_NNT^|0g?UUtOuvm0+76L^)1gV0@ NZm@RvK@M~T^dE4Bp)&vg literal 0 HcmV?d00001 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d4ff3d3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,12 @@ +Copyright (c) 2022-2024 lax1dude. All Rights Reserved. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..25774f3 --- /dev/null +++ b/README.md @@ -0,0 +1,254 @@ +### THIS IS A BUNGEE PLUGIN! Install in 'bungee_command/plugins' not 'bukkit_command/plugins' + +# EaglerMOTD + +### This plugin can add animated MOTDs to your Eaglercraft server + +![EaglerMOTD Sample](https://i.gyazo.com/4e0105720c866990c82b221fe82f7cc9.gif) + +**It can also add custom "Accept:" query handlers for 3rd party sites to gather more information about your server** + +## How to Install + +**Download [EaglerMOTD.jar](https://raw.githubusercontent.com/LAX1DUDE/eaglercraft-motd/main/EaglerMOTD.jar) and place it in your EaglercraftBungee '/plugins' directory. Then, restart EaglercraftBungee** + +You will find a new 'EaglerMOTD' folder in the plugins folder you put the jar in, once you finish restarting your server. This contains the plugin's configuration files, you can edit any of them and then type `motd-reload` in the EaglercraftBungee console to reload all the variables. + +## Configuration Guide + +### Messages.json: + +```json +{ + "close_socket_after": 1200, + "max_sockets_per_ip": 10, + "max_total_sockets": 256, + "allow_banned_ips": false, + "messages": { + "all": [ + { + "name": "default", + "frames": [ + "frames.frame1", + "frames.frame2", + "frames.frame3", + "frames.frame4" + ], + "interval": 8, + "random": false, + "shuffle": false, + "timeout": 500, + "weight": 1.0, + "next": "any" + } + ] + } +} +``` + +- `close_socket_after` Defines the maximum number of ticks (1/20ths of a second) that an animated MOTD should be displayed to a player (default 1200 ticks, which is 60 seconds) + +- `max_sockets_per_ip` Defines the maximum number of MOTD connections that a single IP address can open (does not apply to local IPs like 127.0.0.1 and 192.168.0.0 have no limit) + +- `max_total_sockets` Defines the maximum number of MOTD connections that can be open on the server at any given time + +- `allow_banned_ips` Defines if animated MOTDs should play for banned IPs + +- `messages` Defines the list of possible messages to display on every listener + + - `all` Defines the list of possible messages to display on all listeners + + - To define a list for a specific listener, type the hostname of the listener. The default host defined in a fresh default `config.yml` in EaglercraftBungee is `0.0.0.0:25565` so to define a list of messages for that specific listener you would use `"0.0.0.0:25565"` instead of `"all"` to add the messages. Messages defined as `"all"` will be added to the list of messages for all listeners. + + - The list contains a set of JSON objects each containing these fields: + - `name` *(Optional)* Defines the name of the message, used for specifying a `next` property in a different message to jump to this message once it has timed out + - `frames` Defines a list of strings specifying the list of frames in the animation of this message. They are defined in `file.frame` format where `file` is the file the frame is located in (which would be `file.json`) and `frame` is the name of the frame in that file to use + - `interval` *(Optional)* defines the delay between frames. Setting to `0` (default) disables the animation and only shows the first frame + - `random` *(Optional)* defines if the animation should begin on a random frame (`true`) or the first frame (`false`, default) + - `shuffle` *(Optional)* defines if the animation should switch between frames sequentially (`false`, default) or randomly (`true`) + - `timeout` *(Optional)* defines how many ticks the animation should play before stopping or switching to `"next"` (default 500) + - `weight` *(Optional)* defines the random probability of choosing this message over any other messages in `"all"` and the list of messages for the specific listener the message is playing on. Default is 1.0 + - `next` *(Optional)* defines the `"name"` of the message to play once this message times out (`timeout`). Set to `"any"` to pick any message, or set to `null` to stop the animation once `timeout` is reached. Default is null + +### Frames.json: + +**You can name this file anything you want, and you can create more than one. In 'messages.json' just define the frame as, for example, 'file.name' and it will look in a file called 'file.json' for a frame named 'name'. The example 'frames.frame1' in 'messages.json' will load 'frame1' from this default file called 'frames.json'** + +```json +{ + "frame1": { + "icon": "server-animation.png", + "icon_spriteX": 0, + "icon_spriteY": 0, + "online": "default", + "max": "default", + "players": "default", + "text0": "&7An Eaglercraft server", + "text1": "&0!!!!&8Running EaglerMOTD plugin" + }, + "frame2": { + "icon": "server-animation.png", + "icon_spriteX": 1, + "icon_spriteY": 0, + "icon_color": [ 1.0, 0.0, 0.0, 0.15 ], + "online": 10, + "players": [ "fake player 1", "fake player 2" ], + "text0": "&6&nAn&r &7Eaglercraft server", + "text1": "&0!!&8!&0!&8Running EaglerMOTD plugin" + }, + "frame3": { + "icon": "server-animation.png", + "icon_spriteX": 2, + "icon_spriteY": 0, + "icon_color": [ 1.0, 0.0, 0.0, 0.15 ], + "icon_tint": [ 0.8, 0.8, 1.0 ], + "online": 20, + "players": [], + "text0": "&7An &6&nEaglercraft&r &7server", + "text1": "&0!&8!!&0!&8Running EaglerMOTD plugin" + }, + "frame4": { + "icon": "server-animation.png", + "icon_spriteX": 3, + "icon_spriteY": 0, + "icon_color": [ 1.0, 1.0, 0.0, 0.15 ], + "icon_tint": [ 0.8, 0.8, 1.0, 0.8 ], + "online": 30, + "players": "default", + "text0": "&7An Eaglercraft &6&nserver&r", + "text1": "&8!!!&0!&8Running EaglerMOTD plugin" + } +} +``` + +**Every frame will retrieve the values from the previous frame in the message for the default value for every variable** + +- `text0` *(Optional)* Changes the first line of text in the server's current MOTD + +- `text1` *(Optional)* Changes the second line of text in the server's current MOTD + +- `online` *(Optional)* Changes the number of online players, use `"default"` to reset it + +- `max` *(Optional)* Changes the max number of players in the MOTD, use `"default"` to reset it + +- `players` *(Optional)* Changes the list of players shown when the mouse is hovering over the online/max count in the multiplayer screen. use `"default"` to reset it and show the real list of players instead of spoofing it + +- `icon` *(Optional)* A JPEG/PNG/BMP/GIF to display as the server icon. The icon must be at least 64x64 pixels. **Transparency is supported.** The top left 64x64 pixels of the image are displayed if the image is larger than 64x64 pixels. **Animated GIF files are not supported, they load but only display the first frame.** Setting the icon resets the values of `icon_spriteX`, `icon_spriteY`, `icon_color`, `icon_tint`, `icon_flipX`, `icon_flipY`, and `icon_rotate` **to their default values.** Setting to `"none"` will reset everything and set the icon to be black and 100% transparent. **The icon's file name is relative to the folder EaglercraftBungee is currently running in**, not the folder where the JSON file is stored. + + - `icon_spriteX` *(Optional)* defines the X coordinate to read a 64x64 pixel portion of the current `"icon"` file, if the file is larger than 64x64. The value is multiplied by 64 to get the exact pixel coordinate in the image to read from. `"icon_spriteX": 2` will read a 64x64 pixel portion of a larger image beginning at 128 pixels X and 0 pixels Y of the current `"icon"` file. Default is 0 + - `icon_spriteY` *(Optional)* defines the Y coordinate to read a 64x64 pixel portion of the current `"icon"` file, if the file is larger than 64x64. The value is multiplied by 64 to get the exact pixel coordinate in the image to read from. `"icon_spriteY": 2` will read a 64x64 pixel portion of a larger image beginning at 0 pixels X and 128 pixels Y of the current `"icon"` file. Default is 0. Setting, for example, `"icon_spriteX": 1` and `"icon_spriteY": 2` will read a 64x64 pixel portion of the current `"icon"` file beginning at 64 pixels X and 128 pixels Y. + + - `icon_pixelX` *(Optional)* defines the exact X pixel coordinate to read a 64x64 pixel portion of the current `"icon"` file, if the file is larger than 64x64. Unlike `icon_spriteX`, setting this value will not multiply the input value by 64, it will read from the exact coordinate in the image. **Overrides icon_spriteX** + - `icon_pixelY` *(Optional)* defines the exact Y pixel coordinate to read a 64x64 pixel portion of the current `"icon"` file, if the file is larger than 64x64. Unlike `icon_spriteY`, setting this value will not multiply the input value by 64, it will read from the exact coordinate in the image. **Overrides icon_spriteY** + + - `icon_color` *(Optional)* mixes an RGBA color with the current `"icon"`, or displays the color directly if `"icon"` is `"none"`. `[1.0, 1.0, 1.0]` displays white, `[0.0, 0.0, 0.0]` displays black, `[0.0, 1.0, 0.0]` displays green, `[0.0, 1.0, 0.0, 0.5]` displays green with 50% transparency, blending it with the color of the current `"icon"` file's pixels if it is set. + + - `icon_tint` *(Optional)* multiplies an RGBA color by all the pixels in the current `"icon"` and/or `"icon_color"`. `[0.0, 0.0, 1.0]` would make the icon's pixels blue-colored, `[1.0, 0.0, 0.0]` would make the icon's pixels red-colored, `[0.0, 1.0, 0.0, 0.5]` would make the icon's pixels green-colored and 50% transparent. `[2.0, 2.0, 2.0]` would double the brightness of the icon. + + - `icon_flipX` *(Optional)* flips the pixels of the icon displayed horizontally + + - `icon_flipY` *(Optional)* flips the pixels of the icon displayed vertically + + - `icon_rotate` *(Optional)* rotates the icon 90°, 180°, or 270° clockwise (`0` = 0°, `1` = 90°, `2` = 180°, `3` = 270°) + +### Queries.json: + +**This has nothing to do with MOTD, skip this part if you're just trying to add an animated MOTD** + +**This file allows you to configure custom** `Accept:` **handlers to EaglercraftBungee to provide more custom statistics to 3rd party server lists and crawlers** + +```json +{ + "queries": { + "ExampleQuery1": { + "type": "ExampleQuery1_result", + "string": "This is a string" + }, + "ExampleQuery2": { + "type": "ExampleQuery2_result", + "txt": "query2.txt" + }, + "ExampleQuery3": { + "type": "ExampleQuery3_result", + "string": "This query returns binary", + "file": "binary.dat" + }, + "ExampleQuery4": { + "type": "ExampleQuery4_result", + "json": "query4.json" + }, + "ExampleQuery5": { + "type": "ExampleQuery5_result", + "json": { + "key1": "value1", + "key2": "value2" + } + }, + "ExampleQuery6": { + "type": "ExampleQuery6_result", + "json": { + "desc": "This query returns JSON and a file", + "filename": "test_file.dat", + "size": 69 + }, + "file": "test_file.dat" + } + } +} +``` + +`"queries"` contains a JSON object, each variable in this JSON object is the name of a query and the value is a JSON object containing the type of response and the content of the `"data"` value in the response + +**Here is an example of a server's response to a generic query:** + +```json +{ + "type": "", + "data": "", + "vers": "0.1.0", + "name": "EaglercraftBungee Server", + "time": 1648946954405, + "brand": "Eagtek", + "cracked": true +} +``` + +`"type"` **is just a generic string you can set to hint to the client what kind of response you are sending, and** `"data"` **stores the actually data of the response, and can be either a string or JSON object** + +**Binary WebSocket packets can also be sent to a client, their format can be completely arbitrary and arrive containing the same raw unformatted data that was sent. They accompany a regular JSON response, the** `"type"` **and/or** `"data"` **value of the JSON response can be used to hint to the client when a raw binary packet is present** + +The `"vers"`, `"name"`, `"time"`, `"brand"`, and `"cracked"` values are added internally by the server and cannot be changed + +### Queries.json Format: + +The file contains a JSON object with a `"queries"` value which contains a map of keys matching `Accept:` types to JSON objects + +The JSON objects contain the `"type"` of response to send and what the `"data"` for that response should be. Also, a path to a binary file can be specified. + +**All files specified in queries.json are RELOADED AUTOMATICALLY when changes are detected.** This allows you to dynamically update the response for certain queries without `motd-reload` because you can just edit the file the query is configured to read and it will update the version cached in memory automatically. + +To add or edit an entry in queries.json, you need to define: +- `type`, which determines the string in the `"type"` field of the response sent to the client + +Then, you must define **one** of: +- `json` *(object)* A JSON object to send as `"data"` in the response +- `json` *(string)* A path to a file (relative to your EaglercraftBungee folder) to parse as a JSON object and send as JSON as `"data"` in the response +- `txt` A path to a text file (relative to your EaglercraftBungee folder) to send as a string as `"data"` in the response +- `string` A string to send as `"data"` in the response + +Optionally, you can define: +- `file` A path to an additional binary file (relative to your EaglercraftBungee folder) to send as a binary WebSocket packet after sending the first JSON response containing the `"data"` from the required `json`, `txt`, or `string` value. This file is also reloaded automatically + +**Use** `motd-reload` **to reload queries.json** + +## Compiling and Contributing + +First, download the latest [EaglercraftBungee jar](https://github.com/LAX1DUDE/eaglercraft/blob/main/stable-download/java/bungee_command/bungee-dist.jar) in stable-download on [LAX1DUDE/eaglercraft](https://github.com/LAX1DUDE/eaglercraft/) + +**Make a new java project in Eclipse/IDEA/etc and add 'src' folder in this repository as the source code folder** + +**Then, add your EaglercraftBungee jar ([bungee-dist.jar](https://github.com/LAX1DUDE/eaglercraft/blob/main/stable-download/java/bungee_command/bungee-dist.jar)) to the java project's Build Path and refresh** + +Export the contents of 'src' folder of the project to a JAR file to compile the plugin + +**For a PR:** Tabs, not spaces, and format the code like the Eclipse auto format tool on factory settings. diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/EaglerMOTDConnectionUpdater.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/EaglerMOTDConnectionUpdater.java index aaeeebc..edd5109 100644 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/EaglerMOTDConnectionUpdater.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/EaglerMOTDConnectionUpdater.java @@ -83,7 +83,6 @@ public class EaglerMOTDConnectionUpdater { public boolean tick() { ageTimer++; if(this.motd.isClosed()) { - System.out.println("dead"); return false; } if(ageTimer > conf.close_socket_after) { diff --git a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/bungee/EaglerMOTDConnectionBungee.java b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/bungee/EaglerMOTDConnectionBungee.java index 64961ba..d8aecc3 100644 --- a/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/bungee/EaglerMOTDConnectionBungee.java +++ b/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/eaglermotd/bungee/EaglerMOTDConnectionBungee.java @@ -160,8 +160,7 @@ public class EaglerMOTDConnectionBungee implements EaglerMOTDConnectionAdapter { @Override public void setKeepAlive(boolean b) { - // workaround for pre-1.2.0 EaglerXBungee - ((MOTDQueryHandler)con).setKeepAlive(b); + con.setKeepAlive(b); } @Override