From 8fc5050e8ebf723c675a5e248012693a358f7d4a Mon Sep 17 00:00:00 2001 From: games647 Date: Tue, 1 Mar 2016 17:26:25 +0100 Subject: [PATCH] Added support for UltraAuth --- README.md | 1 + bukkit/lib/UltraAuth v2.0.2.jar | Bin 0 -> 50285 bytes bukkit/pom.xml | 13 +++- .../fastlogin/bukkit/hooks/UltraAuthHook.java | 58 ++++++++++++++++++ bukkit/src/main/resources/plugin.yml | 1 + bungee/pom.xml | 4 +- pom.xml | 2 +- universal/pom.xml | 2 +- 8 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 bukkit/lib/UltraAuth v2.0.2.jar create mode 100644 bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java diff --git a/README.md b/README.md index fdb5a8f7..2da50d3a 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ So they don't need to enter passwords. This is also called auto login (auto-logi * [CrazyLogin](http://dev.bukkit.org/bukkit-plugins/crazylogin/) * [LoginSecurity](http://dev.bukkit.org/bukkit-plugins/loginsecurity/) * [RoyalAuth](http://dev.bukkit.org/bukkit-plugins/royalauth/) + * [UltraAuth](http://dev.bukkit.org/bukkit-plugins/ultraauth-aa/) ###Downloads diff --git a/bukkit/lib/UltraAuth v2.0.2.jar b/bukkit/lib/UltraAuth v2.0.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..203aaefffc9942ba2fe534adcafdbdd3520b0b2f GIT binary patch literal 50285 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

GZiO1_g#^_qWvSn(_5j zP|@R}PcOK{CTO4RS$$&3>YYWrsxj@i3vHj?Il%s)jOU@7*KNlM=E2W&D>%15GQHDw zz0loFNw%P-{=m1tIyQasv+m43e0~1Wy|FF@c6BcA_CDz`n6K6*H6dH z-5-*zYtDa;3q54)Jelvlf6$MYb0rdFZsxdsIL#)mJmb)NiRo=hZRg~6Ng7wLFo=-3 zcVvZ0g~YNiJ1XqIm4xm{nOPaVt!cZqNZp&m*1Y$)@>|tg_b>h6-`92aV!igBYWD&I z)tGA8Z+VN?9=N;ZiCo{iWz*j+t$+9U@3Xpl@^TMsAJi>->}U2kRwvZ@rhnPyZkrRQ z_Rp@|*k1ccQS6TGm*g(;hLD?Lo>xwXMj!|C3(@Wizm&rY1R^=_T6-1J^r&p`~7!2|JVPk*6;uKxsjc5%>jF+87cxNqx;sru1q&DTeAG?l*H#rZ)bjK zn0f1kAM*;a8T;JtFF&qhJGZO!`+Gy7K8FiF&t+`q8nB2RJukY%cR|&GEg9CP>zroJ zj8K0*<+|FGg$F)W9P>N+>vQ$@S$=0kpXJ^)G=4dwB=pM$vSX&%u20T? z+xEJ?pT6SoM<1u{Ri(G56sz(q({W1rM2ASeFSTw7+{XS5iCk#u^R9X(37- zY>g9Uf1h?yQM-jTW0GZ-Sj3%xENS`WhtrOmUDo7(7R1ZQ;@pu~$#9w_>Hoe(wZA5W z1_knpC$oAdr+!K4bV`VoY&llEA=T-P8RrKf-pPWKqIZWJPK`MGNm@DW+)2%MZ^nVxU%Yu9di^*Z9~ zi`4AJWhyOSD-s#zKKD7wQj}dGXtqJ2%IIby&x@4F2U>ZBh2{0%`%F{nSk0ow|1?N9 ztc`~wNm)|lYPF8@dC7@3^@dA3)|`B`^G?ArzjeHeW?z}4w{2pQ6OVPrYF4pnRX=x~ zkg9h%em3V-lDo3xk+8<+u3z{0*cq*OZ>;pUZDL=~YjL)XXQO*9g4}|V-XyC}-@W5j z$INBNx4vmuhx=M}Z)zWmk*(nceXW!AYwNz1*&YEt^6`*(Nar=!`YnIyk zZ>^mAXQt1y>mm`$%3`+cxzoTj|9g|mp1C)V&FeXJIIhvsXjxw5lH{T-7H^%IxbMik z+9tTr)n(?CWpo_qDr_+qJhZ!cQ!?yy;DJ`sT&z-|{w=Rz`FD zOFOPz@u6$RA|CTsk?)meok`wvceg?KpYNUNN37zkKA9EwU%j;YxQF#JW2s`vwPq>> z?QP+YO&#|%=H^w_={{LCbdlK<;aB(VRueO&seeDQ~ch>r33?N+V~&I zeP1Q#f8b7#&Aui<{)ftpH8ZxZS#a$`U`>xt!iwxGS1$@4I$jvh(C&TDOLnHs>SYf( z`ii)1LO;2EXXw6rA#e}-^)B%b8iY8sv95+}U&@E3_c|Yn|8O{*+IzC!N|7el1+> zvHGW*UxK%}9zGIkWo4BTZ`(6J`$y}Uhzy5iTOa(^=G}iR^O<`1icr(j7qmZ;)yG3DgD@%wEp7gx&tdpPNOes_!*cjdm2kM_z}IZjPCe`0T^aCQ27ldn&Aho5bl(X?{Q z{9}>EYCCrY3)CJr{Hu|6@AylVGtcfvNil9VaQA$oA5#!>aQ&5QCbGxx6i%ODG{;XS z@#(UiZZnn}_`2Di`^=;hD5YfAG_(Emv^miclioAUd0*Ax+@t*c$MI#)l4sm6;o|-^ z%Rfm`xaeV_iQHjVU*GSK7YS!rwoP4^#IyR{A(8q!yL?|webZsRE5<9VZ9PZ4WgDMq zO`*j*{@sUc{}lvRblbn-jepF)y}kU$;kgg*{@Y+b=Sw^DL&y3Z>N!6Tmsq^!J)RKW zpLl=UGQ&F>&-GSBcWo==Z<5xmdRgn^Xze$73;Rr_nJXBV33V8#cF(+{`lp)l|7L-s zStgf?G}k$CS7~0{$RjrGb7g@c--fL9N4@TJdKZ|7J&cR#nq0HT-evvq3tj3L+Lr%F zv+vz%(X9P}$0}4&Deu-^rBi`(wcbch`#H5jl)H4cR_)bS>4hc@%~!8{T=tnuR@gE?->$K}=An4)!|7ayq>o$f^Y|JnF1>j6$#;pH)*VaBIi&FaUd!5= zTVGbio-LdxeyOY>^Yzyk4;(ADzff*xqNV`w$G+Ce(&6sDY-?LAE>UL=l|IFhwWsM zrRU{8m;~=^DxCLlMOXHblLwc3_R7Wd**`qLU1y0;=51O=}qUfvLebd_uPCPRC&fvw6v*b4X57F z+hJ1S692YEuonm^s~yWQl~~)P;x}ntjw!pZkL$+?NgI|O=jE~BGPXFA@Iuq`y#Ix7 zyj7RGkC{cij;d|2^L}4_{c1fwOJkCV*lgSX4{zVEzw!Ui*Z1=EOcj#%Ju{Ll^3!!D z7vGKw-W2mZ^XeIGLFKhCKQC41Jj=8ET4kfQlxKH#Brcn}WADa= zkzEX1x=sbPiNBok`pNw%*EN=DIUTZI?^5Z=`uvG2IDX+`!(Q>&4DlKIrzSj@cH#Ji-!YrwzD%?EmAb`AZP~S1)6z41SBLEgYHD=& zAmN&E`P1aBsV{hC=AC;`d(cclxkK<&#Gwniey+=Ju_}H2>u`)m=lF$M3%S%K%Q(Fr zDO((2X+LeWj)PBco=??^;`pf_ynKV*x+}fUo~qzoKY40m^i;OXJgFzIlxSzo)H>hi zUD5n7XX;|tQ(va6O`WvrW>;a%WP^hjN+lE}uNO8uE_$N>K}YqUiRwPNygS{VcP1Hx zp1yeT?Delr*-^Juec{49(p%^^6R>X z@)HgFS+jEIonC1b`aei{!T-)vHw!g%PVUeada$i$(xq;Vcb*Y-*WPXYIZaTwW$7G& z)RK#*-=By$s=?dRb8zxhz3&fV_vk;gZQ~AId0ui_+KW?@KAX?=3e204{vu;CeQo@z_v_qET-}3Vo<2QkR zRhw0>CVY7GrMYF6aQmqrPCmD{#jMP%NJ_r>Bx#Z1)?a+#l^xSNlP%5{KQ(;QE46KA z!266x3-?yN=;dPga`{KeMeFmd+h;rxke{_rPO336Yt*{S29D$i8gbrW4q z*eLH`sJ^B7;r!Qks${pHn-uudVr@H{2$5>+o!z z{g0pNz58*@AxuPq@loW&LpZ;9m(fDK1xA zw~u~7I-5n#GM?PY1wvoBPVV-aIPxo=MY`VuQqZ7{pT%X3DKiqCb9(}rSF z$0FABf1Eu3!My!Dn$OP{=oKl+33|VK&VjZ$VcZwy-COo$uj7*Rj;W4&D{8 zD%cA~(5`!wa&c-{b+~Z2!2eh|wH8qU(Lj;#rG_mBq5@Y>O%in7(7++Ky7q?ZPEPI9 zdAoK8zWkjiAHVP~$KTVpxVFu^%zuIZ>gAo~<|n0`rx)<;u1;M0f zKA=(8wXk#H{*3~XmIs#k?-Bd!pn}!cH1q9nxh;pV6#)XN%BUl zRrBjb8oQ_4*zPu4F5Z0kYSt~*!$}sCxV{^2w>f0;3F_VB#HI?s5G z#XHthn_3hD?;S5LTw_qul4~itcCm)zv)uesdXZZ^d&D-LoF2Vxx_Hqnhc?&RlqX%g zUfXSvy|weyhVVCQ0t3!Z>9Snq8TsJe<>J>$draG!4=q?X%PUS>f2UINr7zbu3q^H> zn)|lD-q~BQXuiQ0j>+MrC0?fvY30UE@bGYEo>5SpWq3DX%a-*;no4#vn z^8YCL_1xB@tHYn4tlAdGfBM*er#W-=v-{3$W8YMh^61AbzrA5I-B+Eq-M+$p%az2^ z&gxf_{>$E!&%v9OSYOT z>*?8b*v~ri$+vjsyy}dre68Q!F1so)YstF5tT*QBmi+0n-G6ZtXZ6dS-DZq)Z>Xz2 z+P^xfVzNTZHvPS=e_uX-ar4N-yi(!g^A%O6ou9DI>Xlpffd$X)qTVmhF5X_U>WAKh zi4(U?tg$GtS1@%r9sH&;NI0NeRY8rdB0=$<)9qRRm{&$kz9$fq&2YScYd!n1eoYg{ z=wK zMVE33`*&sD(4d?KOG>tajgM73FcUD_|%#F{#ao&+zMA<1=U;hH}M zFSK<}?DI?sSNbjN?Ylx~-h^%HEA}uOb;;ci*Xa6Q;4W0Qo$<(bWx>fU6-G=S53>o_ zce%)@94TRWbevb=)x-`-Cz(EnGiD7lx?Qetd<-`e*V_w0B3diL9@_fD&_u4Psp zjdf)ItM_hUx%{#WrF5;Je~&gQ-K|DpK*)^idGCCB>fK8XKFmO1|X-dPs5M;4bq zIv35We!ug%&2!7=@8s+Mf0AzSu2`Aqkg(`32lMHy_UP8R=4wRlt8jsrIz zyL*RaAO6Amzr25Sty^JFWQm1X=|d`=Xs2> z&O&?h6D*uAvu)v6%FE;SVoxJW8_Tgj%N|dyIbZzd!dKg8XH%4a89jZ-`1#f8`#1f9 z^`fNg9=UwEb7FP*GR4z2?Mzdoa^B98U-u(-{k_kVc0K1glQ?hJjp)9=zckpzK08g) zk@z7o-(Yj?lY&M1w!G6%{N3^H`|Z5N?^rlv1SRgS%fI2Onz}LI!p4T|pxv)~ZY=+J zbJiCPsfZ)KeG9HG@tJe(XWcsWZM!nXg&$n$TGUf={ebPA^v_QAp9C%DT2>YZ9v2ET z(c$iqw>SQvX(xQ4Y^~ev$a>X+j~X+-_U3wBZ0CuzQR#MKN}ZPV+q!b8W8A5U@mzOe z)h}#pJ8!yXv-okT^ap}+#?Q6wBZB)s9;)Y9khif*eMM%4mch;JuqmsODz7aQmZ)gc zzcJZY-R9PhQ_*$@>!ojAJbbY7*NmtAVa})PVmHpZyM0;s-?9X2?R8Nr*r!dOXmI*v z_s7@f9ZPBqT|9rbP4O*xTX6l=sbdw%ENuVXcW&BY?qQwu?AehTt$qC)=kJg?VEyNM zX5;5A@*k`UEQ^lrw&2xJapr1GnZ($t){(^J$y7KsZ_n&^)xSK1GK=LWr>$$AVtM_b zW%0gdO=Hpb3CDbR%M7YdB+hzzqQ6=ue8yv~V+FlG*DJS5&u|R` zz1}`_`y}?iT&(So3j1i9E1Rl%G{t3y_EDL4Vt!Uhj^i8k^yUTsE>i6-*R(YX_`CsS`eNo0|zGJCSUXq{Ge_Ri%`dDlho7`k3J*%T6+>>)OnB``dr?K96p$Z5A)>NCC1i*}xpeB>HCakciQgDKk`qK~$&`0Vt=FUCCEqXJf( zTDEgZ^ygh`LuW;nu&2(|o*kFA>suDP-(w#MXP(+z7Y~bW$F`0vu~oZHYG0W+NmYAx zchT9sMbD+S@0oG8%Ol5?`H&@d4-ds zA|Hj>xm}i+Y|!AC*z4V~*gwJFYlf5G2dS8C7ArUZ5WAki8gy@;+2fylF$YT|!ZTZr z`>Vzr)@VLbz9T8RCh~>K-P^tCe|Chmt+=_!XN&R@TjM#|GM4#wdlcS8xn_v-dTz@; z(IjB2{ZKA##p885#Qg-BqZjyUzTCF(L*-S;lMlD~axOW*@%6O-d!e<iUT~G~P0I z5B>ba{+oeH-z$;$3EmQ=EBSUSpRk*t+t9W-e!@-X7P*_#dG~R)9qs(c9P=$PvuMBP z9HpNJv;_AnZMyzs|3S$qvY&F8PpgVwE4`!ePQ>@6+SUW^GwtpilRZ?llyh%o`j`KT zZ`bi}cK*75Nuaph{J6NQaUy;0;zT)DB{E8Yc?kJ`_+gTf~WCRHB(D~3~{eyK? zvYXKwch+kxXDV)(&zm#vn(ln%FK;*hpE#{L{lbOCyS92SxOBTN;K0@Nwk=T{SG;wc zb>D8j9JgLEaIuT%Dpo0`st{=}w_{s>FqYm?D7RrWULnPPb;r5=xrw@3f$`mHYl1ce zB~;$K-{B?4bICc$bQWvYp;=q?AHP|8?;H2-({?ugPK~qwY*G8#;vjpI?@2(U|26N2 zLGv|40<`wDvQG-x{_KTAsbBYR$qBb?H#_R4y-YJ%n83`M^xW0Fmih2bQC4Zz8rIt^ zXJ53)`5g<5`|A6m?U{6_vRnMZ9b#)&lppqHcoA9t>O$jLE-Tis_!F9)x-Wz#ls(v~ zvFGTHr)Fm)o-(dDEP7*E!fJ=tM_+g^dQ--pR&-BEv2owQ+jTqsWHL_^liYaa!It@p zZ!3Oeig7*Tm2u>r?>&ckmz2X|`rH0C22B!vl2^hVvhrhxWO{nJ*PaQn87ksc5i`CX z?iJ_MFud%?%Y0q=Vz*u6)HRY@zDVZI-@79{si{nDf4H#6x5hI(@$)k!RMc7bH`%si zm~E`qjOAJ<7!mp^KR?LaDQb^cbzpqExblJryB>vz3Wg;KI3Kb2v^;+6mAz`x!77pF zM(IB*_ty&j{wSnnZYp+pkz%9nJ);LYP6m$!r@GnmdF&B6a${DDSa4@@+8pj;!DltM zPXE|)agwvqYjL|Hy@z{toSndu|Cy^Z{87~_rD-oSxYm5o+xESkm$^L(y<@$)scqRY(SXKv)z7L{9$ft~igo?M ze?bc@Rzyi{4RL-{x?|?673mEUmqaucJ8nGxh*##k?wQYzp1lv-PInB z>Cf2S2R(grW1s7zwK>uL+iE9A9a7SZkXnC7?_*iq%EeO~#MC~u3+vP`Ke9XGom%Dk z%p%dQh?8?e?i70}YHTq5ptD=EyzFp@GxN`|Uyd~q2irR)J_5Wnaj`S;S;}ppwVLejJsVSho?-dY z653vAqp`6;KUiVfP2v94-$W~S_=syN2N!g?b*koDEc>3>x&Bc$-`mgMlUJ8}CNG~S zH|+=8Y;!fQcV_2aDhu5|w0-kq!RyBseO$4l=*A0cq5DtIU7pa>y27OR>H*=q-&M~o zXuT#gNyLX=)G%w4uJ?u(Egw#+e}QXnCi1M>cxKJ@e$Bc+A&=54=G2&J@cOi}Y(JrM z;^*&m@~fon#To81?Vs{Pw9a?;ano1oHpjn;Kiiid)Z3q7u4XFr@sIeV>3eydeylz6 z{zLVyP)~nTA=T?n)0mUrT!`#kKI7+A#j_W5iWVukEYQ*ZHYe&=i*V@ShnGZK3yR&^ zmuoJrQfk-tU$9V>?X01ciTjxpn-w3$LQc3QXN$|Xew}jI>sQB$hS|>xKFFUvG&7yo z;&|zo)sszrtj}XiDv|qSXL2WdcC6F+tRSYaL&@F_`=>qSDWBL9o_gG7TKSwKUF;jw z@^_xGyTdGgZQ?hsYW9~e9tYi?E45~+Y5MxGYSx0e4u@@3mz#^vsgsO)k!zcMY5nP& zVQ-c-{8*zde!+`z3vb@HoL4@JV-R^`UqJ^BmkOBkz9e!126 zd!t$}<23&H2RyjiZIZuuJbb#wLCu_Fj!S{uuHywyK6flDNG|)nq~Y_fhMO0KcVx<~ z_kY|gn%a`Dr(P3n`OsQxg8SCfZrQe~ABqm8GEX%)d-g`h>NW1J2ej$;cSI}6@ zdv|Q#@sfYxo9>zKzVu_)-^a7xd|k{WJ6E%&-#9okeVKUg%s)RkPHPvaZo711KkxO+ z>KApkJr?^_Z~gQYPwkUAM?)>zSF_gdHW5^f-VmI##!nwyA9Z#L|Z`;;WroFr@B>de9tG07#OIKz^Z(n_L>LFpd!=F>Q_7{Bce`sF5 zpzUeBMM?J5j8$2y?5h54vnVRCV;w5v> z9k}3URexl@#t%KFH|Hy6eS5Q1_P>*n`j4$EZ20Z(_4WgvGhg>Vd@m{T zZqeDDX5aq*=lI64N~?c&-}9uWY#d5X_Ujg(-_6iw7!ok$ck#!!=Z{?P|K(F;DQ14e zl1IC&`cL~^mVZCNb6K~yZA*6JU|^6&nafI8;*YXMpNoNk0n+j)NG!>yoe=HKY$(t= zU-S>Z;(OmWlU>VnZ>>x44$s*BOXFtBjb*;-iqn(+@BO$bg5~s{Gm`se7SBlfv(Nkq zgIz|qs_dq0FNUR|QoARun|=IXN8kH(dfb^V9DYZ9#l-h>8T?YdnHi$W8yED+@=xB+ z|4X*qn0&3AXURo9hTE%7^mu5P-<*4P+SS`ncILgC|0?U`{~{^n3XwL=jNs#w{@r9b z9~QVkC~mLLti{ZB!t5JYu{oC&>rJ|tE1y|(`nqC$%lX#x(-~yuN6q{uX+PIiC08VK zjcMbRtJ?g26zrUOHyFGvH zGm}0uzDrrG2VU$^c`}#5V&)@W;hLbd7i&+2^G+xB?O5Ht1Dtr=Yg@b?FfcG& z1cwVFlL&(d0|y5O16xS6$EJFwcc8H#(B@qc1{S0ZA0Vc$Ylx$+r=Od?ucM!*n`>~0 zp0C@#Q=rgAm=d>dN=%%HDj;k!zhaCF{p6Yc4iC{N)>5Yx9f~*V-pL*n&pF?Yzzz{d<+brPC3W~2!70kVGi8C*v)!4`G#6K3j>2CCj)~l z#1JU?LJ-5Opwx8GEe%E3jZ*R05%0jlz_6Qxfk6ps2!vWChQ+Aj)RKV2;^OlBq7>}r zA>S;4>P;(YWb;z7dCq)MK{LO-4Sa)ePcbC@GtU-DKB1LMITT z+kt$RCTiF)XJWSl-tWb7{wuoa$mjEc&f|nSpMinla5i?+A=xwt`{|tM#v>ni20G*q zVf@*A5{$>59+A%uLN)w$5kAAQo}h;Aa^!PfK*tXuT>iEkpW(O;BSJSH`P>cEL^-bt zpZS<)$Do^xd_DxIGC{aJuNK*4j8i<&4U$CKiU_Ka5C$pKV>Jjfn$i|Vc_6Qu2Ca-n z81t_K)fn8n7}1@EyqXBr%sErAnu%rYHM*I|6Y-#RNC com.github.games647 fastlogin-parent - 0.5 + 0.6 ../pom.xml @@ -52,7 +52,7 @@ org.spigotmc spigot-api - 1.8.8-R0.1-SNAPSHOT + 1.9-R0.1-SNAPSHOT provided @@ -128,5 +128,14 @@ system ${project.basedir}/lib/CrazyLogin v7.23.2.jar + + + ultraauth + ultraauth + 2.0.2 + true + system + ${project.basedir}/lib/UltraAuth v2.0.2.jar + diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java new file mode 100644 index 00000000..a9bdcad6 --- /dev/null +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/hooks/UltraAuthHook.java @@ -0,0 +1,58 @@ +package com.github.games647.fastlogin.bukkit.hooks; + +import java.lang.reflect.Method; + +import net.sf.cglib.proxy.Callback; +import net.sf.cglib.proxy.Enhancer; +import net.sf.cglib.proxy.MethodInterceptor; +import net.sf.cglib.proxy.MethodProxy; +import net.sf.cglib.proxy.NoOp; + +import org.bukkit.entity.Player; + +import ultraauth.api.UltraAuthAPI; + +/** + * Project page: http://dev.bukkit.org/bukkit-plugins/ultraauth-aa/ + */ +public class UltraAuthHook implements AuthPlugin { + + @Override + public void forceLogin(Player player) { + UltraAuthAPI.authenticatedPlayer(player); + } + + @Override + public boolean isRegistered(final String playerName) { + return UltraAuthAPI.isRegisterd(createFakePlayer(playerName)); + } + + private Player createFakePlayer(final String playerName) { + Callback implementation = new MethodInterceptor() { + @Override + public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { + String methodName = method.getName(); + + if (methodName.equals("getName")) { + return playerName; + } + + // Ignore all other methods + throw new UnsupportedOperationException( + "The method " + method.getName() + " is not supported for temporary players."); + } + }; + + // CGLib is amazing + Enhancer ex = new Enhancer(); + ex.setInterfaces(new Class[]{Player.class}); + ex.setCallbacks(new Callback[]{NoOp.INSTANCE, implementation}); + + return (Player) ex.create(); + } + + @Override + public void forceRegister(Player player, String password) { + UltraAuthAPI.setPlayerPasswordOnline(player, password); + } +} diff --git a/bukkit/src/main/resources/plugin.yml b/bukkit/src/main/resources/plugin.yml index 0355e5b7..4497e1a5 100644 --- a/bukkit/src/main/resources/plugin.yml +++ b/bukkit/src/main/resources/plugin.yml @@ -22,6 +22,7 @@ softdepend: - CrazyLogin - LoginSecurity - RoyalAuth + - UltraAuth commands: ${project.parent.name}: diff --git a/bungee/pom.xml b/bungee/pom.xml index b375260f..70d629c4 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin-parent - 0.5 + 0.6 ../pom.xml @@ -28,7 +28,7 @@ net.md-5 bungeecord-api - 1.8-SNAPSHOT + 1.9-SNAPSHOT jar provided diff --git a/pom.xml b/pom.xml index 2a5245a8..895f3bc3 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ pom FastLogin - 0.5 + 0.6 2015 https://www.spigotmc.org/resources/fastlogin.14153/ diff --git a/universal/pom.xml b/universal/pom.xml index 82349a1b..1223e977 100644 --- a/universal/pom.xml +++ b/universal/pom.xml @@ -5,7 +5,7 @@ com.github.games647 fastlogin-parent - 0.5 + 0.6 ../pom.xml