From 753088bdc4c033805d89a6ea5a2466e8c1bc1c68 Mon Sep 17 00:00:00 2001 From: Garbage Mule Date: Sat, 16 Jul 2011 02:18:36 +0200 Subject: [PATCH] v0.93 - Economy support, entry fees, spectate-on-death, bugfixes --- MobArena.jar | Bin 86986 -> 117030 bytes bin/plugin.yml | 2 +- language files/announcements_da.properties | 2 + language files/announcements_fr.properties | 2 + .../announcements_pirate.properties | 2 + src/com/garbagemule/MobArena/Arena.java | 196 +++++++++++++--- src/com/garbagemule/MobArena/ArenaLog.java | 2 +- src/com/garbagemule/MobArena/ArenaMaster.java | 5 + src/com/garbagemule/MobArena/MACommands.java | 82 ++++--- src/com/garbagemule/MobArena/MAMessages.java | 6 +- .../MobArena/MAPlayerListener.java | 2 +- .../garbagemule/MobArena/MASpawnThread.java | 38 +++- src/com/garbagemule/MobArena/MAUtils.java | 82 ++++--- src/com/garbagemule/MobArena/MobArena.java | 39 +++- .../garbagemule/register/payment/Method.java | 62 +++++ .../garbagemule/register/payment/Methods.java | 141 ++++++++++++ .../register/payment/methods/BOSE.java | 196 ++++++++++++++++ .../register/payment/methods/BOSE6.java | 195 ++++++++++++++++ .../register/payment/methods/BOSE7.java | 189 ++++++++++++++++ .../register/payment/methods/EE17.java | 200 +++++++++++++++++ .../register/payment/methods/iCo4.java | 128 +++++++++++ .../register/payment/methods/iCo5.java | 211 ++++++++++++++++++ 22 files changed, 1672 insertions(+), 110 deletions(-) create mode 100644 src/com/garbagemule/register/payment/Method.java create mode 100644 src/com/garbagemule/register/payment/Methods.java create mode 100644 src/com/garbagemule/register/payment/methods/BOSE.java create mode 100644 src/com/garbagemule/register/payment/methods/BOSE6.java create mode 100644 src/com/garbagemule/register/payment/methods/BOSE7.java create mode 100644 src/com/garbagemule/register/payment/methods/EE17.java create mode 100644 src/com/garbagemule/register/payment/methods/iCo4.java create mode 100644 src/com/garbagemule/register/payment/methods/iCo5.java diff --git a/MobArena.jar b/MobArena.jar index 665d8604484cc66123a8af286023709c524d45ec..4383762d69ec547407fc3edb6aba2e19ba0c2797 100644 GIT binary patch delta 107334 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 delta 77614 zcmY&;Q*hu9%HinFqQFYJ{v{3*{@-vy3&w?Wl`IEBoU8-`lPm}V zjST(65${TXWmWv?805zfQ?O*_C&IK&5D0*bnZeZ7*u^DOWzv2@2%R6T%;_v+DCCZ& zImCp>jaF_=BvA&WLPZ5Ro}>Yfmvpp-wRXh4*cTLTS2ux*2-EimVQBk-1PvalEbB9~ z$MmL4E%5#N3fBi_n_14}I^cRJsRzM_T10~4FNoltlCa6>;V~(e+RuGxdPS)x@dZTh zDuw)s#1(y~d#_ALf{HXMKN{q6xkht#;CK)X3uRW^Gz~j4s3Z}jii_Ld#A1oRkNjrY zLn|mRf1*lr`pPiw|zURO+)@E|-mjIK6m(Waa^=?3a zAErV+o1(69XGHLF?o+Qmux_mU!va)K{hQn(!40D+4z%*7F8MW3Kc6Ff-yNFOZf+85?B=e@p*PjWaF`#1Q@vtcAacvMyjacRrKp&3 z=t(h1Hf4hIC@vre#j(7{%oaDPnFpJTbn+mcx$dI^+mdxdhlayb+#_rQf&q-q9sI~{ zC4l_Q!q7ojb@h(xvWr4!q<1&~mv^`ak9)?yWHjFsU$40XZTTy(i|X}8l6t^WoAO$v zl_|ncTs8Canl_tI%U`nf6(NVUy3{|)Pb|kzB--x_YUcMoPP@LwPQQMmdQxX}Y-6;l z?b{dV|KjKWAp*ku2p6{|Sr~#9(09NSN9R9qYmDS4uDzc_&JQu_bKkVLA@b!yuv2Ms zv!R>?hZ;CpCCIkpXqxlJ9~L3{0A*n}El?G5=3$lv_URasM7Q?u3Wa-G9^ zvdPN|d_M0Y{qSP56T?0}`^sHF7nWx`GT2B~7_QStC`OI*D!bz-gpce5_Jz1|mERD*X3Bui`y#A&UbzO28Q)Y^BS;d}P#)(rNGO1_kM;RpxPF=1zFxMP! zc`}fP%o_DhGVf*Rs)W`9_^-H&bjSujSfNYqhIU}rX~M8>l47x}_eQClvj->PNmW9H zEk(mplBXZ2i8YDiG;b2CIzApN2>1)e zmg2o`Z@NDn&L2=@>R{{W?Ydl4u$wHTLmR1su`zE6M&GHdLeIEX*ecOS$@Px4MxfxG zg68;P^$nS`$)EgW^T1)5^@b~BF;tvnG7fN~Mq}XR!`6he1z;e$Ul8K5sF-6~&Dz)2 z(n}zh81*M?&v)&BI2Ias4v4x)rPEoN(n_ED>04rf!r3^hn%~aJ*>+*X3w~i0chu|@ zpVcEw_hcg8f~ZgvBoYh3@2MZ%{GHCY5A(@PlkqJ@^>T2rb|C}V%LG=ogAPz`UR&&7 zP5&5Af4e3{RbIW)YqHa_Y~JE=^q6oxKim%x3yF;Si63qP^{RZE&!?v>T>t!Y?*b~1 zq>}gH%`n}Dvb_vcWFV_@ty;_`!+vscAGhMLK=l3Gg2dz(jUYpP^ZtPdd1NF!(d?fg7)W51PiO#%{sQ4v!%r|!~?77q*Kd;Yaq4a6zBZ< zlc83!-uxnunHBrN|6*SQJmk;F&BCA|+d{c9Po23AR7MM8Vk6I(?#_PLBmQ#D^&HW6 z?qjfWLW!@*nkrMYZhJ7oe8K>R?Y^l>Vi|y;oAN9zqj>AITxMpMYzdkeF4fm)ZMy){ zCkSq|$Ew;qa~oRlK;9#fQ%&~jI{v^I4%vf4@JaapQ(0Pz5y21q$B%C4|6T6M1~Bjd zo;vy$!+0b4nn+X%XbHWbN@j@AuZmXGs1jl;wm=ywt&hO0LtIRb&VN^7X>XJd!}DMSN`Lsy$quC-~au;afhF<}PgKMl-pDE@+8{}_~pU{QG46;2OA1jpthHl9sg zhVRj$K5B1Ki7n-|J688oZ((bwrS2vX3ro~|fmcwDAgD4K;~JbjpwM+<EWa^0gN2l8lT6N}N`j>cDpwID*Mkmd3xMh=@tF8}yXwLmWh)3PS?BN)v7& zVFRP)ax4$OHJHT8S;2$Qe7rqyZ9FOcJ`FIhHWOANyZkT~tFA6Z+rzL_G5-F#^d(86Tt3&$KcC|dCU zu8KqC?YY2O7+Z5EZb~r#(+Jf4# z4Bh)rYq`LIT6Jry5wC2O-;mB7uWt**CX3EsquDhEa>hym+xd`y0$P!m)>Ya$80(v$ z11qBkt1K5~Q(WfGbotS`li_l;mRC>yAGq{;X%HzlIs@Pn_7pZf~e>^pzBUm`!5Hg3{Jb4`)Wg*jB1q&)j z9nvaNnCqOg2WN@^sgk%c#@#;omSS(gv%MM81i@SGfv@++k3sloK_V`v09kmzhy;ya zC}s~YyK-&LyAr|1>;`f0V6fNb4D2tH+EJEI#y4VM(Xi>u@IH=!r;fS>qT|M+OT*Pk zk(?{xTFdE7duM#C-wnGljvr*r)hT0Q`HH+NZce~rJcBjxqi9}RtVCEYIXi(tC^<|y zO~O$TcaW4iq^^W1R|>^f@tm-vTvo0)(>FGQ!8aNezR&{Q(x_05O+bY3s-I-M7Dc}4sh!b)A2dOkgvC;*^o>*7vmw=k=EV4FBh*&(6(Z-827>AIa5({Czm^Rj^AIb$6WAH+8U!94p|B(IT|Y zc%W`ywx16HX0yOM**6d19@}fL?mixs45}^a*$UwJ`kCXFaURih?boi>{7gn@{;*1!HQ+FzhrQ)$MvJ;aN}C(nx^ z8hamAOiQzRnq{gQruh|ras%rqnoWjBoRcG;IXOe`RyY7C<{FJK+)7aMz>!iVFp=b0 zY@Idq=|}gYW44epyavDg)*fq9;jNBWVx3=Hx(0;hCPZf|dl~#TqHeMBfnh-%sr~9z zSyls?nX_-?Uy#))foDV*HP3Z$hfCle2wc`~`P6m9$mK|EyYROeSqF9Ei^d&ckW8|- zHHeFg)rbK5in=MOfncI=5*}}80S%zaq?Rt4ntY?onn;jw_XcyI6)znNnWGj9?UYQI zUfKi``}p1| zgPy9;18qGDGo{kOP6U&3M?Ru*+qB_eK2#v~!wP^NTA5`dB8GUTXO^%Lap~Bl^Bop+ zmMJ7&&w)(f=O)@0UsUEk5ccONF^yYn#4Ru^R@Tv74=H#UpD`g{7sG1Isf7xjgG1h< zj!UbJK`A_9D?@)4y`0|RPP3+ec;PM;AP*wQr7XbhoQA1>;9S|&DRqxsZgsROo@Y9O z)C8msDschRA_73-B7%VkWx!}*mAF+djHkb^u>;pL+=B8p)!@mg( z(18#ZA`&}$87Aoa{r*Q;tBpcQ9*B4lhW>RBC|neTW|Rn(=|r6vHu{FANxCXv#ZtpT zRUX17lT)1!i>Z932C-Cn;R*pFb>H{mO@9C7sGG7G8A z-iVS^H{wzbf?0R@L}t}t`F2Ydmtgn%Pl9cXtDstU!5K`Zml+{e`X9#_t3c(CP9ec@ ztzr+h#5jk!VI09WPXh(T0VER|j7@OPBBlePl66Y@yA@)r1FfRMQ5FIlcQsPIx0-gY za737TeEa)8M99I;)AC*SmnM+z#ix*_^8_>rmoPaI0JXSoC~ifVGFRFHYg@5Z&C3c`YbXfh!>S9 zX&1ftKbW;V?Py%IJj6Z$NXO2hyb|&h!^~*50 zF5|HG!T>)|^%*-14at!4s7|Mx4uN-1-T2Tz#?d$UMk>t%V}ZFhfs27RmNd>NJSAN_ zzKQ!y6GB?1d$&DOj!CCm8k&uu!GtM6!NiDHxyrUeg1H~@d2N$ExLJPGP*2aen1^zKT;4cV<(%~N`9FzH9D_d z8g9-dGk$qPoi^Nv(ur-r0VSh>dX66BFv>^0GR`Og zyCrJwbx|Nt-dK{x9i3VGr_6IupTxj8+pzPhtLtlhd7slZvsx^NEK1uplUzIbbh!Oo z{WK{M;K>m^^;EA1{&%Tg7zXU^xLofFl^Az|VLX{y!e#t0Z@)q zOm@Noo9K<7?LP-TOor3y4`v@n9=T$ornLaJ{lT9Z8je&E=>1$*2wBMqJdi^RZp~S<{dF|{x#}f2*+t-F zX8HAT3jsb;0?UFzAa-URrLRzspf0`mFj+8tk%lb^Vau9vH=v5TawI%xmd{z(Gg53F-;aMp`(DV70<+8Ub8 z!K#vinmKjVW&D-)WP;jU)<)ABYbQw?;9d=>&jl&z%2H}av=Q5QWzvHtYD<<) zvw%lmQ=wSW5;piy82_E7ox=|JF|N^UdQzVYp=?|&X&&??B&o~M{Ae32q8q*yhR6F9 z|D>vXwAOQ${j~df`7UU+Q}vilh6SizYk@JdarEiEXb@ zCUvNE1W6|y$KEtP`VGCR+5?rlJP%pcJ`IW4>656dS*QF>0Lv*(cle>P1MBW2+!$(i z)v6DCFb1J>-FEDx9f=SuEbNF!vwnJ?fEl6Bs^lEz@RCS_;%Zs5X8Z`awYpM{t|tHJ z&Y`4O3Fcn|i?q8xCWb&l)^%MVlpu1pYRZ9eASw}lLqnc{4#IU=1!>eM{r`*&*Y*Qe= zlmMW7p(*8psFW~_-1HOOGW%exlsdEcsal=ao|=gPqm9bIu@(3R^~V)rTPlS1egwUX zyu^;z+#E%l6=xE*@N{W)NCErhp!D|F>R9NP3Z?C0Po2UQ*L8`f14|!_dO-&TP+yDk zscxpft=Z4@@U^GDt$0hey>lb8eRj+W$u3A^`Vj$My0NV zBJ=Z#Zs_!Z%&p%8X9jGdjww`6$crcvSTqI_$d8UpXJe8PX=bFBh;LF=k*rv>QtVFF z!QqUTbb!F}%p98E2UpL}V03@q69uu22rdrKw!V)O(VQ7YwauBiEW+KVqX!Nkf8EnL z*}sZ1Jnm;_nkFs5tbm5K@zwlC;{-RvtBd0w-_-po>-VMLLk5X(JU?oGRAw**^?ARO za^9?dZm~3-;q$_=LTO|T-s9bkX*%enT6v}oV&F+a%H0yT0>5oy@*hJWx7R~Ir*F>w z`730K4Jiaf)!D4$@hct}{)PX7Kfa*0aP2noAvVav(nxws%B zF8!!&gd;rY9Z@XgX7S6P4?Z-N{Ex%su*~z!j`~B_{hArM2v>qHAIlXvMN^Ih-w)7o zao`<{>Xz6ars1L_2b*be$Kh@gy;twNS;ATQ1>!?yxNbiyQPwJ0mN0c;Sr(+FJB)6% zC8RsZ{Q|w!$nW6Q?IWJR-|r!JTjF6n0ndIHASo!8$K4=@4{MY~d6kz63h3n+opcaM zZ@iQa>ldEjV(bm=-*uv{`gCnhD4a`F0SK+i5lD7I&Tu7PUO0LN2itgcY3B}T{qgYq zJkKi1OQ$F2zOPjAbP8%*)BHTsLbthlRc~`X7@_H=AF^-~e`5Hz?b~>PMIP7>UlTiB z=xVX}Jk3vZ4Q$@sP0R;%{WqBitS74Nf#*UZB_(4>b4Rnq7^>ebQbuIC{^>>0z*_&` zQ&r9ohmm$Ju-H-mMOXb;>D}$R7clTznn}YXU5>IYXM_HIU(g5Q2kci6zn_bC(`9I_ zmEYqVUv{I*A-CZeK*(lS?g#_7?ycHm#(wUR$X0ke=+az`4;)R0ZZK4M zHt!dg%d5loXKB=zrVj{ogtKW-;PU!N?6NAK_OGGxhx%9M+5y{DEeadSUQ~uB)p~60 zKBH0AW6Dd}zQb)>EJz!twnTAjTg}0?Iq{Mw`oE%Q^q7FelsBP%s)K4jvFY_uZ=a@o zeoOf7d_|1!7{LB%@F!d16>e`=PGn9F*;k#rM^Z!-!50Q@f2-ROd;hu+0Q#Lt|8(Q9 zzNN?+jQ03d_0r}Y&aGvc2Xa#fBi|Ku#iA}R5|Xp%UyloUgZwK^K_g(1Sd(ShWyv~ubBISPY# zfu17ZbQRMl6lqBolLglfKurvKm!KMM6pODlMYe>N%3pfWD2zX~3HK{N7Ed0cvD;u= z7*TsrP53bZ$4|v7B#boi@Br(2hVrFkT&Ykg2sHbF$vpUkngT3NDO*F>vu&kPD=`*PJw@+*V%ImZiB<5v}CQJ*P1Amx$# z>l&wye7|Va8YH|37$ItNenTQCTeSGehKzA(MtbdQxpd{z`}&a4&2|Qv^aLFcPtwAo z2#=^wRu@cCs%cgmaWAF*nv!W#W2qVkN;+5|Cd+FHXIIT4D$lz?r$mr)kk&n( zy7sviyPsOR|LXWT#D{5@8j&Cb*Loo7$kumIB&>x*1=0XOnGuV6ZUl*{9m8PaShZ52 zjFPJqGm~`8dm2n-<Vt&a{u~hV9Vb>|HSo|X)y1K6>O5)%jEb_Kcp-15}JL6v&F2Ot=!>#_;CTDol{9`#*KS15YtdOjHc19;5EZ!FjM` zti^jZ_eGpgcpRsrCbphsJLNm=tE>3e3l{hYwg7iZ!QTXyXkzKKPND6nEd;3a?aoDO z$+%1AL{@6M77*QT=)|?k`#QK3{qU+%=Vh3>7!M#o=)BfZ`QsIRqCM1tSP4Zri(S;? z(&<=a`@bLxmCfQI1jj#``B0Zrl_U&vwY96IL+%ZOn`DmgvVYekMwvW^FULAj7EElI z^V&r(9wK;)6jbbjg~Lu5i=ET{T*m1C7CrlCPwpPM<=Ty0M5@*i7*-mKulMhlO(&+$ zaJMoMu-4WU2}&<>f${EG(elL(qN~KS8S!g0X1k10F#Hd5biij7>hnTavF)NRq7!73 zojn$hfx|N+U#ABbsoDpgH_V47VIIls7Ct$_+-SKA)prJJylO5-S(*ySTdV0X>8VXr zS*mB42_H$rExX_BKqmjbSBHqzsI*HkJ4i<{pe`$Sn}o_3tr??3?4O5M*r{JWkz*&; z3C5Fb8M%V4M`aNIhjO`qac>hX8fzw!Gvx)!vjt7>dZmrFYd_D`N9)}&R^aw$b~w^) z9O^Y{Qq4O1lCbT)00V1PMQiSvfZ9H3W%R=H-}3kuu}H;=a!Cw)56CF6a~O?yp)$98 z0Pij7xb)3}m*XLFW~i6R1k-Td+V6p6l<_G7D0)9d&ukHY{*v((?fyoKY^x}!igbtW zMctvf&3PgC?c*m}Prd64GI!NqV*g!)D!69pR3PChJ1b9bk4JP8nrTz{Xvf=hh#uUZ zk_zpwAv1gy;0NL8S6?c@sf!{t2jv+EoS_KZR)NQJT@3xj4ZE2VC3n+XsM-#h!**0> zd->N$y(3inDB+zg7mx7pukXJk25C-8(ms+|^6VItOSgy<2}VeSasAWE)$}^GK*D*2 zmjsg?Mmd={6n}w?vTG8#n}m*V7L&n`dxi9!dxh>&8}5vREiH22kbwIK^-q4lS}p5~ z1?N==ab8m|+r1W3Ov9E{oCx}bLm}25M@z`lhC3kppEGliP=)VyoP{K=sS?*hz*77BQ3`6lGwyQXa zVjjsEV-8(6%Ufwl7IqX-TeAe5H`drv4au0k$QXYu+@ZvqQn1_L!nh32{teHGLWo3f5-oHrjI4~z@gbJxG&MDK(cLd{FtzQf{OX|;jcEqD zanj8Rb(z}IBDwWxs=-sBn7W-oNGa7llyzkw5xvD<%(+hKMI-J>XTui%jM?OB|1=E+ zJZ#k@zS=Tj`O|+jvTy2zUe(%YYFpwf>@8EtEnn5BNJk<-pOVw_@J%7WZbNZA_RdVy zR&@=f;W8F0JA__hMKZVa(2P6um``+^^+@~Jes10@o>Y~89 zBtgZ>t~-Png19|`xR0Whm7Sn1e-I&OoG+1ehJ&N6h>~GczEknru(KD|7QoOeJv>s| zot)H9aA*&Ys#Ck8p=nJ!)Ht*;=+qgvah)019R4G~A!<+TQ@`|IcZ`ghLERzY5yIhq zfrqTF(XbeP%n`tO7MxLg<=g^z)qGB|yUu2=a>aL5oV(OY3wRZEg$8t|UQN1Po5(KO zaj#!qX25J16O$E`CVb74E^9O8Ax;0%UEjkJ#@}3kX7x5GcNb^%t6m^4+Mp+m@uy^d zn`Xe-+KT6Kqe;D#3w@deX&u&l!s8+0 zT7dEEq;@G@ao*`*-f+%4-8W-#aFq=MSuKEz=P%V#F6vO z*Qz;Za!a*i-^t@1x~x}RSf-`uk3o4Z0uNEJvS z^f{D-Fa0(gQNBZarOu3P{P21mZZ5b1K%9-g}O6wxz zum#K9+pyeTCC0xKU?|&k0b#|sEAvAr-!e~#b77AGM%i7%Ny5|*>94=}jQTTAoa=^t zC%|jgzih!KS)I&dNUit}2 z8H~-vg$X2DB){VGXB#ZQY8q2CxaG75bFTH}XhGdV8YSj^yPKP|e*=2dmD@o{`%L<$ z9uxzbHnxgM{UPp3c8KBS`}kjy#=Oxoy#(+8a(7kU5tU5``=Ho$>B8dT^qXt@ppcE| zp~6dzmNBv>n%>6GYImpDuVHvWJ3z>NoLyl7I_d;D>b~k)9cRCS5& z_jaEwt(nStOrL7;OZjW9jgjL_3Um5~xWQcq1^?T5_Y+snX<}D8)n(^%Pr&8cOS!1W zKto9~&$ac{sMHP+4O77_RnewQLc7+#bXbfL38hU@KdNt>8t#Y-!CG3AS!p4AuQk&4 zzsfE#tJ9zrNPWx?qolS$V85{AB+EXPl^a@anW$_Mkq|Z|TMzN&?-DhhMR4X@)^Tmv zXwJ`zEcl0;x+J#n$h`1}3P?0s(mhXU*qbHSMs&=7VI{+fpJ&?=)kSL+x* z67Bj6Q(bLkg*Z!BMtcsQSpqDURDU!U2070+EFRLC=WHEsYiQfwW+xTay6HBzGa32& z4clY*aW7-?Hb4DbiQNsIdN@bK(H|#cj~+V+C5y*m#$K6HcvzG707gCfTZyD}^YsTL zrbz1bCF=FJ$!+%(^an9`stl9wCjactM`eIr6CHo`szXwzItSi5L2uDUR?zSJ ziFw$Cj0mTA0QI?>`DacKh0-HJpj*F^i>cSmVZi8{6Pr0`Xn&#mE5>ye)6gQB(UsNy?pkR5~V9P%@l<^W+j$Qx7@gf zdGaaz%r)z!+_?kYPJ;*uh^fpwhvt;w?kwr88oh&`3B9 zXmt=y>#RR#cRSj9!|BaFoA@^OmH6yMK`qQb_oZ6n_!zmY3$&MFd_`oQrfIB>>=Cz{ zB3%qMTg}(44{-A|?P`C+!xQUxnTAhgFjRXpz2#(B89gqrvSHN zceT0Dz7Q?@p&U7UAx`=f>m#)t8O{+-n#kG%5Q5;=tlA^Y`-g3L^gs>w|5Aqm8LMAA z55t(HQftgPByOX7Hgs2T7feCKe0_X3u}}sjr4I!;#;~`jPr~Zs@1*hutDw$UJ-u77 zez%XGm{L+UfrM?D^JO}F$iap9vz$e#PLN2<4#qm(aQDWol)*LOf};{OHPuL9KG``h zZQA<>gfGw20?Ue=^^(-FF-f_AJ0srWM3|#i(srjIt?XU^eV%k1_2PsCoK_HdS#h)< z9epTin3wC4fS8e32>%SQZZGga6H-8D6SJ0}ZTUR=A?Pumfd213HlHD;~f zimC0@rq7K7cN!W&LXj2DP$>&0^>E(Woon+N8r1drOKh}jNi}qR#A^e<1W~s&OiMGk zMjM1TnQmltPioDQjW-$2Ru9Eb=VUYKdHxOga0mD0dM-P`4WmhDUN0nGaamN}*uZ{j z%+1MZ9xTEWTL{9Q=`9eA>whP$jraWZ;rc-}R}SVt{_#Z={UYdmK2+8iZxecBk6{%A$>`Pe#?lk_^$V>XuP0F7mT7ZPf@nxm z7%mIKXRV<=o<2mw{paSWMxVb%_@m{Zf;$SRJN{22#R1_bRK5vdJ79FR^9KC=XYR3q zXBe$7WdVGmT1sO7$){Zf7bsn8cneWo9;lc58QSW^Q=?zT8zjSmc@RSIujQypZ4x@w zH9uQHEv`m0!2B7^^Z{&uX7gTHF44>`P++@wP)oQGf*@>u^`40bGN#cn&Xl7ac|aXc^C zx-i^Aiv=Vj!4jEqY zZt5|DG4@RrQd}{)CTwM)@-VfzXy{578@lu7Vz+>UbRAyF11UMXMYKm>xm>t$)PR*> z$P0f=>^zH3`&hHnr-T?nEZMCE%&s{ssx}gK7=<(HdGtUI^r(q9apq*blbE^D&0gp$ zpMsBTa(?d!JQ7?>MV9$N3E|D46kEmA5u-)wU|_-ZVf7uX9(k;vnGW1DPc`?1IqIOS zbQ_SK6em0G$T(at513&KO|b@)2+^GN%gHI47qPv3I-zC{Kmq{>%^(d(fvbb!5J8H! z1dsx)=;38`?bl*L%VlkMxj)%m7<0yHP{dBxY!c9!~Uw)j;Z%o4EIV;-@q2*eVZ<4TzI z&F4eOhMT3qm}+szS)dtVW>&!H})vXMcVY5ApumOtZ z9GP>Y2bmJoL#t13)D?-7@rMz5NX}!;WAksnP^QAcIglWWYVf9E^_mr6g0uGvTYg9^ zwq#p-mBv{I%A>K`z9~q~WGYfm+wQTlvSXA<%aA%F;J!i!pYxc82$3_|6Yy#WRSmSdRMHk;$Z>oyB%Av4KK#vTYbmS3o*qFw7+ z8ONXc)&E2<5|fysz@l3R0-lh6PFg$h5>azc@3Gy@B&^6(h~2M`q6B4!=-_JMoCU$2 zPGR;Vw_?w)qH@8Sm#5H&AFSSvIi!x+P!4GSjjw%%Z4Xl?o~a4JTl?i100GPqSA5h&xJ<{RrNH!s4&a#frSu6}7zO!Y`X5$YtNa_!vM6nsf z>Cqsk8E49p;~_a^%F<6E|4z7}1&xr4jNvg7oB78=?8WuZDSl6*bHve>&@2Zw+%4f? zzu9~HpL?6K3D%nQ+(f#gBR8;HgK~G}!IeE`W0m@^a0$9CxFe6SEoGhld{oiuC>8T* zeX7c_Iu-uu)<~B$TJ7pQBd9Z)B|(op?)aNeq~=fiPouKJm+Y{!8&~X!X`xF;4mqO} zA;gUk+*%^QYwIL9fmKMf6(v%RDh#Bq&BcTg#-|CQx!7r=`rcrH zLiOKMK1)_V@q7t4*Jtw%*X{ye>84+##$D zfzoY>pr-U>Ih63Hiuse;RazNa2g0GgPFdKLgzi*+M(AH6rr39E$LS}R{Hu@OX*gnf z>gVf)liW$AlYRkSx@AeG7u8%z1Ng(H7Y~@Ai>hp&&`Hj4(92GC!Jqi5jTrMmePK9^ zUXL!++ta!sH&)LXL_7Io+AlfwyBxuGMs-n~f_F{2r^t!$mTk-?>KDw<{4Gf_MDq-d zlfn&mjUBvqvtUj`<`jXo&6XYa_9%JV-Kev8E3~EicX!~vH;FR-93JXTA>;E{;4A+i zoS&dS=yq^h%-su)`G(_fzbnc}I?5Get0p(Nxr$`mp4%zv7iXL0^2*U~`JvD*Tm$Gx zI42E>bpwCoZ-U`o%A0Fyy;TrOcphwgY;o`f&mKY&R6&s-KlmuWpr?IRHLSdTDfrNZ zH7r~+^JAc1`1m0j?dhXz#@$&Oea)eT{7!Wh(6?otuRySj4%(@_^n((BqYCB+B~m_rHv3 z#M_bZ;Sh!ieCl0m8;yAp4)b<?m7|+-aG1oNO%JbZbkc8q~UoGsop0gxvsgL{) zphhg(RqJjbyQ$0kmeQ3gM;*=2|1k4$ecb)T7%7|y`<6t!V_yFoN%=REgoT~pixuMN zvuJ|<pnYUqM%lWnXlA2q|;eV?g*Q++0>LqRiA(FJ!68+nwJ2q}ODBM--|AGKS2l3&%jY|}pk`4(2i2NL)ya(}x{kn$kNl-j;!;Uwch~M|PEqYz>#r+1=e_#uK-!l3ipCbAl_r7N?mWe9$G%TK^$})w<~1dOSz+ zmoB~A>Exi=KlUuhWG|O4RqWv?!nN@<$yc!s)J(hTGzkA!zHBxL9&miLUihVoT`RDs z5xw5b!?^iN8M_vUCf(+N;AI`e3s8+J;%zfIkvpgz3)Uwb$?=f_2`eN4#|{T)|w|DTGVH@55|xbauBUh?Mi zXPpJ(eSi(vCq~v3WYhZ)*c+Q0`bG^-T+ahmlaEyA^qS!} zsJkhk%Y^-zMf&uw778Cd^jt@zYlQ^SfM<)0pxZS}n$PKcK_#hjlK{uX^Co2P0bg<}NfhTLHss6n0YAW4&!wCl$pg{WL*FC{R-j?mLqBCKIK2 zM^1j)^jqT=Jvhlsk%i{PGTm0jNE$}ksg2-kgMx67W4R{W!y(FY)u7O$)sU}@5$ghj z5j(qUmBe6+{;PKQQvN+R(6dUstGjrzlmZ`f`FQ~7E*qvCZHqvfwJd!e<(jvYO+I*z zVk~`qimpqecz=qjD}Xi8$U^qe~0F ztuh{MnhSg%ION%|dWEbXe2rGK^&Y0pPiOvNb{$MNLwd_;zr%=0VBI=t7 zWB&kta)mntMc3Q2w!WgZcIOy^Gu}sQJNU!kjWL=JzL?wc^=8ZOY1aSrC!ajX(iZ3q z!??H6=H3~=ygg@g*_1QsPh0(qG808Exsxnxn8rAcbu_lWP_mf&51T_;XPtG*qJjlc z74zp*Sb;}g=mjgDpJiPP6cSx1>4SC>*4-s=Fz=}qP(@U?3LBjOigNEqDTanDdde3&L{LV>?Qo{4A$Djk8 zPW*qjvzgY((QGrmGfr*NLMbGVH;NUx~Ka zEiUkM44;@v+{AL>G8NNKhX%vzv_(7SmaR~ePw=M}`Pbt{4ZMShx)bf;tsPUIL%4`P z-Uw40Y5FIQ#yxL-?sZ7Z2SbeIRoDXX%D|Pp6YVrfuo`)d*`w())8IN1kXT-%bG7`l zj|ho{-JE-bDfmc=8}?5b>f6|yGrUMWrnmKkb35ptXs%(u3HP?r2AIIaLH|IJV#N6i zrV%MUT4~WLgK#HjYb>i&Zd}qdhkrlCRO?iBuE0Fe)sOyaaBDcE*)GH2L%z=fH+m(~ zL8thfV1(AJw~5kc^0sTB5Tax5CQI^6$w`(bcbFO3Wb#hO@=OY44Se^Q*nErVWn19g z;hFQzx_wC=h;wfXI1nx7p6E305(Uma=rpa81uCpj?P!GxJujk6*@OWoA4DU0NTNId zxasWZ9@Q7wub46;asXFhnCcyH{Q}h+HVol?mA!#3CB<`&4mmCZE`Kj&LRWX(Fm>t)Gu+_?wDi`Xx8U0<_N%__nnOTgh(tL2=sbYYYzrM`JVfBiN8>{ z4-DGfAh(g!_IO69y^ah+1%Iu<^|0z5v3zrz>b`t*tz+<7 zf&8B4`E^b=gT89Wi2FxABEmDdo>@gWqWzo66q|rHD-oKD5LuH3<^=(e(1PJL@AG)P zRqLYeL%|}&{f>+~Y=B%5MnVwc{g0^51d$96pBm21jpCb{e*=gHg@>sHBXLGRJO?Q| zCY^$EMQzuM-8JF@YAY_KR}T*jvZ#%0vD=hB%|vn zVxvE-uJZEL@GoE(8egbUD-Mhcz6t+NBxHUVU&*zBPPKrj}inrM3qh#DiVT? zSS1cujagKn8SP|Lz!)9EJN$1p=qB_ZTs z-Q9$OArQ&SDdb)=m=Dc0>MYy72Uc_v-s8{s)=HFA^B4x@uhth-uqO(*|N*RbFeNVfpZbjuV_-JIUqI*m;7;Cxxtb#p~mtXbN z5@6XV7VbR^(6Bl-MQm_{F>YkPi#j@+vdZD$Eh$o_ zxL`Hb*kDB=h~iM=UvZQlQbvTBfwxrpH-9+t)DHE62FL0}{edoFnioe=)i4O*Q6Rcdb7z(or zPU_L4t}v{rq-&jPA!6O&ns3fY=~{nLI|Cf?aQPE7*(Qw8>7olbAw>Bn!Ffg)mz-@2 z7Q&{c|Cq-6ZZ8(!73kZR#DVYkSM@FVX~V}%C?9i4h-kx}bKkR(WcI<*>`#f75k63S z-6ib1$oItEr}SDY_;91jUus&_4}NrAc8$atdesSBd&pmJFno0?d?%9su**_ei39Kr z^=qh*YscKz=6HKBGh3Bx!?w@Vvs;w}w@CAL%pwi!`<`1a*Jl#1fZ=5seKs%CwI~wU zBrGu{C)j&bz<+Q5XF7eYu$dpmGlbt3iqK&eXAfiZ z8Ar-o`%?aKUO4XCAi~ip{{+3%N^jG5zxu7}KTYXFWKK*T67bO|-bU4yA+Y;`+@gQn zLAf}-ZK^|DIpei+$8VFkxQqIce3>OZeS6#Vp_+Lv3AGR``2!zNgJU1wYY(J+Ezuq( zN4Ks-{KGpB+i+fa-K*Yn1H{gm>IMvWu$>2i zC8tN9^(P8i;Mn(cvC{Y7i2~9Ln>=vrk?RWi{^D+u=!fx*;4$v}c4d=D)p0^^8)7-$ zCM9KDxzldG_Josf-e-7C8vu}ssv$m;E@#UEpOA|^(x0f(9bra2={cszkO%@Hd}i)$ z>X1YLpHE>b5lyA4v>t=?onZ}ImvotLrSo?37-qz!thVwbqBYy5HvnRNB?EKRVFG<% zYL$%kibY#Wup5KU{Fb{7^C)5C2yP(R{p8~K!#RJZhRrD>Jway07>T_P`2u06E%WmF zBDTpZ0$DH2>>_;3`0wwR1D5zdH4uZV!c=E)YPni-Q0%iLkC%9uvja7XTKkc`EB(x4 zEhF+VN^IRb$9y12w*k=v59pj$cNO|=v9?FCaSWm%uv?nRCyRP{A5hR+CT2Kg`;Jpbw+6HS`6qCKS z)W$Bw^2SAn{?dzMl3_K!Ef2BQTk*%yf!~Ew{3g5g#|Qznw?N!-IdfWch~PHi@90~2 z`~anQfXT*^_BA!*m9>;(9oK{|aq3d-En3>qC?+OhDSB(!;{*zdl#VR0%E*-G2>E8x zXif|Uq#I_`yZ=7OfawG+VV`&GrxLWF! zOgnfA$WRxyKhofig+1~7To%U|dnSydc*{Nn4%#If1%TG8eO32}u51(!Xcf=~X}&vE z=i9bz#U;wQH9I-CvZQm7 zp7j#ehkVaSS>JXocxy}!)n`ILe-eI6hQv;s9_zORm5-NjET)$nOc@Z>0qskQ zBB4&}*X_VpOrh$xnn%)_q+O*2uUDuIzQoqwin^T#Z$vy|hp3xsag^pPEL$Az{t13T z!PO{oXPQc>WF|Gfu%_-=dU17gQS`^AVbFUw&DJWWidZBGvFS5I@n@ zh3_b%dv5${3&~no@_I39yx7s` z?S!G@LWS}lu#{7HMv>h(v8iqS{GN2^Mz-p)D02~aZpl@AyVjmmKghnoxQZ6~#I_OI zCcF*PHiI5(A-7ZCcG=e83?|-ockcY2aqXCs025h4Q{TfOOK>9B2~}h5RMdn@U?ag& zY6y>0<78mrQQ(}^V{u)C%cB54W!^5GwUHePHB|U(XqRgs&b6iE%;7Wcp(oCNTe$Pt zZ7Ra6xAkdjnHcuk@*rOqkZE>n(SAa=5cHqAYTH=PqM>Th23k_K+qag37GZurwMo

oIhxZowbv~G=M}L{+dts!;(+mTAa8f6=3^RNX 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 diff --git a/bin/plugin.yml b/bin/plugin.yml index e263597..e7b01bf 100644 --- a/bin/plugin.yml +++ b/bin/plugin.yml @@ -1,6 +1,6 @@ name: MobArena main: com.garbagemule.MobArena.MobArena -version: 0.92.4 +version: 0.93 softdepend: [MultiVerse,XcraftGate] commands: ma: diff --git a/language files/announcements_da.properties b/language files/announcements_da.properties index f78db35..42d61f2 100644 --- a/language files/announcements_da.properties +++ b/language files/announcements_da.properties @@ -7,6 +7,8 @@ JOIN_IN_OTHER_ARENA=Du er allerede i en arena. Forlad den først. JOIN_ARENA_NOT_ENABLED=Arenaen er deaktiveret. JOIN_ARENA_NOT_SETUP=Arenaen er ikke blevet sat op endnu. JOIN_ARENA_PERMISSION=Du har ikke rettigheder til den arena! +JOIN_FEE_REQUIRED=Du er for fattig. Pris: % +JOIN_FEE_PAID=Prisen for at joine var: % JOIN_ARENA_IS_RUNNING=Arenaen er allerede startet. JOIN_ALREADY_PLAYING=Du spiller allerede! JOIN_ARG_NEEDED=Arenanavn påkrævet. Skriv /ma arenas for en liste. diff --git a/language files/announcements_fr.properties b/language files/announcements_fr.properties index 2bfb9b3..6f2b9d3 100644 --- a/language files/announcements_fr.properties +++ b/language files/announcements_fr.properties @@ -7,6 +7,8 @@ JOIN_IN_OTHER_ARENA=Vous êtes déjà dans l'arène! Quittez-la avant. JOIN_ARENA_NOT_ENABLED=Cetta arène n'est pas active. JOIN_ARENA_NOT_SETUP=Cette arène n'a pas encore été configurée. JOIN_ARENA_PERMISSION=Vous n'avez pas la permission pour rejoindre cette arène. +JOIN_FEE_REQUIRED=Pas assez d'argent. Prix: % +JOIN_FEE_PAID=Le prix pour rejoindre était de: % JOIN_ARENA_IS_RUNNING=L'arène est déjà occupée. JOIN_ALREADY_PLAYING=Vous êtes déjà en train de jouer. JOIN_ARG_NEEDED=Vous devez spécifier une arène. Entrez "/ma arenas" pour la liste. diff --git a/language files/announcements_pirate.properties b/language files/announcements_pirate.properties index 97100ee..0afaf05 100644 --- a/language files/announcements_pirate.properties +++ b/language files/announcements_pirate.properties @@ -7,6 +7,8 @@ JOIN_IN_OTHER_ARENA=Ye're already at sea, scallywag! JOIN_ARENA_NOT_ENABLED=We be swabbing down the decks on this ship, matey. JOIN_ARENA_NOT_SETUP=Arrrgh! We be missing the top sail! JOIN_ARENA_PERMISSION=Arrgh! Ye can't board this ship, scurvy dog! +JOIN_FEE_REQUIRED=Ye don't own enough doubloons, matey! Price: % +JOIN_FEE_PAID=Booty ye gave up to join: % JOIN_ARENA_IS_RUNNING=That ship has sailed, landlubber! JOIN_ALREADY_PLAYING=Ye be aboard already, ye scurvy dog! JOIN_ARG_NEEDED=Which ship are ye boarding? Type /ma arenas for a list, arrgh! diff --git a/src/com/garbagemule/MobArena/Arena.java b/src/com/garbagemule/MobArena/Arena.java index bf7a163..06e05a1 100644 --- a/src/com/garbagemule/MobArena/Arena.java +++ b/src/com/garbagemule/MobArena/Arena.java @@ -53,6 +53,7 @@ import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; import org.bukkit.util.config.Configuration; import com.garbagemule.MobArena.MAMessages.Msg; @@ -65,11 +66,11 @@ public class Arena protected String name; protected World world; protected boolean enabled, protect, logging, running, setup, lobbySetup, autoEquip, forceRestore, softRestore, softRestoreDrops, emptyInvJoin, emptyInvSpec, pvp, monsterInfight, allowWarp; - protected boolean edit, waveClear, detCreepers, detDamage, lightning, hellhounds; + protected boolean edit, waveClear, detCreepers, detDamage, lightning, hellhounds, specOnDeath, shareInArena; protected Location p1, p2, l1, l2, arenaLoc, lobbyLoc, spectatorLoc; protected Map spawnpoints; - // Wave/reward fields + // Wave/reward/entryfee fields protected int spawnTaskId, waveDelay, waveInterval, specialModulo, spawnMonstersInt, maxIdleTime; protected MASpawnThread spawnThread; protected Map> everyWaveMap, afterWaveMap; @@ -79,9 +80,10 @@ public class Arena protected Map> classItems, classArmor; protected Map>> classBonuses; protected Map> rewardMap; + protected List entryFee; // Arena sets/maps - protected Set livePlayers, deadPlayers, readyPlayers, specPlayers; + protected Set livePlayers, deadPlayers, readyPlayers, specPlayers, waitPlayers, hasPaid; protected Set monsters; protected Set blocks; protected Set pets; @@ -99,7 +101,6 @@ public class Arena // Logging protected ArenaLog log; - //protected List log = new LinkedList(); protected List classDistribution = new LinkedList(); protected Map waveMap = new HashMap(); protected Map killMap = new HashMap(); @@ -123,6 +124,8 @@ public class Arena deadPlayers = new HashSet(); readyPlayers = new HashSet(); specPlayers = new HashSet(); + waitPlayers = new HashSet(); + hasPaid = new HashSet(); monsters = new HashSet(); blocks = new HashSet(); pets = new HashSet(); @@ -151,10 +154,10 @@ public class Arena // Assign random classes, and if all get kicked, return. for (Player p : randoms) assignRandomClass(p); - if (livePlayers.isEmpty()) return; + if (livePlayers.isEmpty()) + return; // Set the spawn flags to enable monster spawning. - //MAUtils.setSpawnFlags(plugin, world, 1, true, true); MAUtils.setSpawnFlags(plugin, world, 1, allowMonsters, allowAnimals); // Teleport players. @@ -212,6 +215,8 @@ public class Arena { running = false; + MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_END), true); + // Logging stuff if (logging) { @@ -238,6 +243,7 @@ public class Arena // Clear all the sets and maps. livePlayers.clear(); deadPlayers.clear(); + waitPlayers.clear(); pets.clear(); classMap.clear(); rewardMap.clear(); @@ -250,7 +256,6 @@ public class Arena // Set the spawn flags to restore monster spawning. MAUtils.setSpawnFlags(plugin, world, spawnMonsters, allowMonsters, allowAnimals); - MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_END)); // Notify listeners. for (MobArenaListener listener : plugin.getAM().listeners) @@ -338,13 +343,16 @@ public class Arena boolean clear = false; Location old = locations.get(p); - Chunk chunk = old.getWorld().getChunkAt(old); - if (!old.getWorld().isChunkLoaded(chunk)) - old.getWorld().loadChunk(chunk); - else - old.getWorld().refreshChunk(chunk.getX(), chunk.getZ()); - - p.teleport(old); + if (old != null) + { + Chunk chunk = old.getWorld().getChunkAt(old); + if (!old.getWorld().isChunkLoaded(chunk)) + old.getWorld().loadChunk(chunk); + else + old.getWorld().refreshChunk(chunk.getX(), chunk.getZ()); + + p.teleport(old); + } locations.remove(p); // get, then remove, because of Teleport Event // Only clear the inventory if the player has class items. @@ -352,8 +360,13 @@ public class Arena if (livePlayers.remove(p)) clear = true; deadPlayers.remove(p); specPlayers.remove(p); + hasPaid.remove(p); removePets(p); + // Update the monster targets. + if (running && spawnThread != null) + spawnThread.updateTargets(); + // Clear inventory and record current wave if (clear) { @@ -365,6 +378,9 @@ public class Arena if (!emptyInvJoin) MAUtils.restoreInventory(p); + // Grant rewards. + MAUtils.giveRewards(p, rewardMap.remove(p), plugin); + if (running && livePlayers.isEmpty()) endArena(); else if (!readyPlayers.isEmpty() && readyPlayers.equals(livePlayers)) @@ -377,7 +393,7 @@ public class Arena public void playerDeath(final Player p) { - p.teleport(arenaLoc); // This will sometimes force players to drop any items held (not confirmed) + p.teleport(arenaLoc); // This will sometimes force players to drop any items held (not confirmed) p.teleport(spectatorLoc); p.setFireTicks(0); p.setHealth(20); @@ -386,18 +402,28 @@ public class Arena livePlayers.remove(p); deadPlayers.add(p); removePets(p); + + // Update the monster targets. + if (running && spawnThread != null) + spawnThread.updateTargets(); // Has to be delayed for TombStone not to fuck shit up. - if (running && livePlayers.isEmpty()) - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, - new Runnable() + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, + new Runnable() + { + public void run() { - public void run() + if (!specOnDeath) { - MAUtils.restoreInventory(p); - endArena(); + plugin.getAM().arenaMap.remove(p); + playerLeave(p); } - }, 10); + else MAUtils.restoreInventory(p); + + if (livePlayers.isEmpty()) + endArena(); + } + }, 8); MAUtils.tellAll(this, MAMessages.get(Msg.PLAYER_DIED, p.getName())); @@ -443,8 +469,8 @@ public class Arena return; } - MAUtils.giveItems(p, classItems.get(className), autoEquip); - MAUtils.giveItems(p, classArmor.get(className), autoEquip); + MAUtils.giveItems(p, classItems.get(className), autoEquip, plugin); + MAUtils.giveItems(p, classArmor.get(className), autoEquip, plugin); int pets = MAUtils.getPetAmount(p); if (pets > 0) petMap.put(p, pets); @@ -456,7 +482,7 @@ public class Arena List classes = new LinkedList(plugin.getAM().classes); String className = classes.remove(r.nextInt(classes.size())); - while (!MobArena.has(p, "mobarena.classes." + className)) + while (!plugin.has(p, "mobarena.classes." + className)) { if (classes.isEmpty()) { @@ -476,7 +502,7 @@ public class Arena for (Map.Entry> entry : rewardMap.entrySet()) { MAUtils.tellPlayer(entry.getKey(), MAMessages.get(Msg.REWARDS_GIVE)); - MAUtils.giveRewards(entry.getKey(), entry.getValue()); + MAUtils.giveRewards(entry.getKey(), entry.getValue(), plugin); } } @@ -506,14 +532,22 @@ public class Arena private void removePets() { for (Wolf w : pets) + { + w.setOwner(null); w.remove(); + } } private void removePets(Player p) { for (Wolf w : pets) - if (((Player) w.getOwner()).getName().equals(p.getName())) - w.remove(); + { + if (!((Player) w.getOwner()).getName().equals(p.getName())) + continue; + + w.setOwner(null); + w.remove(); + } petMap.remove(p); } @@ -561,6 +595,8 @@ public class Arena pvp = config.getBoolean(arenaPath + "pvp-enabled", false); monsterInfight = config.getBoolean(arenaPath + "monster-infight", false); allowWarp = config.getBoolean(arenaPath + "allow-teleporting", false); + specOnDeath = config.getBoolean(arenaPath + "spectate-on-death", true); + shareInArena = config.getBoolean(arenaPath + "share-items-in-arena", true); joinDistance = config.getInt(arenaPath + "max-join-distance", 0); playerLimit = config.getInt(arenaPath + "player-limit", 0); repairDelay = config.getInt(arenaPath + "repair-delay", 5); @@ -573,6 +609,7 @@ public class Arena distSpecial = MAUtils.getArenaDistributions(config, configName, "special"); everyWaveMap = MAUtils.getArenaRewardMap(config, configName, "every"); afterWaveMap = MAUtils.getArenaRewardMap(config, configName, "after"); + entryFee = MAUtils.getEntryFee(config, configName); p1 = MAUtils.getArenaCoord(config, world, configName, "p1"); p2 = MAUtils.getArenaCoord(config, world, configName, "p2"); @@ -833,9 +870,7 @@ public class Arena for (Block b : event.blockList()) { if (!(b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN)) - { continue; - } event.setCancelled(true); return; @@ -966,7 +1001,7 @@ public class Arena event.getDrops().clear(); waveMap.put(p, spawnThread.wave - 1); playerDeath(p); - p.getInventory().clear(); // For TombStone + //p.getInventory().clear(); // For TombStone return; } @@ -1049,7 +1084,7 @@ public class Arena // Lobby Listener public void onPlayerDropItem(PlayerDropItemEvent event) { - if (running) return; + if (running && shareInArena) return; Player p = event.getPlayer(); if (!livePlayers.contains(p)) @@ -1134,7 +1169,7 @@ public class Arena if (!classes.contains(className) && !className.equalsIgnoreCase("random")) return; - if (!MobArena.hasDefTrue(p, "mobarena.classes." + className) && !className.equalsIgnoreCase("random")) + if (!plugin.hasDefTrue(p, "mobarena.classes." + className) && !className.equalsIgnoreCase("random")) { MAUtils.tellPlayer(p, MAMessages.get(Msg.LOBBY_CLASS_PERMISSION)); return; @@ -1188,7 +1223,7 @@ public class Arena Location to = event.getTo(); Location from = event.getFrom(); - if (livePlayers.contains(p)) + if (livePlayers.contains(p) || specPlayers.contains(p)) { if (inRegion(from)) { @@ -1325,6 +1360,99 @@ public class Arena }, maxIdleTime); } + public void delayRestoreInventory(final Player p, final String method) + { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, + new Runnable() + { + public void run() + { + if (method.equals("restoreInventory")) + MAUtils.restoreInventory(p); + else if (method.equals("giveRewards")) + MAUtils.giveRewards(p, rewardMap.get(p), plugin); + } + }, 10); + } + + public boolean canAfford(Player p) + { + if (entryFee.isEmpty()) + return true; + + PlayerInventory inv = p.getInventory(); + for (ItemStack stack : entryFee) + { + // Economy money + if (stack.getTypeId() == MobArena.ECONOMY_MONEY_ID) + { + if (plugin.Methods.hasMethod() && !plugin.Method.getAccount(p.getName()).hasEnough(stack.getAmount())) + return false; + } + // Normal stack + else + { + if (!inv.contains(stack.getTypeId(), stack.getAmount())) + return false; + } + } + + return true; + } + + public boolean takeFee(Player p) + { + if (entryFee.isEmpty()) + return true; + + PlayerInventory inv = p.getInventory(); + for (ItemStack stack : entryFee) + { + // Economy money + if (stack.getTypeId() == MobArena.ECONOMY_MONEY_ID) + { + if (plugin.Methods.hasMethod() && !plugin.Method.getAccount(p.getName()).subtract(stack.getAmount())) + return false; + } + + // Normal stack + else + { + int id = stack.getTypeId(); + int amount = stack.getAmount(); + + while (amount > 0) + { + int pos = inv.first(id); + if (pos == -1) return false; + + ItemStack is = inv.getItem(pos); + if (is.getAmount() > amount) + { + is.setAmount(is.getAmount() - amount); + amount = 0; + } + else + { + amount -= is.getAmount(); + inv.setItem(pos, null); + } + } + } + } + + hasPaid.add(p); + return true; + } + + public void refund(Player p) + { + if (!hasPaid.contains(p)) + return; + + MAUtils.giveItems(p, entryFee, false, plugin); + } + /** * The "perfect equals method" cf. "Object-Oriented Design and Patterns" * by Cay S. Horstmann. diff --git a/src/com/garbagemule/MobArena/ArenaLog.java b/src/com/garbagemule/MobArena/ArenaLog.java index 25394cf..b7403c7 100644 --- a/src/com/garbagemule/MobArena/ArenaLog.java +++ b/src/com/garbagemule/MobArena/ArenaLog.java @@ -97,7 +97,7 @@ public class ArenaLog // Kills buffy.append(MAUtils.padLeft(arena.killMap.remove(p).toString(), KILLS, ' ') + " "); // Rewards - buffy.append(MAUtils.listToString(arena.rewardMap.get(p))); + buffy.append(MAUtils.listToString(arena.rewardMap.get(p), plugin)); log.add(buffy.toString()); } diff --git a/src/com/garbagemule/MobArena/ArenaMaster.java b/src/com/garbagemule/MobArena/ArenaMaster.java index 7dedf60..66e1116 100644 --- a/src/com/garbagemule/MobArena/ArenaMaster.java +++ b/src/com/garbagemule/MobArena/ArenaMaster.java @@ -257,6 +257,9 @@ public class ArenaMaster config.setProperty("arenas." + configName + ".settings.protect", true); config.save(); config.load(); + config.setProperty("arenas." + configName + ".settings.entry-fee", ""); + config.save(); + config.load(); config.setProperty("arenas." + configName + ".settings.logging", false); config.setProperty("arenas." + configName + ".settings.clear-wave-before-next", false); config.setProperty("arenas." + configName + ".settings.detonate-creepers", false); @@ -272,6 +275,8 @@ public class ArenaMaster config.setProperty("arenas." + configName + ".settings.pvp-enabled", false); config.setProperty("arenas." + configName + ".settings.monster-infight", false); config.setProperty("arenas." + configName + ".settings.allow-teleporting", false); + config.setProperty("arenas." + configName + ".settings.spectate-on-death", true); + config.setProperty("arenas." + configName + ".settings.share-items-in-arena", true); config.save(); config.load(); config.setProperty("arenas." + configName + ".settings.player-limit", 0); diff --git a/src/com/garbagemule/MobArena/MACommands.java b/src/com/garbagemule/MobArena/MACommands.java index 836c3f2..9dd8225 100644 --- a/src/com/garbagemule/MobArena/MACommands.java +++ b/src/com/garbagemule/MobArena/MACommands.java @@ -118,7 +118,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("join") || base.equals("j")) { - if (!player || !MobArena.has(p, "mobarena.use.join")) + if (!player || !plugin.has(p, "mobarena.use.join")) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -150,12 +150,14 @@ public class MACommands implements CommandExecutor error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_NOT_ENABLED)); else if (!arena.setup || arena.edit) error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_NOT_SETUP)); - else if (arena.running) + else if (arena.running && arena.waitPlayers.add(p)) error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_IS_RUNNING)); else if (arena.livePlayers.contains(p)) error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ALREADY_PLAYING)); - else if (!MobArena.has(p, "mobarena.arenas." + arena.configName())) + else if (!plugin.has(p, "mobarena.arenas." + arena.configName())) error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_ARENA_PERMISSION)); + else if (!arena.canAfford(p) || !arena.takeFee(p)) + error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_FEE_REQUIRED, MAUtils.listToString(arena.entryFee, plugin))); else if (arena.playerLimit > 0 && arena.livePlayers.size() >= arena.playerLimit) error = MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_PLAYER_LIMIT_REACHED)); else if (arena.emptyInvJoin && !MAUtils.hasEmptyInventory(p)) @@ -168,12 +170,22 @@ public class MACommands implements CommandExecutor // If there was an error, don't join. if (error) + { + arena.refund(p); return true; + } + + // If player is in a boat/minecart, eject! + if (p.isInsideVehicle()) + p.leaveVehicle(); am.arenaMap.put(p,arena); arena.playerJoin(p, p.getLocation()); MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_PLAYER_JOINED)); + if (!arena.entryFee.isEmpty()) + MAUtils.tellPlayer(p, MAMessages.get(Msg.JOIN_FEE_PAID, MAUtils.listToString(arena.entryFee, plugin))); + return true; } @@ -182,7 +194,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("leave") || base.equals("l")) { - if (!player || !MobArena.has(p, "mobarena.use.leave")) + if (!player || !plugin.has(p, "mobarena.use.leave")) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -213,7 +225,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("spectate") || base.equals("spec")) { - if (!player || !MobArena.has(p, "mobarena.use.spectate")) + if (!player || !plugin.has(p, "mobarena.use.spectate")) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -257,6 +269,10 @@ public class MACommands implements CommandExecutor if (error) return true; + // If player is in a boat/minecart, eject! + if (p.isInsideVehicle()) + p.leaveVehicle(); + am.arenaMap.put(p,arena); arena.playerSpec(p, p.getLocation()); @@ -269,7 +285,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("arenas")) { - String list = MAUtils.listToString(am.arenas); + String list = MAUtils.listToString(am.arenas, plugin); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_LIST_ARENAS, list)); return true; } @@ -288,7 +304,7 @@ public class MACommands implements CommandExecutor return true; } - String list = MAUtils.listToString(arena.getLivingPlayers()); + String list = MAUtils.listToString(arena.getLivingPlayers(), plugin); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_LIST_PLAYERS, list)); } else @@ -297,7 +313,7 @@ public class MACommands implements CommandExecutor List players = new LinkedList(); for (Arena arena : am.arenas) players.addAll(arena.getLivingPlayers()); - buffy.append(MAUtils.listToString(players)); + buffy.append(MAUtils.listToString(players, plugin)); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_LIST_PLAYERS, buffy.toString())); } return true; @@ -333,7 +349,7 @@ public class MACommands implements CommandExecutor return true; } - String list = MAUtils.listToString(arena.getNonreadyPlayers()); + String list = MAUtils.listToString(arena.getNonreadyPlayers(), plugin); MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_LIST_PLAYERS, list)); return true; } @@ -351,7 +367,7 @@ public class MACommands implements CommandExecutor */ if ((base.equals("enable") || base.equals("disable"))) { - if (!console && !(player && MobArena.has(p, "mobarena.admin.enable")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.admin.enable")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -385,7 +401,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("restore")) { - if (!console && !(player && MobArena.has(p, "mobarena.admin.restore")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.admin.restore")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -412,7 +428,7 @@ public class MACommands implements CommandExecutor { if (arg1.equals("end")) { - if (!console && !(player && MobArena.has(p, "mobarena.admin.force.end")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.admin.force.end")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -446,7 +462,7 @@ public class MACommands implements CommandExecutor } else if (arg1.equals("start")) { - if (!console && !(player && MobArena.has(p, "mobarena.admin.force.start")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.admin.force.start")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -492,7 +508,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("config")) { - if (!console && !(player && MobArena.has(p, "mobarena.admin.config.reload")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.admin.config.reload")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -514,7 +530,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("arena")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.arena")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.arena")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -540,7 +556,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("setarena")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.setarena")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.setarena")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -569,7 +585,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("addarena")) { - if (!(player && MobArena.has(p, "mobarena.setup.addarena")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.addarena")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -597,7 +613,7 @@ public class MACommands implements CommandExecutor if (base.equals("delarena")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.delarena")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.delarena")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -633,7 +649,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("protect")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.protect")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.protect")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -699,7 +715,7 @@ public class MACommands implements CommandExecutor if (base.equals("editarena")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.editarena")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.editarena")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -768,7 +784,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("setregion")) { - if (!(player && MobArena.has(p, "mobarena.setup.setregion")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.setregion")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -790,7 +806,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("expandregion")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.expandregion")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.expandregion")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -835,7 +851,7 @@ public class MACommands implements CommandExecutor if (base.equals("showregion")) { - if (!(player && MobArena.has(p, "mobarena.setup.showregion")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.showregion")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -887,7 +903,7 @@ public class MACommands implements CommandExecutor if (base.equals("setlobbyregion")) { - if (!(player && MobArena.has(p, "mobarena.setup.setlobbyregion")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.setlobbyregion")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -906,7 +922,7 @@ public class MACommands implements CommandExecutor if (base.equals("expandlobbyregion")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.expandlobbyregion")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.expandlobbyregion")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -954,7 +970,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("setwarp")) { - if (!(player && MobArena.has(p, "mobarena.setup.setwarp")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.setwarp")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -975,7 +991,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("spawnpoints")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.spawnpoints")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.spawnpoints")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -1006,7 +1022,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("addspawn")) { - if (!(player && MobArena.has(p, "mobarena.setup.addspawn")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.addspawn")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -1027,7 +1043,7 @@ public class MACommands implements CommandExecutor */ if (base.equals("delspawn")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.delspawn")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.delspawn")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -1047,7 +1063,7 @@ public class MACommands implements CommandExecutor if (base.equals("auto-generate")) { - if (!(player && MobArena.has(p, "mobarena.setup.autogenerate")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.autogenerate")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -1072,7 +1088,7 @@ public class MACommands implements CommandExecutor if (base.equals("auto-degenerate")) { - if (!console && !(player && MobArena.has(p, "mobarena.setup.autodegenerate")) && !op) + if (!console && !(player && plugin.has(p, "mobarena.setup.autodegenerate")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -1102,7 +1118,7 @@ public class MACommands implements CommandExecutor if (base.equals("dooooo") && arg1.equals("it") && arg2.equals("hippie") && arg3.equals("monster")) { - if (!(player && MobArena.has(p, "mobarena.setup.autogenerate")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.autogenerate")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; @@ -1121,7 +1137,7 @@ public class MACommands implements CommandExecutor if (base.equals("undo") && arg1.equals("it") && arg2.equals("hippie") && arg3.equals("monster")) { - if (!(player && MobArena.has(p, "mobarena.setup.autodegenerate")) && !op) + if (!(player && plugin.has(p, "mobarena.setup.autodegenerate")) && !op) { MAUtils.tellPlayer(sender, MAMessages.get(Msg.MISC_NO_ACCESS)); return true; diff --git a/src/com/garbagemule/MobArena/MAMessages.java b/src/com/garbagemule/MobArena/MAMessages.java index 1b8bfda..71e5015 100644 --- a/src/com/garbagemule/MobArena/MAMessages.java +++ b/src/com/garbagemule/MobArena/MAMessages.java @@ -24,6 +24,8 @@ public class MAMessages JOIN_ARENA_NOT_ENABLED, JOIN_ARENA_NOT_SETUP, JOIN_ARENA_PERMISSION, + JOIN_FEE_REQUIRED, + JOIN_FEE_PAID, JOIN_ARENA_IS_RUNNING, JOIN_ALREADY_PLAYING, JOIN_ARG_NEEDED, @@ -77,6 +79,8 @@ public class MAMessages defaults.put(Msg.JOIN_ARENA_NOT_ENABLED, "This arena is not enabled."); defaults.put(Msg.JOIN_ARENA_NOT_SETUP, "This arena has not been set up yet."); defaults.put(Msg.JOIN_ARENA_PERMISSION, "You don't have permission to join this arena."); + defaults.put(Msg.JOIN_FEE_REQUIRED, "Insufficient funds. Price: %"); + defaults.put(Msg.JOIN_FEE_PAID, "Price to join was: %"); defaults.put(Msg.JOIN_ARENA_IS_RUNNING, "This arena is in already progress."); defaults.put(Msg.JOIN_ALREADY_PLAYING, "You are already playing!"); defaults.put(Msg.JOIN_ARG_NEEDED, "You must specify an arena. Type /ma arenas for a list."); @@ -101,7 +105,7 @@ public class MAMessages defaults.put(Msg.FORCE_END_ENDED, "Forced arena end."); defaults.put(Msg.FORCE_END_IDLE, "You weren't quick enough!"); defaults.put(Msg.REWARDS_GIVE, "Here are all of your rewards!"); - defaults.put(Msg.LOBBY_DROP_ITEM, "No sharing before the arena starts!"); + defaults.put(Msg.LOBBY_DROP_ITEM, "No sharing allowed at this time!"); defaults.put(Msg.LOBBY_PLAYER_READY, "You have been flagged as ready!"); defaults.put(Msg.LOBBY_PICK_CLASS, "You must first pick a class!"); defaults.put(Msg.LOBBY_RIGHT_CLICK, "Punch the sign. Don't right-click."); diff --git a/src/com/garbagemule/MobArena/MAPlayerListener.java b/src/com/garbagemule/MobArena/MAPlayerListener.java index 67341bc..71d9720 100644 --- a/src/com/garbagemule/MobArena/MAPlayerListener.java +++ b/src/com/garbagemule/MobArena/MAPlayerListener.java @@ -24,7 +24,7 @@ public class MAPlayerListener extends PlayerListener } public void onPlayerInteract(PlayerInteractEvent event) - { + { if (!am.enabled) return; for (Arena arena : am.arenas) arena.onPlayerInteract(event); diff --git a/src/com/garbagemule/MobArena/MASpawnThread.java b/src/com/garbagemule/MobArena/MASpawnThread.java index 049f908..3042f39 100644 --- a/src/com/garbagemule/MobArena/MASpawnThread.java +++ b/src/com/garbagemule/MobArena/MASpawnThread.java @@ -41,7 +41,6 @@ public class MASpawnThread implements Runnable private Random random; private MobArena plugin; private Arena arena; - private final double MIN_DISTANCE = 256; public MASpawnThread(MobArena plugin, Arena arena) { @@ -132,7 +131,21 @@ public class MASpawnThread implements Runnable ItemStack reward = MAUtils.getRandomReward(rewards); arena.rewardMap.get(p).add(reward); - MAUtils.tellPlayer(p, MAMessages.get(Msg.WAVE_REWARD, MAUtils.toCamelCase(reward.getType().toString()) + ":" + reward.getAmount())); + if (reward == null) + { + MAUtils.tellPlayer(p, "ERROR! Problem with economy rewards. Notify server host!"); + System.out.println("[MobArena] ERROR! Could not add null reward. Please check the config-file!"); + } + else if (reward.getTypeId() == MobArena.ECONOMY_MONEY_ID) + { + if (plugin.Methods.hasMethod()) + MAUtils.tellPlayer(p, MAMessages.get(Msg.WAVE_REWARD, plugin.Method.format(reward.getAmount()))); + else System.out.println("[MobArena] ERROR! No economy plugin detected!"); + } + else + { + MAUtils.tellPlayer(p, MAMessages.get(Msg.WAVE_REWARD, MAUtils.toCamelCase(reward.getType().toString()) + ":" + reward.getAmount())); + } } } @@ -199,7 +212,6 @@ public class MASpawnThread implements Runnable else if (ran < dGhasts) mob = CreatureType.GHAST; else return; - // 5 on purpose - Ghasts act weird in Overworld. switch(mob) { case CREEPER: @@ -308,7 +320,7 @@ public class MASpawnThread implements Runnable continue; } - if (s.distanceSquared(p.getLocation()) > MIN_DISTANCE) + if (s.distanceSquared(p.getLocation()) > MobArena.MIN_PLAYER_DISTANCE) continue; result.add(s); @@ -340,14 +352,14 @@ public class MASpawnThread implements Runnable { if (!arena.world.equals(p.getWorld())) { - System.out.println("[MobArena] MASpawnThread:326: Player '" + p.getName() + "' is not in the right world. Force leaving..."); + System.out.println("[MobArena] MASpawnThread:329: Player '" + p.getName() + "' is not in the right world. Force leaving..."); arena.playerLeave(p); MAUtils.tellPlayer(p, "You warped out of the arena world."); continue; } dist = p.getLocation().distanceSquared(e.getLocation()); //double dist = MAUtils.distance(p.getLocation(), e.getLocation()); - if (dist < current && dist < MIN_DISTANCE) + if (dist < current && dist < MobArena.MIN_PLAYER_DISTANCE) { current = dist; result = p; @@ -355,4 +367,18 @@ public class MASpawnThread implements Runnable } return result; } + + /** + * Update the targets of all monsters, if their targets aren't alive. + */ + public void updateTargets() + { + for (Entity e : arena.monsters) + { + if (arena.livePlayers.contains(((Creature) e).getTarget())) + continue; + + ((Creature) e).setTarget(getClosestPlayer(e)); + } + } } \ No newline at end of file diff --git a/src/com/garbagemule/MobArena/MAUtils.java b/src/com/garbagemule/MobArena/MAUtils.java index 9a45599..0b66ee3 100644 --- a/src/com/garbagemule/MobArena/MAUtils.java +++ b/src/com/garbagemule/MobArena/MAUtils.java @@ -161,6 +161,11 @@ public class MAUtils return result; } + public static List getEntryFee(Configuration config, String arena) + { + return makeItemStackList(config.getString("arenas." + arena + ".settings.entry-fee", null)); + } + /** * Takes a comma-separated list of items in the : format and * returns a list of ItemStacks created from that data. @@ -176,7 +181,6 @@ public class MAUtils string = string.substring(0, string.length()-1); String[] items = string.split(","); - for (String item : items) { // Trim whitespace and split by colons. @@ -185,17 +189,21 @@ public class MAUtils // Grab the amount. int amount = 1; - if (parts.length == 2 && parts[1].matches("(-)?[0-9]+")) + if (parts.length == 1 && parts[0].matches("\\$[0-9]+")) + amount = Integer.parseInt(parts[0].substring(1, parts[0].length())); + else if (parts.length == 2 && parts[1].matches("(-)?[0-9]+")) amount = Integer.parseInt(parts[1]); else if (parts.length == 3 && parts[2].matches("(-)?[0-9]+")) amount = Integer.parseInt(parts[2]); + // Make the ItemStack. ItemStack stack = (parts.length == 3) ? makeItemStack(parts[0], amount, parts[1]) : makeItemStack(parts[0], amount); - result.add(stack); + if (stack != null) + result.add(stack); } return result; } @@ -443,15 +451,26 @@ public class MAUtils /** * Gives the player all of the items in the list of ItemStacks. */ - public static void giveItems(Player p, List stacks, boolean autoEquip, boolean rewards) + public static void giveItems(Player p, List stacks, boolean autoEquip, boolean rewards, MobArena plugin) { - PlayerInventory inv = p.getInventory(); + if (stacks == null) + return; + PlayerInventory inv = p.getInventory(); for (ItemStack stack : stacks) { if (stack == null) continue; + // If this is money, don't add to inventory. + if (stack.getTypeId() == MobArena.ECONOMY_MONEY_ID) + { + if (plugin != null && plugin.Methods.hasMethod()) + plugin.Method.getAccount(p.getName()).add(stack.getAmount()); + + continue; + } + // If these are rewards, don't tamper with them. if (rewards) { @@ -459,36 +478,28 @@ public class MAUtils continue; } - // If this is an armor piece, equip it and continue. + // If this is an armor piece, equip it. if (autoEquip && ARMORS_TYPE.contains(stack.getType())) { equipArmorPiece(stack, inv); continue; } - // If this is a sword, set its durability to "unlimited". - //if (SWORDS_TYPE.contains(stack.getType())) + // If this is a weapon, set its durability to "unlimited". if (WEAPONS_TYPE.contains(stack.getType())) stack.setDurability((short) -32768); - /*if (stack.getAmount() < 0) - { - stack = new ItemStack(stack.getType(), 32768); - inv.setItem(inv.firstEmpty(), stack); - continue; - }*/ inv.addItem(stack); } } - - public static void giveItems(Player p, List stacks, boolean autoEquip) + public static void giveRewards(Player p, List stacks, MobArena plugin) { - giveItems(p, stacks, autoEquip, false); + giveItems(p, stacks, false, true, plugin); } - public static void giveRewards(Player p, List stacks) + public static void giveItems(Player p, List stacks, boolean autoEquip, MobArena plugin) { - giveItems(p, stacks, false, true); + giveItems(p, stacks, autoEquip, false, plugin); } public static int getPetAmount(Player p) @@ -522,8 +533,12 @@ public class MAUtils } /* Helper methods for making ItemStacks out of strings and ints */ - private static ItemStack makeItemStack(String name, int amount, String data) + public static ItemStack makeItemStack(String name, int amount, String data) { + // If this is economy money, create a dummy ItemStack. + if (name.matches("\\$[0-9]+")) + return new ItemStack(MobArena.ECONOMY_MONEY_ID, amount); + try { byte offset = 0; @@ -548,7 +563,10 @@ public class MAUtils return null; } } - private static ItemStack makeItemStack(String name, int amount) { return makeItemStack(name, amount, "0"); } + public static ItemStack makeItemStack(String name, int amount) + { + return makeItemStack(name, amount, "0"); + } /* Helper method for grabbing a random reward */ public static ItemStack getRandomReward(List rewards) @@ -879,13 +897,15 @@ public class MAUtils /** * Sends a message to all players in and around the arena. */ - public static void tellAll(Arena arena, String msg) + public static void tellAll(Arena arena, String msg) { tellAll(arena, msg, false); } + public static void tellAll(Arena arena, String msg, boolean waitPlayers) { Set tmp = new HashSet(); tmp.addAll(arena.livePlayers); tmp.addAll(arena.deadPlayers); tmp.addAll(arena.specPlayers); tmp.addAll(arena.readyPlayers); + if (waitPlayers) tmp.addAll(arena.waitPlayers); for (Player p : tmp) tellPlayer(p, msg); } @@ -964,7 +984,7 @@ public class MAUtils /** * Turn a list into a space-separated string-representation of the list. */ - public static String listToString(List list, boolean none) + public static String listToString(List list, boolean none, MobArena plugin) { if (list.isEmpty()) { @@ -975,6 +995,7 @@ public class MAUtils } StringBuffer buffy = new StringBuffer(); + int trimLength = 0; E type = list.get(0); if (type instanceof Player) @@ -987,10 +1008,21 @@ public class MAUtils } else if (type instanceof ItemStack) { + trimLength = 2; ItemStack stack; for (E e : list) { stack = (ItemStack) e; + if (stack.getTypeId() == MobArena.ECONOMY_MONEY_ID) + { + if (plugin.Methods.hasMethod()) + { + buffy.append(plugin.Method.format(stack.getAmount())); + buffy.append(", "); + } + continue; + } + buffy.append(stack.getType().toString().toLowerCase()); buffy.append(":"); buffy.append(stack.getAmount()); @@ -1005,9 +1037,9 @@ public class MAUtils buffy.append(" "); } } - return buffy.toString(); + return buffy.toString().substring(0, buffy.length() - trimLength); } - public static String listToString(List list) { return listToString(list, true); } + public static String listToString(List list, MobArena plugin) { return listToString(list, true, plugin); } /** * Returns a String-list version of a comma-separated list. diff --git a/src/com/garbagemule/MobArena/MobArena.java b/src/com/garbagemule/MobArena/MobArena.java index 1d705e7..be9a23d 100644 --- a/src/com/garbagemule/MobArena/MobArena.java +++ b/src/com/garbagemule/MobArena/MobArena.java @@ -16,6 +16,8 @@ import org.bukkit.util.config.Configuration; import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; +import com.garbagemule.register.payment.Method; +import com.garbagemule.register.payment.Methods; /** * MobArena @@ -27,11 +29,15 @@ public class MobArena extends JavaPlugin private ArenaMaster am; // Permissions stuff - protected static PermissionHandler permissionHandler; + private PermissionHandler permissionHandler; - public MobArena() - { - } + // Economy stuff + protected Methods Methods; + protected Method Method; + + // Global variables + protected static final double MIN_PLAYER_DISTANCE = 256.0; + protected static final int ECONOMY_MONEY_ID = -29; public void onEnable() { @@ -46,6 +52,14 @@ public class MobArena extends JavaPlugin // Permissions setupPermissions(); + // Economy + Methods = new Methods(); + if (!Methods.hasMethod() && Methods.setMethod(this)) + { + Method = Methods.getMethod(); + System.out.println("[MobArena] Payment method found (" + Method.getName() + " version: " + Method.getVersion() + ")"); + } + // Bind the /ma, /marena, and /mobarena commands to MACommands. MACommands commandExecutor = new MACommands(this, am); getCommand("ma").setExecutor(commandExecutor); @@ -68,7 +82,7 @@ public class MobArena extends JavaPlugin pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Highest, this); pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Highest, this); - pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.Highest, this); + pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Priority.High, this); // mcMMO is "Highest" pm.registerEvent(Event.Type.ENTITY_DEATH, entityListener, Priority.Lowest, this); // Lowest because of Tombstone pm.registerEvent(Event.Type.ENTITY_REGAIN_HEALTH, entityListener, Priority.Normal, this); pm.registerEvent(Event.Type.ENTITY_EXPLODE, entityListener, Priority.Highest, this); @@ -81,11 +95,20 @@ public class MobArena extends JavaPlugin } public void onDisable() - { + { + // Force all arenas to end. for (Arena arena : am.arenas) arena.forceEnd(); am.arenaMap.clear(); + // Permissions & Economy + permissionHandler = null; + if (Methods != null && Methods.hasMethod()) + { + Methods = null; + System.out.println("[MobArena] Payment method was disabled. No longer accepting payments."); + } + System.out.println("[MobArena] disabled."); } @@ -143,13 +166,13 @@ public class MobArena extends JavaPlugin } // Permissions stuff - public static boolean has(Player p, String s) + public boolean has(Player p, String s) { //return (permissionHandler != null && permissionHandler.has(p, s)); return (permissionHandler == null || permissionHandler.has(p, s)); } - public static boolean hasDefTrue(Player p, String s) + public boolean hasDefTrue(Player p, String s) { return (permissionHandler == null || permissionHandler.has(p, s)); } diff --git a/src/com/garbagemule/register/payment/Method.java b/src/com/garbagemule/register/payment/Method.java new file mode 100644 index 0000000..921b9cf --- /dev/null +++ b/src/com/garbagemule/register/payment/Method.java @@ -0,0 +1,62 @@ +package com.garbagemule.register.payment; + +import org.bukkit.plugin.Plugin; + +/** + * Method.java + * Interface for all sub-methods for payment. + * + * @author: Nijikokun (@nijikokun) + * @copyright: Copyright (C) 2011 + * @license: GNUv3 Affero License + */ +public interface Method { + public Object getPlugin(); + public String getName(); + public String getVersion(); + public String format(double amount); + public boolean hasBanks(); + public boolean hasBank(String bank); + public boolean hasAccount(String name); + public boolean hasBankAccount(String bank, String name); + public MethodAccount getAccount(String name); + public MethodBankAccount getBankAccount(String bank, String name); + public boolean isCompatible(Plugin plugin); + public void setPlugin(Plugin plugin); + + public interface MethodAccount { + public double balance(); + public boolean set(double amount); + public boolean add(double amount); + public boolean subtract(double amount); + public boolean multiply(double amount); + public boolean divide(double amount); + public boolean hasEnough(double amount); + public boolean hasOver(double amount); + public boolean hasUnder(double amount); + public boolean isNegative(); + public boolean remove(); + + @Override + public String toString(); + } + + public interface MethodBankAccount { + public double balance(); + public String getBankName(); + public int getBankId(); + public boolean set(double amount); + public boolean add(double amount); + public boolean subtract(double amount); + public boolean multiply(double amount); + public boolean divide(double amount); + public boolean hasEnough(double amount); + public boolean hasOver(double amount); + public boolean hasUnder(double amount); + public boolean isNegative(); + public boolean remove(); + + @Override + public String toString(); + } +} diff --git a/src/com/garbagemule/register/payment/Methods.java b/src/com/garbagemule/register/payment/Methods.java new file mode 100644 index 0000000..a8eb99f --- /dev/null +++ b/src/com/garbagemule/register/payment/Methods.java @@ -0,0 +1,141 @@ +package com.garbagemule.register.payment; + +import com.garbagemule.register.payment.methods.BOSE6; +import com.garbagemule.register.payment.methods.BOSE7; + +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; + +import java.util.HashSet; +import java.util.Set; + +/** + * Methods.java + * Controls the getting / setting of methods & the method of payment used. + * + * @author: Nijikokun (@nijikokun) + * @copyright: Copyright (C) 2011 + * @license: GNUv3 Affero License + */ +public class Methods { + private boolean self = false; + private Method Method = null; + private String preferred = ""; + private Set Methods = new HashSet(); + private Set Dependencies = new HashSet(); + private Set Attachables = new HashSet(); + + public Methods() { + this._init(); + } + + /** + * Allows you to set which economy plugin is most preferred. + * + * @param preferred - preferred economy plugin + */ + public Methods(String preferred) { + this._init(); + + if(this.Dependencies.contains(preferred)) { + this.preferred = preferred; + } + } + + private void _init() { + this.addMethod("iConomy", new com.garbagemule.register.payment.methods.iCo4()); + this.addMethod("iConomy", new com.garbagemule.register.payment.methods.iCo5()); + this.addMethod("BOSEconomy", new BOSE6()); + this.addMethod("BOSEconomy", new BOSE7()); + this.addMethod("Essentials", new com.garbagemule.register.payment.methods.EE17()); + } + + public Set getDependencies() { + return Dependencies; + } + + public Method createMethod(Plugin plugin) { + for (Method method: Methods) { + if (method.isCompatible(plugin)) { + method.setPlugin(plugin); + return method; + } + } + + return null; + } + + private void addMethod(String name, Method method) { + Dependencies.add(name); + Methods.add(method); + } + + public boolean hasMethod() { + return (Method != null); + } + + public boolean setMethod(Plugin method) { + if(hasMethod()) return true; + if(self) { self = false; return false; } + + int count = 0; + boolean match = false; + Plugin plugin; + PluginManager manager = method.getServer().getPluginManager(); + + for(String name: this.getDependencies()) { + if(hasMethod()) break; + if(method.getDescription().getName().equals(name)) plugin = method; else plugin = manager.getPlugin(name); + if(plugin == null) continue; + + Method current = this.createMethod(plugin); + if(current == null) continue; + + if(this.preferred.isEmpty()) + this.Method = current; + else { + this.Attachables.add(current); + } + } + + if(!this.preferred.isEmpty()) { + do { + if(hasMethod()) { + match = true; + } else { + for(Method attached: this.Attachables) { + if(attached == null) continue; + + if(hasMethod()) { + match = true; + break; + } + + if(this.preferred.isEmpty()) this.Method = attached; + + if(count == 0) { + if(this.preferred.equalsIgnoreCase(attached.getName())) + this.Method = attached; + } else { + this.Method = attached; + } + } + + count++; + } + } while(!match); + } + + return hasMethod(); + } + + public Method getMethod() { + return Method; + } + + public boolean checkDisabled(Plugin method) { + if(!hasMethod()) return true; + if (Method.isCompatible(method)) Method = null; + return (Method == null); + } +} diff --git a/src/com/garbagemule/register/payment/methods/BOSE.java b/src/com/garbagemule/register/payment/methods/BOSE.java new file mode 100644 index 0000000..1b73443 --- /dev/null +++ b/src/com/garbagemule/register/payment/methods/BOSE.java @@ -0,0 +1,196 @@ +package com.garbagemule.register.payment.methods; + +import com.garbagemule.register.payment.Method; + +import cosine.boseconomy.BOSEconomy; +import org.bukkit.plugin.Plugin; + +public class BOSE implements Method { + private BOSEconomy BOSEconomy; + + public BOSEconomy getPlugin() { + return this.BOSEconomy; + } + + public String getName() { + return "BOSEconomy"; + } + + public String getVersion() { + return "0.6.2"; + } + + public String format(double amount) { + String currency = this.BOSEconomy.getMoneyNamePlural(); + if(amount == 1) currency = this.BOSEconomy.getMoneyName(); + return amount + " " + currency; + } + + public boolean hasBanks() { + return true; + } + + public boolean hasBank(String bank) { + return this.BOSEconomy.bankExists(bank); + } + + public boolean hasAccount(String name) { + return this.BOSEconomy.playerRegistered(name, false); + } + + public boolean hasBankAccount(String bank, String name) { + return this.BOSEconomy.isBankOwner(bank, name); + } + + public MethodAccount getAccount(String name) { + if(!hasAccount(name)) return null; + return new BOSEAccount(name, this.BOSEconomy); + } + + public MethodBankAccount getBankAccount(String bank, String name) { + return new BOSEBankAccount(bank, name, BOSEconomy); + } + + public boolean isCompatible(Plugin plugin) { + return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy; + } + + public void setPlugin(Plugin plugin) { + BOSEconomy = (BOSEconomy)plugin; + } + + public class BOSEAccount implements MethodAccount { + private String name; + private BOSEconomy BOSEconomy; + + public BOSEAccount(String name, BOSEconomy bOSEconomy) { + this.name = name; + this.BOSEconomy = bOSEconomy; + } + + public double balance() { + return Double.valueOf(this.BOSEconomy.getPlayerMoney(this.name)); + } + + public boolean set(double amount) { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.setPlayerMoney(this.name, IntAmount, false); + } + + public boolean add(double amount) { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.addPlayerMoney(this.name, IntAmount, false); + } + + public boolean subtract(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance - IntAmount), false); + } + + public boolean multiply(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance * IntAmount), false); + } + + public boolean divide(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance / IntAmount), false); + } + + public boolean hasEnough(double amount) { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) { + return (this.balance() < amount); + } + + public boolean isNegative() { + return (this.balance() < 0); + } + + public boolean remove() { + return false; + } + } + + public class BOSEBankAccount implements MethodBankAccount { + private String bank; + private String name; + private BOSEconomy BOSEconomy; + + public BOSEBankAccount(String bank, String name, BOSEconomy bOSEconomy) { + this.name = name; + this.bank = bank; + this.BOSEconomy = bOSEconomy; + } + + public String getBankName() { + return this.bank; + } + + public int getBankId() { + return -1; + } + + public double balance() { + return Double.valueOf(this.BOSEconomy.getBankMoney(name)); + } + + public boolean set(double amount) { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.setBankMoney(name, IntAmount, true); + } + + public boolean add(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(this.name, (balance + IntAmount), false); + } + + public boolean subtract(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(this.name, (balance - IntAmount), false); + } + + public boolean multiply(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(this.name, (balance * IntAmount), false); + } + + public boolean divide(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(this.name, (balance / IntAmount), false); + } + + public boolean hasEnough(double amount) { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) { + return (this.balance() < amount); + } + + public boolean isNegative() { + return (this.balance() < 0); + } + + public boolean remove() { + return this.BOSEconomy.removeBank(bank); + } + } +} \ No newline at end of file diff --git a/src/com/garbagemule/register/payment/methods/BOSE6.java b/src/com/garbagemule/register/payment/methods/BOSE6.java new file mode 100644 index 0000000..3ca97f6 --- /dev/null +++ b/src/com/garbagemule/register/payment/methods/BOSE6.java @@ -0,0 +1,195 @@ +package com.garbagemule.register.payment.methods; + +import com.garbagemule.register.payment.Method; + +import cosine.boseconomy.BOSEconomy; +import org.bukkit.plugin.Plugin; + +public class BOSE6 implements Method { + private BOSEconomy BOSEconomy; + + public BOSEconomy getPlugin() { + return this.BOSEconomy; + } + + public String getName() { + return "BOSEconomy"; + } + + public String getVersion() { + return "0.6.2"; + } + + public String format(double amount) { + String currency = this.BOSEconomy.getMoneyNamePlural(); + if(amount == 1) currency = this.BOSEconomy.getMoneyName(); + return amount + " " + currency; + } + + public boolean hasBanks() { + return true; + } + + public boolean hasBank(String bank) { + return this.BOSEconomy.bankExists(bank); + } + + public boolean hasAccount(String name) { + return this.BOSEconomy.playerRegistered(name, false); + } + + public boolean hasBankAccount(String bank, String name) { + return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name); + } + + public MethodAccount getAccount(String name) { + if(!hasAccount(name)) return null; + return new BOSEAccount(name, this.BOSEconomy); + } + + public MethodBankAccount getBankAccount(String bank, String name) { + if(!hasBankAccount(bank, name)) return null; + return new BOSEBankAccount(bank, BOSEconomy); + } + + public boolean isCompatible(Plugin plugin) { + return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy && plugin.getDescription().getVersion().equals("0.6.2"); + } + + public void setPlugin(Plugin plugin) { + BOSEconomy = (BOSEconomy)plugin; + } + + public class BOSEAccount implements MethodAccount { + private String name; + private BOSEconomy BOSEconomy; + + public BOSEAccount(String name, BOSEconomy bOSEconomy) { + this.name = name; + this.BOSEconomy = bOSEconomy; + } + + public double balance() { + return Double.valueOf(this.BOSEconomy.getPlayerMoney(this.name)); + } + + public boolean set(double amount) { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.setPlayerMoney(this.name, IntAmount, false); + } + + public boolean add(double amount) { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.addPlayerMoney(this.name, IntAmount, false); + } + + public boolean subtract(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance - IntAmount), false); + } + + public boolean multiply(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance * IntAmount), false); + } + + public boolean divide(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance / IntAmount), false); + } + + public boolean hasEnough(double amount) { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) { + return (this.balance() < amount); + } + + public boolean isNegative() { + return (this.balance() < 0); + } + + public boolean remove() { + return false; + } + } + + public class BOSEBankAccount implements MethodBankAccount { + private String bank; + private BOSEconomy BOSEconomy; + + public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) { + this.bank = bank; + this.BOSEconomy = bOSEconomy; + } + + public String getBankName() { + return this.bank; + } + + public int getBankId() { + return -1; + } + + public double balance() { + return Double.valueOf(this.BOSEconomy.getBankMoney(bank)); + } + + public boolean set(double amount) { + int IntAmount = (int)Math.ceil(amount); + return this.BOSEconomy.setBankMoney(bank, IntAmount, true); + } + + public boolean add(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance + IntAmount), false); + } + + public boolean subtract(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance - IntAmount), false); + } + + public boolean multiply(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance * IntAmount), false); + } + + public boolean divide(double amount) { + int IntAmount = (int)Math.ceil(amount); + int balance = (int)this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance / IntAmount), false); + } + + public boolean hasEnough(double amount) { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) { + return (this.balance() < amount); + } + + public boolean isNegative() { + return (this.balance() < 0); + } + + public boolean remove() { + return this.BOSEconomy.removeBank(bank); + } + } +} \ No newline at end of file diff --git a/src/com/garbagemule/register/payment/methods/BOSE7.java b/src/com/garbagemule/register/payment/methods/BOSE7.java new file mode 100644 index 0000000..18e98fa --- /dev/null +++ b/src/com/garbagemule/register/payment/methods/BOSE7.java @@ -0,0 +1,189 @@ +package com.garbagemule.register.payment.methods; + +import com.garbagemule.register.payment.Method; + +import cosine.boseconomy.BOSEconomy; +import org.bukkit.plugin.Plugin; + +/** + * @author Acrobot + */ + +public class BOSE7 implements Method { + private BOSEconomy BOSEconomy; + + public BOSEconomy getPlugin() { + return this.BOSEconomy; + } + + public String getName() { + return "BOSEconomy"; + } + + public String getVersion() { + return "0.7.0"; + } + + public String format(double amount) { + String currency = this.BOSEconomy.getMoneyNamePlural(); + if(amount == 1) currency = this.BOSEconomy.getMoneyName(); + return amount + " " + currency; + } + + public boolean hasBanks() { + return true; + } + + public boolean hasBank(String bank) { + return this.BOSEconomy.bankExists(bank); + } + + public boolean hasAccount(String name) { + return this.BOSEconomy.playerRegistered(name, false); + } + + public boolean hasBankAccount(String bank, String name) { + return this.BOSEconomy.isBankOwner(bank, name) || this.BOSEconomy.isBankMember(bank, name); + } + + public MethodAccount getAccount(String name) { + if(!hasAccount(name)) return null; + return new BOSEAccount(name, this.BOSEconomy); + } + + public MethodBankAccount getBankAccount(String bank, String name) { + if(!hasBankAccount(bank, name)) return null; + return new BOSEBankAccount(bank, BOSEconomy); + } + + public boolean isCompatible(Plugin plugin) { + return plugin.getDescription().getName().equalsIgnoreCase("boseconomy") && plugin instanceof BOSEconomy && !plugin.getDescription().getVersion().equals("0.6.2"); + } + + public void setPlugin(Plugin plugin) { + BOSEconomy = (BOSEconomy)plugin; + } + + public class BOSEAccount implements MethodAccount { + private String name; + private BOSEconomy BOSEconomy; + + public BOSEAccount(String name, BOSEconomy bOSEconomy) { + this.name = name; + this.BOSEconomy = bOSEconomy; + } + + public double balance() { + return this.BOSEconomy.getPlayerMoneyDouble(this.name); + } + + public boolean set(double amount) { + return this.BOSEconomy.setPlayerMoney(this.name, amount, false); + } + + public boolean add(double amount) { + return this.BOSEconomy.addPlayerMoney(this.name, amount, false); + } + + public boolean subtract(double amount) { + double balance = this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance - amount), false); + } + + public boolean multiply(double amount) { + double balance = this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance * amount), false); + } + + public boolean divide(double amount) { + double balance = this.balance(); + return this.BOSEconomy.setPlayerMoney(this.name, (balance / amount), false); + } + + public boolean hasEnough(double amount) { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) { + return (this.balance() < amount); + } + + public boolean isNegative() { + return (this.balance() < 0); + } + + public boolean remove() { + return false; + } + } + + public class BOSEBankAccount implements MethodBankAccount { + private String bank; + private BOSEconomy BOSEconomy; + + public BOSEBankAccount(String bank, BOSEconomy bOSEconomy) { + this.bank = bank; + this.BOSEconomy = bOSEconomy; + } + + public String getBankName() { + return this.bank; + } + + public int getBankId() { + return -1; + } + + public double balance() { + return this.BOSEconomy.getBankMoneyDouble(bank); + } + + public boolean set(double amount) { + return this.BOSEconomy.setBankMoney(bank, amount, true); + } + + public boolean add(double amount) { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance + amount), false); + } + + public boolean subtract(double amount) { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance - amount), false); + } + + public boolean multiply(double amount) { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance * amount), false); + } + + public boolean divide(double amount) { + double balance = this.balance(); + return this.BOSEconomy.setBankMoney(bank, (balance / amount), false); + } + + public boolean hasEnough(double amount) { + return (this.balance() >= amount); + } + + public boolean hasOver(double amount) { + return (this.balance() > amount); + } + + public boolean hasUnder(double amount) { + return (this.balance() < amount); + } + + public boolean isNegative() { + return (this.balance() < 0); + } + + public boolean remove() { + return this.BOSEconomy.removeBank(bank); + } + } +} \ No newline at end of file diff --git a/src/com/garbagemule/register/payment/methods/EE17.java b/src/com/garbagemule/register/payment/methods/EE17.java new file mode 100644 index 0000000..388483f --- /dev/null +++ b/src/com/garbagemule/register/payment/methods/EE17.java @@ -0,0 +1,200 @@ +package com.garbagemule.register.payment.methods; + +import com.earth2me.essentials.Essentials; +import com.earth2me.essentials.api.Economy; +import com.earth2me.essentials.api.NoLoanPermittedException; +import com.earth2me.essentials.api.UserDoesNotExistException; +import com.garbagemule.register.payment.Method; + + +import org.bukkit.plugin.Plugin; + +public class EE17 implements Method { + private Essentials Essentials; + + public Essentials getPlugin() { + return this.Essentials; + } + + public String getName() { + return "Essentials"; + } + + public String getVersion() { + return "2.2"; + } + + public String format(double amount) { + return Economy.format(amount); + } + + public boolean hasBanks() { + return false; + } + + public boolean hasBank(String bank) { + return false; + } + + public boolean hasAccount(String name) { + return Economy.playerExists(name); + } + + public boolean hasBankAccount(String bank, String name) { + return false; + } + + public MethodAccount getAccount(String name) { + if(!hasAccount(name)) return null; + return new EEcoAccount(name); + } + + public MethodBankAccount getBankAccount(String bank, String name) { + return null; + } + + public boolean isCompatible(Plugin plugin) { + try { Class.forName("com.earth2me.essentials.api.Economy"); } + catch(Exception e) { return false; } + + return plugin.getDescription().getName().equalsIgnoreCase("essentials") && plugin instanceof Essentials; + } + + public void setPlugin(Plugin plugin) { + Essentials = (Essentials)plugin; + } + + public class EEcoAccount implements MethodAccount { + private String name; + + public EEcoAccount(String name) { + this.name = name; + } + + public double balance() { + Double balance = 0.0; + + try { + balance = Economy.getMoney(this.name); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] Failed to grab balance in Essentials Economy: " + ex.getMessage()); + } + + return balance; + } + + public boolean set(double amount) { + try { + Economy.setMoney(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + return false; + } catch (NoLoanPermittedException ex) { + System.out.println("[REGISTER] No loan permitted in Essentials Economy: " + ex.getMessage()); + return false; + } + + return true; + } + + public boolean add(double amount) { + try { + Economy.add(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + return false; + } catch (NoLoanPermittedException ex) { + System.out.println("[REGISTER] No loan permitted in Essentials Economy: " + ex.getMessage()); + return false; + } + + return true; + } + + public boolean subtract(double amount) { + try { + Economy.subtract(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + return false; + } catch (NoLoanPermittedException ex) { + System.out.println("[REGISTER] No loan permitted in Essentials Economy: " + ex.getMessage()); + return false; + } + + return true; + } + + public boolean multiply(double amount) { + try { + Economy.multiply(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + return false; + } catch (NoLoanPermittedException ex) { + System.out.println("[REGISTER] No loan permitted in Essentials Economy: " + ex.getMessage()); + return false; + } + + return true; + } + + public boolean divide(double amount) { + try { + Economy.divide(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + return false; + } catch (NoLoanPermittedException ex) { + System.out.println("[REGISTER] No loan permitted in Essentials Economy: " + ex.getMessage()); + return false; + } + + return true; + } + + public boolean hasEnough(double amount) { + try { + return Economy.hasEnough(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + } + + return false; + } + + public boolean hasOver(double amount) { + try { + return Economy.hasMore(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + } + + return false; + } + + public boolean hasUnder(double amount) { + try { + return Economy.hasLess(name, amount); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + } + + return false; + } + + public boolean isNegative() { + try { + return Economy.isNegative(name); + } catch (UserDoesNotExistException ex) { + System.out.println("[REGISTER] User does not exist in Essentials Economy: " + ex.getMessage()); + } + + return false; + } + + public boolean remove() { + return false; + } + } +} \ No newline at end of file diff --git a/src/com/garbagemule/register/payment/methods/iCo4.java b/src/com/garbagemule/register/payment/methods/iCo4.java new file mode 100644 index 0000000..2c96115 --- /dev/null +++ b/src/com/garbagemule/register/payment/methods/iCo4.java @@ -0,0 +1,128 @@ +package com.garbagemule.register.payment.methods; + +import com.garbagemule.register.payment.Method; +import com.nijiko.coelho.iConomy.iConomy; +import com.nijiko.coelho.iConomy.system.Account; + + +import org.bukkit.plugin.Plugin; + +public class iCo4 implements Method { + private iConomy iConomy; + + public iConomy getPlugin() { + return this.iConomy; + } + + public String getName() { + return "iConomy"; + } + + public String getVersion() { + return "4"; + } + + public String format(double amount) { + return this.iConomy.getBank().format(amount); + } + + public boolean hasBanks() { + return false; + } + + public boolean hasBank(String bank) { + return false; + } + + public boolean hasAccount(String name) { + return this.iConomy.getBank().hasAccount(name); + } + + public boolean hasBankAccount(String bank, String name) { + return false; + } + + public MethodAccount getAccount(String name) { + return new iCoAccount(this.iConomy.getBank().getAccount(name)); + } + + public MethodBankAccount getBankAccount(String bank, String name) { + return null; + } + + public boolean isCompatible(Plugin plugin) { + return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && !plugin.getClass().getName().equals("com.iConomy.iConomy") && plugin instanceof iConomy; + } + + public void setPlugin(Plugin plugin) { + iConomy = (iConomy)plugin; + } + + public class iCoAccount implements MethodAccount { + private Account account; + + public iCoAccount(Account account) { + this.account = account; + } + + public Account getiCoAccount() { + return account; + } + + public double balance() { + return this.account.getBalance(); + } + + public boolean set(double amount) { + if(this.account == null) return false; + this.account.setBalance(amount); + return true; + } + + public boolean add(double amount) { + if(this.account == null) return false; + this.account.add(amount); + return true; + } + + public boolean subtract(double amount) { + if(this.account == null) return false; + this.account.subtract(amount); + return true; + } + + public boolean multiply(double amount) { + if(this.account == null) return false; + this.account.multiply(amount); + return true; + } + + public boolean divide(double amount) { + if(this.account == null) return false; + this.account.divide(amount); + return true; + } + + public boolean hasEnough(double amount) { + return this.account.hasEnough(amount); + } + + public boolean hasOver(double amount) { + return this.account.hasOver(amount); + } + + public boolean hasUnder(double amount) { + return (this.balance() < amount); + } + + public boolean isNegative() { + return this.account.isNegative(); + } + + public boolean remove() { + if(this.account == null) return false; + this.account.remove(); + return true; + } + } +} diff --git a/src/com/garbagemule/register/payment/methods/iCo5.java b/src/com/garbagemule/register/payment/methods/iCo5.java new file mode 100644 index 0000000..2e0ede8 --- /dev/null +++ b/src/com/garbagemule/register/payment/methods/iCo5.java @@ -0,0 +1,211 @@ +package com.garbagemule.register.payment.methods; + +import com.garbagemule.register.payment.Method; +import com.iConomy.iConomy; +import com.iConomy.system.Account; +import com.iConomy.system.BankAccount; +import com.iConomy.system.Holdings; +import com.iConomy.util.Constants; + + +import org.bukkit.plugin.Plugin; + +public class iCo5 implements Method { + private iConomy iConomy; + + public iConomy getPlugin() { + return this.iConomy; + } + + public String getName() { + return "iConomy"; + } + + public String getVersion() { + return "5"; + } + + public String format(double amount) { + return this.iConomy.format(amount); + } + + public boolean hasBanks() { + return Constants.Banking; + } + + public boolean hasBank(String bank) { + return (!hasBanks()) ? false : this.iConomy.Banks.exists(bank); + } + + public boolean hasAccount(String name) { + return this.iConomy.hasAccount(name); + } + + public boolean hasBankAccount(String bank, String name) { + return (!hasBank(bank)) ? false : this.iConomy.getBank(bank).hasAccount(name); + } + + public MethodAccount getAccount(String name) { + return new iCoAccount(this.iConomy.getAccount(name)); + } + + public MethodBankAccount getBankAccount(String bank, String name) { + return new iCoBankAccount(this.iConomy.getBank(bank).getAccount(name)); + } + + public boolean isCompatible(Plugin plugin) { + return plugin.getDescription().getName().equalsIgnoreCase("iconomy") && plugin.getClass().getName().equals("com.iConomy.iConomy") && plugin instanceof iConomy; + } + + public void setPlugin(Plugin plugin) { + iConomy = (iConomy)plugin; + } + + public class iCoAccount implements MethodAccount { + private Account account; + private Holdings holdings; + + public iCoAccount(Account account) { + this.account = account; + this.holdings = account.getHoldings(); + } + + public Account getiCoAccount() { + return account; + } + + public double balance() { + return this.holdings.balance(); + } + + public boolean set(double amount) { + if(this.holdings == null) return false; + this.holdings.set(amount); + return true; + } + + public boolean add(double amount) { + if(this.holdings == null) return false; + this.holdings.add(amount); + return true; + } + + public boolean subtract(double amount) { + if(this.holdings == null) return false; + this.holdings.subtract(amount); + return true; + } + + public boolean multiply(double amount) { + if(this.holdings == null) return false; + this.holdings.multiply(amount); + return true; + } + + public boolean divide(double amount) { + if(this.holdings == null) return false; + this.holdings.divide(amount); + return true; + } + + public boolean hasEnough(double amount) { + return this.holdings.hasEnough(amount); + } + + public boolean hasOver(double amount) { + return this.holdings.hasOver(amount); + } + + public boolean hasUnder(double amount) { + return this.holdings.hasUnder(amount); + } + + public boolean isNegative() { + return this.holdings.isNegative(); + } + + public boolean remove() { + if(this.account == null) return false; + this.account.remove(); + return true; + } + } + + public class iCoBankAccount implements MethodBankAccount { + private BankAccount account; + private Holdings holdings; + + public iCoBankAccount(BankAccount account) { + this.account = account; + this.holdings = account.getHoldings(); + } + + public BankAccount getiCoBankAccount() { + return account; + } + + public String getBankName() { + return this.account.getBankName(); + } + + public int getBankId() { + return this.account.getBankId(); + } + + public double balance() { + return this.holdings.balance(); + } + + public boolean set(double amount) { + if(this.holdings == null) return false; + this.holdings.set(amount); + return true; + } + + public boolean add(double amount) { + if(this.holdings == null) return false; + this.holdings.add(amount); + return true; + } + + public boolean subtract(double amount) { + if(this.holdings == null) return false; + this.holdings.subtract(amount); + return true; + } + + public boolean multiply(double amount) { + if(this.holdings == null) return false; + this.holdings.multiply(amount); + return true; + } + + public boolean divide(double amount) { + if(this.holdings == null) return false; + this.holdings.divide(amount); + return true; + } + + public boolean hasEnough(double amount) { + return this.holdings.hasEnough(amount); + } + + public boolean hasOver(double amount) { + return this.holdings.hasOver(amount); + } + + public boolean hasUnder(double amount) { + return this.holdings.hasUnder(amount); + } + + public boolean isNegative() { + return this.holdings.isNegative(); + } + + public boolean remove() { + if(this.account == null) return false; + this.account.remove(); + return true; + } + } +}