From 4ffee1630bf64f1b5a8fa3e2f90cb6184961a8c7 Mon Sep 17 00:00:00 2001 From: Garbage Mule Date: Thu, 18 Aug 2011 16:56:09 +0200 Subject: [PATCH] Revamped valid spawnpoint algorithm. --- MobArena.jar | Bin 210682 -> 221205 bytes src/com/garbagemule/ArenaPlugin/Arena.java | 116 +++++++ .../garbagemule/ArenaPlugin/ArenaPlugin.java | 6 + src/com/garbagemule/ArenaPlugin/Master.java | 16 + .../garbagemule/MobArena/AbstractArena.java | 135 +++----- src/com/garbagemule/MobArena/Arena.java | 117 +++---- .../garbagemule/MobArena/ArenaInterface.java | 116 +++++++ src/com/garbagemule/MobArena/ArenaMaster.java | 4 +- src/com/garbagemule/MobArena/ArenaPlayer.java | 3 + .../garbagemule/MobArena/MABlockListener.java | 14 + src/com/garbagemule/MobArena/MACommands.java | 82 ++++- src/com/garbagemule/MobArena/MAListener.java | 68 +++- src/com/garbagemule/MobArena/MAMessages.java | 5 + .../MobArena/MAPlayerListener.java | 3 +- .../garbagemule/MobArena/MASpawnThread.java | 6 +- src/com/garbagemule/MobArena/MAUtils.java | 91 +++-- src/com/garbagemule/MobArena/MobArena.java | 18 +- .../garbagemule/MobArena/MobArenaHandler.java | 167 +++++++-- .../repairable/RepairableContainer.java | 27 +- .../MobArena/util/InventoryItem.java | 259 ++++++++++++++ .../garbagemule/MobArena/util/WaveUtils.java | 61 ++-- .../MobArena/waves/BossAbility.java | 316 ++++++++++++++++++ .../MobArena/waves/DefaultWave.java | 2 +- .../MobArena/waves/MACreature.java | 50 +-- src/com/garbagemule/MobArena/waves/Wave.java | 251 +------------- 25 files changed, 1388 insertions(+), 545 deletions(-) create mode 100644 src/com/garbagemule/ArenaPlugin/Arena.java create mode 100644 src/com/garbagemule/ArenaPlugin/ArenaPlugin.java create mode 100644 src/com/garbagemule/ArenaPlugin/Master.java create mode 100644 src/com/garbagemule/MobArena/ArenaInterface.java create mode 100644 src/com/garbagemule/MobArena/util/InventoryItem.java create mode 100644 src/com/garbagemule/MobArena/waves/BossAbility.java diff --git a/MobArena.jar b/MobArena.jar index 405fb8925f9b856d084678f2574b7c0b586392d0..532713b39f2d2f53bb33546bc08549b7e2fc2151 100644 GIT binary patch delta 139443 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 delta 129275 zcmZ6Rb8u!s+vej;tS8pQ*2JC|6Wf{CHlNtGZQHhOn@^mXIN5pM+O6Gh&mVnNb)VDS zRj2R!I_KA&+=ujfg@~l^3la(*>^~PRC2BkpH6+bH;Tnbvr$9{rCr0}xg8yy(-vw$S z8U)7w^U%Nc#BKe(5Ab9?(-4Ja5)kg?Ep##aS=a)1jDV42&z z%tsWfS$$7dc~=cKq?t?MXp*Eh|L{oE85l6-yxs}wchmQ|>&Ml1UXswyat0Rk~^(TVF=9QS+twnO?E+9q98Yg@^O*Z2` z#)aJWsxeD_EV)c>4Boh|DQ?Kz7@5wg(52Ik@t+xJ275$jES^zB@$bB;(#O9MR3CCd-IhvF8OIiNzo`!+b^?NDC@D4g04rqrNNR#m> zmdOE+z!ewnz#VFMFA?{Y6*8mLjTZM#=hGQ;%iol8FVgP$rg`c-#pdZ7j@<=Qm(ySX zuToBC25#$O6^&}In(M)O=hI6$>&Jb(5)AjjKFLyL%AFx?>#zouP(*wjIr*ky0cgmZ zG4McTSKzoCzebwU^~tYpZr6thSu&7l8l49_pfT{qrDuokAjY@aHCkD}4dsVpsMZ2P8q@b|`Y5gmxx19MW7`tZ47%m>VgaEO|D3?N|c% zz>N+AL(~t?Kk?xRI9G#4-Wh#VFmmijf#I{a+$`9-5^$4uH@^%8QfHcbGDXWoye)+D z`f@5));v}>v#bt17K$8_Wuh!}R_ja(5YbcViPghpyR!z6K~S!m1sF~i1rUxIWeA;= z#J0FNhMJpEOk{Tk`^g)BvDf!dG2Ns@foz3=(bK3YdF6sB1jq6DX!0=I-Jqq@>;=L~ z#?_;oTWNwDm7Qt_bUW>S-Z{2;Wjy^=3O#`teNHP}5s2=0yGW97mG5uAVG>-BkA9NF zl6l~noxKUy2~6&`WBHVc5!=p7Fnbo|p56!tev$%>kY0a1GCyLB-cV>YB*BgiVVy`0)VM8k3030>>=hV;f%xz2g-BoC<*|VvvU_TBkK&gCpY=dhYz% z8Lty_#J`1N%$Pu@g}w$kVBP&j40M0ip4{%`_He5aw7%?Gxp=qHKK;`&6RVZoYj-*I z#Oe4MQ#C?kcGe}OCm6F2iwHHb4C#$FO1U~b7`^{9e`Li6o{le%JC@V_lg#UZ%5{8J z<_RJ9R3Gx&p+N@OjG6FEU~(j_5OCN9+pzHP$c^P-JF#Sn>%q!fvDhyY-V!$(VQ%Uhjoe^U=Nb$|-ALFGaUmUpIcCmiLlauN9~S5*DBZ=XYkrrHBy+OkG|T^Fe>%IX-wWQ=7ZQp)prs{qAd@C)?5K45 zV}~KZP23W#6KJ+6l872T{(%wogXN){#;-r>^B&Llw>ji*38{L5lg3 z&pdIWTxY?6zG9cQzHS_ zdHXgY?`Pg(7j^QCs|hhoc1sqr zi5s4~DfnAIXTsPGh_G7|CRtH<`W~IM60MK>{&S;CWXKWmyXz*)1$po!%Y`E z;Qa&g|Guq%7ANS7`81lSkIV+Nu)|OX@H4sc4e?3hCHVO_lq|*g`~O6crT%58tOS}f z%&4~6xO?75tT!8QC%|&qee%gKBYs69QB^G$77hqfDvw3WbBAIOI8bsV2ob)H- zNBoqdBD3tPix3%%`0ibHTqZ;q$V3m`3^$3jJ?yR3W+uJ9L`AST_6Mhi;>n~?zhtb= zCY?1?n?@{GyUD5!iv$UHiNnEg)n8A9kE0eDNybfOw7$L+hf4N?X;@{x(a}@d{ff?k ziNk75)b7U(_$ZdO$y}8%pWuP6QZ0L)0k6m)eaw!7hB3NYKY}6tbs`k#_qX8FtoidJ zNAiT@wV_PWU~W=#0}TU@0d~Go6LWZp6L;t2tE3G%&`Mop!F3m~lz>N4vzLLw!XQH6Lh%vG9uETb&WaelZ3 zn{~4BJo;=p@dg?|Y&~WzaxAV6=!?RAE)iqoG3V&U9pG-7O!1P*2^CkzE%mr)`V)^W zqcW+79HI$D0tTWsHe9tKtqv;H{ImmnY_dC_!5XgS*EC=eD<`MaRx!s@sI72-K}^1! z{SJN9;ylZ6tt(9=-DP|qgMk06_#iLvRpof3s6E#x&+r}EFu?Ev?10DgC`}6Ko&rK z5D=n>$Iu8gqeO~b=={b_8O6r^HpoKTO9o7tkcaWfIfU+#l!q4;7=(eKPYINHH;GZd zrKQkI%X|*GH57;^;%3l0br+GXCMle&hJnOzd}UfJha%(VWCW{>0uNA02he6b@5&bG zFwXfjq)l2oNuEKwAkc5Zvy~|47$8$c$KNBN%Wwn5Rso|7&5Dh{R+W$oR@=;m5|Fi$ zyNF!KA%dpzA2tD<+CiF)6Hs$sr?qxlHg}-{Dm2~)Ik`_||HZ}8hd8O)d}~M%xvaTM z+}{Os>+l^YyY#*be0ZnW1Z@ElyT1$<7Q+?{)mC$Ppy)C>F@x5ziukLW6qZ{SHd#Zm zL3QBmZdX#;61E9?$kBOEk#<&kJMT0(7~<9uAA++rNHBPGm@Jv+PKK!kPCl zvC1XY=bo7h7ArZLXtSJu;Xu9#k^gf{FlMySXAP#XTmM zFW(XV`-~F3_SG5PbPtuoFKXNw_PSks_Z^^#}rBAMo@qKy9X|jfs`_JjuR3V7_9P39zzlE zdF^a(-u@H1oV5CTUdtbri06W^@9-)JwA3gV*o!|_>IV_i<$P?S;I3WHXQ1J%FoyEN zN2&$KaqhOXsRh6?ch0$YUrx3jK&`pNf{Xc@io5}@L7);;NWF15L#7ONkP%ni13tmq{6OARuA%t^uuV^IHU%Dfa#ak_ zbIenYYG}S}@0ag@z$$@{`~&Kt1i0?%6l{^Mq1Cn2KmQVHBc2z^9rNzLgIQ0>mB2Nj z@MrB0NK-Rty0Zi-rJ~>A3{OtM>Z`>e3u>5n!=8JOb?D&Sndh!Evx@mV;pdFpVN{51 z$k+;EOe5E*f-EBy(0i~Ht7)Y5ff9}e2|Mf&#c0mOJJ1s(RWZgsJRcbeu(cf&&5kxc zGEVWHT(KaBKd~O6eLZ?aA8fbLK1+WHISxmgAEh%q9zlI&{$6tRW3c}@rhivfCd3|E z1h3`?Xq^@iV-Tg_6s>6~ugv%GCc}JOe}dwnqj@Lt=E}Yi>aS$ zh>N3(!h5(}B+jt^r8h&+P(-RMNOE2Jr~Tr{y49TfMR5_hw?Hlvz8wMZS>2=$LX{aU z{qfL5=DbObHBB1LNFiDZPfvjLCiV3LKKr|H&`O+hje)eE|yN~ZJ0tvy-CF9SDV7h0mJ+n zZA`fabaJDFjau))J3fd`+e;wdu0#{b`{x%tOeq!wy&6Z+`1rv_Ds-?I-Osm!jZNqg zE!v;X4p+gFl;0Djl=c)X6-wVZ#cUJCos)3YRN8^5 zW51IYY({*d;)~`|P!3_Fz#kVkc83_saHwpdHc*!8iOZ5pf4#&o`}~{vFE4zzGxcK4 zjG-oa>crsU+5aah{}XYSv_maQ5MW@$Q2&WaAUmUxwSkjUu(GZlx)6XLaty13AxUkh z0-)W5pwi--ry3P*!Da!$ZXrwTjh_N%-8se48F@GTwNHGzUSxR@c(sC9KW_UN zXxDz_u->Te;u?&BEBWK-Q>-;a={|-ECqZ!+X|htK-NpBu@>sy77@yxrqk&Pn2EJU$4omYLmuRKpN||u3KTgF0)seT`L>qAiYD-3#6jw_*MG`UflDvt zS7E$fHa&t$4Bb~KkP=hcXJ(zKKf8qFx%YCy^M7 z7Np@Ty%3>@pea>`(?rX;ECoKVGnuS%|4?GvK;5pgchViBA~OV>KbVg*MKH>NY&#Q^tm@hor6Ku8X(<2kA|pE+rba!&0Vv3S>#~uI^aT>_KMNF6 zP~%=g2n?(`4h)R^AIu?1CFX{N0akaz{$5`G!{vMZeAL~gBm5oe8>{u$cX~y*Ja7o8 z1TZNuNLqmeSkZ*8H1GqWHU?XUHmc&5zE8XVm=H{6dJDctInf9li*|)CL z;E%7(`)fV3T&Ei zpMU&~;~Wj`e=)aGYP7Prt-oT3B+DYAUsz>us;#o%C@)<>#mf*uYGPL*v7G4xvdgQ= z^E+(GTDY|bk=Rw2aBSDoI(s}GPA*EemQ_Nd1qgb3D1)Z0ky0-32V^~c^hKO>31de0 zqw`BnJYoDZZeRawPRNk3tO2(Gj9lgIcn_8$ZTUY`@GPz2IroSX@CNZSwv-}DoAO9> zcEdhIn*Ydd!e6$~!!3eu8*2KLCHR-^1~^f!hFs!h3L^!(;8$?kS{6WCSq^Bc!{XN| zhE!CPTUy!wGWV6GUh|7o3(h#<3=;m652HhZ_6s4P`5W`p>KxPwwLefcKO;kS|D>Zr ze1oc{waQkAdaVi0ZN80W4VAWP5zM6Tvh;`K14I?I4z6_t^6IhTA=`U-y0l>01FQvN zi;>!(q#35{E?~&%lC%bEOG`bL%66dn4UdnVQ+4$S3-;1sW~kvJ+NHn5G+-UAzPgc@ zta&nen!sMWf5b=hm zOI-<<&aw^$CBcHqFbrAr8p>$}QjU&>Dh6$B4N|+6jpa9Jhm&xA1#4f;CNrXa-(O`0 zo0d9+v*W*2pI}S3Z4lXyJUjuaoE+1Cg$p`tf0ZGF_b{~9(Wn5mR{&L8Q9nuQ%JyKk zIy&W)Fp+gpH&Cr>`WvS}gj?B9LX8&|6Npu)Ps!~4BjWsDSiq%qN%$enU;FLbC=aK|TE4&<@I zP`t*&E016l{MkTL1~(ot0D!^L^luU>Jv+$&XNnU4Wl~`jbLH%X4sWN|00oT2R59Ei zQzd=`0I4?AB`uocI8y$^2@Gi0Sp9D;3MYqBPJhwPNsd`3I))uQ2P29a8QmY7Z#GCA zD!~<7g@4KsI92V!h_+Tyt196!vY)HRhCoX@B-$$7(6K;;JcL)t@%+R~s{vIFO>sjA ze+_+%t+l9M>UKpgmVv4dgW4>qbv=|i?d|a~OCPiy^4EN?%Z-z-3d&3(pb@oDD~>Y~ zI4)7A#jUU4OvC3U5*6Yq+wc6LUN|@+Q!bezsworLZtHW9ilU{{3@(i+tphHy{TDoe z4LEn?wsE4vJI-xH9|wYR-Ounf2p__xHbL6EAbpw&_3tP&!i0Fx1ftMzFn^Q{lLEh5I5T}wsxr_loKg+q0~ zBI$ZGak5u}4<5x^x;Ff9pix;lVl@@% z9$VJd;;hOkMStzS9x*69dx(v;4dq&5I5LrbRSoD+hirj#iig3QdI#rd#Irw7JTxeF z8wZ6V6p8Ye1!sNoCv^3kX-m)6D_&w}kcZpD(Mw)nf0^DkM!=CTG&1?~-n^V>gynZ2 zSS$`Hf8K92`jV|g_>{CQJ3!Tsb~6Ayd;2ae^^f*b%qq5aY|Nz0ts4M=kz*~j#=n9_ z!^+W)nrr3Aw|0*!@hvdGh4LvTAkQH22|!@t2vn)tX!?{AqEJ!1W`gHP+tSA*4=mW) z1t5YaLlF;B2|U9du;xr-dc)`9@&QjrE5MBZu(J(g!*it5e3tL&FSXkhH7=tpU48*n z0`L1*zxmAKB_o+1Z@ha?T#7;7+CA3>*zIWtUJjcxE#(anL>8%HTTY05pf8X);j^=3 zRBKhp2HosS5Wn~RmVENTv<{+aswMV0Gw(|iiQ5I|8snOPqQs#G_3JZVUja$n`x4dm zVbTioa9f^nuE`$epu1uz3TFR21iio8+xXP^cXfh24B~>P^Z~LeuN=YDcX1xPp_4DUF%D0 z6Bd1hp3^fo|4|T7+?X%G0R;>l(J+ZXBAa+n<;03JliL=j=14HfTWEHbB}*U=d<lkYmr?S9bgBC7 zJLFe@SWpw+5?`%>Y(qw(p&HDaSD`apGDlsS00FMTDqDYU4HGeBc?4vD;FIH?w{pkY zc}h3MD(^ZKZW3&lK}do*S3F!yAOMxc9c^2<+cZmv$~`k02b55l;^-!F_!y z-cZYx55WuE$LMTrpsX(Fo>sQ*8G(9*q-aA5F!2w7W2Ov0t{017plsdQ1ysN-hvM6( z22#0N*cy_Q>yM<+v}Ej<$VL9M~JM40#d0hx1}mzdT53m&;jU2uhXkRM8;Mk}Vet1^QKTyqRh8xiId;WNwh zaQCCFD|T37JrTFlNVZw2gI{%0DJtD8AGjEO+3Z{h(Uy^i85dgw)X>{?^MC(%E|BiSB0@bEg&@a6t%=^;~L>(3PQ270u?O+#94m#;Be%FdI{^8&Ej zgzE9j74ws-pB(q5BesQ+1n^W>b>v-IX;~#xQtIQE+--#uik;128HEUw8qUSBjFyLC=00hVq zs3uLcz!mW%w7Mk4pU4tFL+jb&OYFC(D8+v_Zdiz@JaV2Fuf2PNLlo=(y;jQ z)-XU)D!)qT0`D+*=^_~)Vf`;SBlun1*{6S|I0>&h>~G3%*mw z-}Yj@Wqe2=v>xYlPoHPocrx=iAC)YO&Z$aX9eig@PEi6Sryao#`x*=GGqa5ybiI9B zPh=Pq>NhQ@b)Lb*)+soi4?`E>6$qwA1iA+t2%y6RMy5<>s@K;TYjVQ}nb2V~=(ToH z_ZH+eMe)6`-iE>gbVd_#5JeV?H|@a&lAaX#(x1e(;x||&jO~RHuTfQ+%@g9|k}D~=eGj_`&EZc5j_KSw#1N1)7cZ7JxgZ@1A1;-QtU_(z~z1non>4=G!901rgU zn&nkpj7;kKL;TR5yweT_;hua*+g6nVN1{|fO6ZeV@~^g$d$BFxvhsXC6J6l6g}AOoQQt6YLBKJ>)H9hqlC;N#6&Ik+!Zt{CM3H1+wj z_3-I!J0gr2l+JofhcuxJl4?A&5wnZoQ$5Nok#y$eBcbI^k?_FGe8lPK@6jD*EnHz{ zvEqJgYP~*eaa+APEpeVS9BkrIr+l;|yu$GjO9-ih$Y=E7)P%?cKYMLF;D&e}y;@fg z6Kh8vvm?`@6t<|H^%Tr@PTLMV44G%omei4ncX4d$=tP*|5c@iKMD4*D>X^r*H2i_B z0-5f;`2%J|ZT|F|Luq9I`&saV5!q)5ryud2)yrK(Em``0Z4Ijrq&GJTDd~&nRgh~l z%qzQ8SA^Z|okA7Q<=@)~pxsdrW#Q0yn{jZ})m6o0y z!-fN@XyIKkt8eaHSg&dVvl1-@nFbAD0KxD=g2c*HOopPmpR?T$342C6MeeM-=`qn|0S{vEj)Iy=YcSN<-G8NJn~O{=Nq@A-9i`GPbis)wtAS0Uj{CJ+tC`eZHM zOQ4{JRkYYDdY&F?1~{|DB748D>=ZvXf%OK@I`+Mrf&GY6B!A#!U$waw7^;t;_R;e5 z8N5+@C;GG^(^Sh$Wr8$ppXsCNTX^n{*p>MEOZcqF^fAXA7y}Cc#ua{{_U(I4dnZjL zc4#hZSMpkgY?its*og(Hab8Rm*w@h-g9_z7sH*ePt|HuSL;qy!)J^0xP3}lu#NLj2 zzt6ATHrT4ZJJ@LMkHqHN%2R(D7YWzi;}7Sa%${{VAf2V#G$3$eARzqf0X2i>>87iu zvO7gBk=Pjs0TjB!9!I%PzYt$A?-j|O&Uw63_xy8*Btd?k`eGH)i>z#aHO=K9$i60~&9|1cox7#fnn;ym#+}TYLKTPJT(^9YMlS zd=Xopu;1k%;?Dca_E#*7VG$nz72icZ)jijjqKbgdqS)g1Bp#7$%e#Ot-t3j=L9OmD zlwrZ}+l=t5_?>r|yV)1)Z?z0XY^gSRKh2}&3F1WrK4*6fILP{Xj~cz-zdUa|HT;0X zX7Ob&u>s-CA&66UfZoJiF_&GMv?7tTcW=vQ#k<_G`=*H0En?9sFvkj@@C$Vty71n9 zLNjpug2n3O4?u{YEfALT``nXzAYnA=ujgb*a^?gI=^PUDY)K_ywBT2(fN0qfU6m8* zpZcV1Fd6}8m7)>ISgWB{mfi(|f#ZTVJS0+&7?4SlWP{xOk9l;#`DY9{qUwP894(@+ zDFh1@Sgv)HvNeTlxtI3B_zjuIjge|6FGnD-^Bex_uq00svQOa@W?>Qz!${uyj~}h} zMucKv0nz!kHKF7FfJ4C1yccJyyy=l0^HypX^a z*gbj&D0oT-W0WVl%7nGfti$gt+Tq*~**L_y%4ew_fCZ)@R|mEqabr|@Sgtg(J0>C@ zhT!Ne>t-WRy+0!z&w`?4g*t?1=d@?aP}rB$F25NbmVq@z4od?TWP7S=Hc|gZ7H@dz z))pEhULhonFV$*_RJBCEElc#OhggPW$Hgl|YqZKOqS38fzAdq7a*Tu=DxmkLCux@s!R5?v)Kw$1 zzYe`JB01N-WReGfeU+7P^~Dua%3pNnnGfS$IWrWZM4Dx zt|l+H5<}(ES(I{|a`I5-LxhPduJt7dVXU3b*kOe}2iA}2Jgv#gDytz0Yj5wO11qi+ zGmD%C%Py2K(|+m;ms=AS-@Z@&KMtggRi5rpY|F|NCnB~DeY7aC>;f1W9O6 zrv6rKEq=y;%Nf#<%EstU(=;q5;-F1LsDf?>Va4N{ou#cJbCw)S0Q?oaxPm@g%i9^X zXG}BK#{rrn;2&ZuU~g%6H7xH`pNqgf$svQWJf#oAqJ z$wIwZ=k>^(Dy7<8S{%tY{Bvw3g)`e%nDW!Lv^X-; zwTl$2-5BHHIP@XnBj7#fWPxG z?&|&2c&`F*FMH#!8r-UXhe_gxV5Q%s-q%I*n(ogd>J$j)jfrW?f@ys3(D;c)J*p1( zuz{Sl<7AjiPsH$+WjCcY)xn#?rj~Cy{ozZ0DHdi!E<#2qMQA#T~L;_tiPOP9=%`?6Zz_hwMDkzf{gOq~tdR3Vd@p>hEtAET6h3f-V4yYVZ z*=cpnQRB}3n27v&HGPY4ydsH+&FyEs#)fEP7za#+(DwqI6@SZ#F2@A4t6UY1!E~37 zc29^>KsK%V#&_d|4(S9-74Q8!Y!M~$xaeLXqZn6OO#ociA6Mb-!#wvv_p&+*Li>O!MuWUXdX$185PLl ziz6RA4?kig6ho0VkM-fmXZoknxi_n9S8k0-;7l}K+H~9+raT@a*+USF+gOP^$jL>F zHWAafpc_bEI%Xlj-An}}e{Jxg|CkaH>2^#^Sftn}hcgMLh>U>ubjIr-$i2Z2KMsxFkM+~GYNsyR_63N1z71~iyIoR9|7vecm?CwKP0AF{ z=ShM;0#KCag$Q@jW{ysP_x+5Hme7~w39Tfy$05GBVT)=~p~>ag{=2Q3v}gWSnLe&; z2F~ovcDI{|S%~aI&)*+!LYcBPijLe{N2#Nv6Y*T}>&?60W7QqA`T8|*AFl2WYM43% z^YnoQCRlZ*5mwQw()H0EWk<%%2~-o)kBV>|-eq4R zNV1z99;@5yjM~Sk%`Dmt#A|4tgVHOLiMM6V{nI3LHyuc9t}S`Sg`Z&4K&`>s)NyDUC-@S6@caQR9&nN(b{yWtfAdsH9%e(XcI_Ca);Cd(g*TVsD-u z$=Ubi{jK0-b`sLU$)qkFJ%dNM`rQHMZG^&c)ON#0pLz8yl3FGE>@J?`agWv%mm^>d zx1t_xt?E6`trgX@Qn&u~61cRZ2p;6UQX4$*2uXTJ(%iw4Q(e`Fm~HI%sAR*_vQu?@ zvy4GVP_vZf9+~2%s6rsw`3{{H&ZfBg^~m<|t*cXiWlLpOX2hLZ13%7fyc08v^d>)Y zXiY>;>p0O12QgeFqj5Oqv$-o)d>2TJ#H%17k9}YU`jeO7MWMAJrHwyl80B5FalG7n zy<1>h>63?Ri}+%~8@T>3IL)s5n%=|xJH%go1ZE3#6m>64@^;m?a*=_zZR0~N(%XTc zs)#BqP<7-BFZ?`LG=GzNRCw=@>rL;dUg5UyJCb(<{t;I}RKHrpbTxth?=^7PPV{}#%`AZ@WpDklI;fC%-0^T3y49+h-q(b{0{Uea9@Z0Xcf3{`9 z4!S@Wto4;$QftA1xd4xxpOQCui;*4NQ6b;|;Akyf8Qe=Ee~3tNs?-EevZ%bJC*+PU zS*HIfPWXx{FW#FRe@4Lsfa6MnsjSGvKV&M@1+OUNfJ16YR2%?Oyarx5@OS4v zdhg0kP`&EWbiyi=URw$K5DRs%-Mg$k%hlF)ya-g~dbD5~wIIjfg5ac-!fG!|*0;-& z$p7XICJj>P_MRiaX9;=~c0;fuyb@5IyomUUh}h%Xq+biW_r=HL<~RY~vcWRYM$HyZ zQ__tf>8BMZ&P9Yw^=*K4<&Mf_@dMd{XKS8?pC@j@^7>7luIEm#quxMF{#0<(e(nx~ zCeLiPV?<{d+)f~7#bgBz7^A?DS#-8=PqyHM>*iz#MqaIiljs?}F8zbrloh ze9hbIzo-+;i-?hF!rma99kGiR201&R4nb@3cb*4Qrt!_!VpF&jt%GQKlN?yf?HHVGw~tsuPHyQtANvWF*VoKwDUVufaK1drQKgPLe*P)Pl@UiVtG zUdu-RP9t!M$%W76tDlGRh;vVl%}8$ntl8L`!Z9akT;_n-(#)#5{0ldxJzeBx#f=-M zRTl$SSEgZ(F%Gm*VKcQ=Y^_qiI=vrV!!Tml!?Wp8gf6R8XX??|O>L_ZvJSH`yk~e| zLO2MQRa6UA9xWR-4|uG#)g?j!)Vm6KjZc z=0g$Bm>GbG!DoQXWMvWUJ5G*TJK@Hf@D_#AEavS9Zl0f#>{K+R{T6JTohKHnY2m@! zTWAugqWs5J$n0{4PiBF1w0W)fGp@sl*$da}oJgc+JNpRc4KnQ%M-O$9KynnJb$*I)|IVY3y0WIcJW-(dyciY#IKqTSe8+@X@eAgos)Px}{lFRxBD`np3Sq)N5jDa;#1Imt zk2BYtc+MwD80_*W7F9p#GjqugJLz;dAp!K5kTBxj zRn7@LesMU4R@h6yHuONFcbyE@&_h?(!&7IBpu-jk*VYR;K6W_9bU0R`UOZ)t%``L7 z@le(AaM5|ek#C2Xv^touI-D3CNsfI;iXFY@k$-`rhvm1|jy;wxbDSihw+o}QYjWQ< zKCjv+q1t$z=BTc>sFuCtdj@_pYTs$RmeQ~d+ms+U0TMh^{iGgn;jldKfJ!x2_&0Uwsfh)6RP-BL4dPK@_yF}NxZ zdtJQkEggimhtYvE8;G{YdWWA03Ed-bN1O>h{mt72e%cRfFW?=}-4lX<+b2d3$7l+< zkIn(lXtG`xC>uPvCes!`h@{>?VUNiRQ)7_1r{#*LGy1v@wEcnTU-wC$yv6F;fpsf$ zDmmoD0ap12$s48(5cn;SauOI@PUkaa3}=H_0h?h46L2u7%Z#2##k2Msrt>@IgM8+_ zeT<0&Xnbo_{2YeEl&Wk>jblcowIO`%&S8-|a?mnS15ma3g$AqMWb1VXIUeM;s4B9v?WycCHIelEO`-@mxAsl?mPsNdJVOW;>(@y*j2*i*0!>bs!6HIE)8ByXDr{o*0 z&KP^{gm}Mo3U;=> z{+2H@=$y@6aZ!j;iQ-^(pPbj=@U>Bu!;fZh0uSpvX<31PI>7f3x6M%@=G z3NsE1RPoGHu|ar~$8blq0e4e){RQUoS6@K_ z7^L)Nv{d}{)8-lOqDEfv%iEvlM86EBNBH)OxZ$mLpVau0ZeP%z&>Ml;J`Zw{Y9BVb z&Y$`Q%@@ny%`lD?)w`VDNMk{0>4fOv-SbibeX+=Q56)VD7a+@8xk zU{#37xGhd1hC#j|wq)#gW+E!zX`!^_bGos3YbW|!bl_7 zlp%adgFqd@17?+-3Uxo8R|`O6;2-_*z(QOa8e4DFsI41m!rX8w^}i(+MUb=PPPUEV zN5==^b8~2ijh2kxkRy%ckaabt@~lk)3HUJW&ftgcZ+O>ub;mPGyBbc4zl9fx^K|P6 z?Y;W7LmXpdJ|tni?4-v<`snaML;?I&XLd-o^EO zj(pl0a1&$&N;VPQOI_k0+kqZg-a;vgcMpO9yV^z5H1%tI!pH{?Ue$4H z{h8k-4x?FR>0s>w_cguRMbwn>pOj_k|n*WR~B51e!m0Ygm7HByTZ^LnGH(2 zGA`9!Q8Uj5F0Q?VH6hFy_Mk$ah}q+}v>JYmt{3C^vNk#M{@&+AbiG61?ziL9sUe}6 zE3ZDlE@TkB-j?x&>jl7378J;Q>1!~~kkxPOlBuB-sMkOP(e#5%hWHPTVYxO&TYV*9 zR3l313eGjufr188&eW?T)WWIxUHauYtytrTcLI@x{8?1ys&NPWb4+`G1VNh!)9LJQb^P>yB;%yP$#@+W}~@%=wZ>Qduyd_(cQp-bx2(F|+zasR?(_3b>4W#-Y@1!zq$AH|lxYkq3eJtq8& z5tAkcULM94<>z_LEL&~bbCvgRRhcy<;%toOj{5Wt?Q8nL%MXKpIt~kbR`BHq_u|Pn z*^$ln1onBOP&PjCZ?La!tJg?$7SxOe&0_;y@$JZHr8o)Y=>#AX4Y7PfzGHUA`@BzY zqt-b<1>8EVJ;EY88PV)-M@&`iuiL!)6s8mal_u6;fFXlx`UsqJ#(X39hV{0)xFR3roBUvK^)`nb0e6mcjZNror4!5*;Zl$@;A7-YCkfrK++lhCM6Is zr($hcc37NKtS&Lxe{;qe*Csd_Tf`{;jpABnP|W z$p6O^tRw|*&Z2(3gK9)P*{Jxq3ssR>I{HiHi0PcKbjsP@Zer)c2$1=&fS@@LLSa_C zF;=2ce$6_IcHb!vB^SZSU7(@>I&KoXpS}kN-kpU0^w)0&{R{A;`s?zTX!eIYjYle9 z5X*}8V>AaUdyH$6x()RD)Ey3eAh{m$;IlN&u(}5p(G?@#MnK|XE?L9nwn=}>R?aiZ z(D4T--9<w^>B&3^XwI^hb z7Aha&2Mgf{J|80QR^fpIO?=cZB=o>5r3ZSRF-R%#Z$(}>R6iNK5y)j1+iTOv?H zs4Ph>()x8;PP}NV-}`+@(l-?!dx(ph-N+2pMfiDDqs%dJDNXj~!R}8ONPukuX z8t}zScBV-pt?P0$MUFd#?uygd;X^oGSS4g zZQHhO+cuuqwr$(CZBCpg$;3`3IrE-#s=n|1*tKg{tzWD5-My;2*L7z#eo24PY)syS zZNKs1GaSKV*m`I-yd6N0W~csYBXVr)qeo7FnZ-_7T74{|vlWWcA68(Tr6?m`^S#F-s{vMFB_#Y&K$ z{0X1_V1u9)hy)?1eHcq`B9eR`if`=$uzOJ{%MdVL-Qj1%jX3fK7COk95U0;x9_8m+ zQdY4NBTIvc4%&)BBGSRs7sv*!ywxW|syIj;3C1($e5&b_%m~tl!9wob_ z+^2&F7}%q+yDR+x$9T_oS5P$P#opc7(O355I7Q6eSjbQuwscd*+|&Vx^|8XA!=5OI zXgfr<53d2NcMsult*Q<>SZ>X{|~qn+J_gi=2V=+}gqK0D8>D?}Y|*9a9%)tP$%_GJol z;+V41k7Z;)nbPAKl+zf!WYJ?yE+Z$)E)el7L6+Zx0*rF&0VMbj6fGUmtjFbGy6eVx zN4W=Xk6pLnaO}AE_+a!=>-v5H!#5A?8375X|IhF{g#*hkEY-XD1Kclg-H^BHhHG`( z?s!0@5w8Yh|8+YfKDnu0ka%clAj6yBy(%#cL@!P-O0EToWc$ZHQ5Tk< zlUc$UuFX(Y)2~0t2AFK_;8jebqjY}`scRwX*|2Lj)>2Ka-O_jI{Uh;IMxV;Co_65q z4%0dSW7|Ek?c;2FR@hqA9o3=d8V|-;wiX{Eyb$9#<#h!$9PWA0h2D&EI z9E#=1v0 zJ+bv8Y<;J8z9e;bFL`ixuP$GM-P<0A*!wPk^1mk0uQIwv27IwshPp@lJtP8gHlHJ` z?`}sHPO%1}I4Tgf)(0A+t>4Qn<**U19rSg>8fC!>^Ita|W8b1LV!@*vnOaWP5~oJFjed_U^qS^)wQ| zo=YTMqVt4F)f{H$o|F2ae)k?s?`th>`=kUtGdVM}RpYd6dRSXCbM8z@e{MD=YvB=| zQaMSYJ)&_@**|(>ZpJqKLHk%(8l!!pREg%sgAuQJzc}@UMB7cE@LK3Yjxi+^cMkoh zJu>n$4CEIf@^701lfR+)CsCs6q(5r_+N6ySp~mge{8s^z<~PxOS3HSBkdgkrVdwK2 z5vuwW5Vta-*x#v`6Zz=DuM)-$l88WK*sQ^aMHg-Iu;^CfkPS-lDDgxhd6eSO(hcum zOq%Bir$Zzr{T@p4h?f!3yUYyIKD5mxB(A3XiBytN)J&4HDPAU#IgIehQe$(#ibbLr z(kykfX=90pO|e;-Zkb=2ESEO@IPUw|P3Vf5W{0)(JFq>(r{gPb0x* zbfw-_^p-bLGojW@7?Ux)?2v0##$}^^*>-GfAlQ+xcx}3CeIcZ5*E35${Jf~r2?rl` zftq^4Yq||wCWckY^ifoE_c;oH)lad1e~F$(=cKHTd$l9io+CG=mr?s=wn>)^va=U^ z+bkEjx>LE%*skGHl8(Drxqd6jz%}%TtxBaHwtc-qlA*0YrJgBK-&UvuyAjW_9- zC6Axwgzw=;crmKZNL)|_j2aWIM2R`3YQ{il5cv|OF-p*yX%$7(B97WtQyQ&Dm|a=P z8lcl`;1sPq{5+SFu@c!FcCPN5!5n_JHvfHvol)e_xAWRmnMk2i@4`#^^-E(Bl&R4q z=LWKR#2w&N`AFBP?GDzKneh>SLmR6AF!fp~w=`zsn6&hfsD z_d#TsnYQ?y8IwsMrt}jls3ym%({vR;U&6d#0==4i9P@@prC^Sph%*Yla+xl zC2=3SL*d;ELrgFE0l(C}CNKU-(b7@T9mEAI*ds7r9ql+d-aLzj{UzIK{wVbdsw6-` zlyz^JqIsFJVeS6A)HjyWt$p%T?eoX_p1yhSI4&aFd%)3BtkB0_8#YeTfPE8=GV4eEmF7mAvS=m&p=f032F@oO-Y2?enlQo+judU4s zsfUUy&c{~qlonM^Uji4>ySh#x14;Fh-$@Yo3@Jrb!HH)j-D5$aY1FH8)ZEykBa zBOfHw@CWBK!+XWtX zGHl9%FA3m6{dX`lrz}53z63W-Lwj%Jd2G53B;gMl!$4mU7pY(2z2TK8W85&Apl}T>$@;!#$gAtf>7AbUld+B0{PNv0gDmg4GPb_x9I0jZyew zKS_V^$W6t3rIVlUz4ATQSdf5wg#y1cLjSdM{@$()i49#Mq`@~28d@=BmstPCHp70! zgne>9!zROi)r3{D!+a93Nv+T02R>EN4CFZ?M)?##fauB8=1>U!8-{xsrIv+GfYl?( z*tsny=a1}~ZgMW;CKwU%-b1#eGcHmC*hS)TRDpWAK2ry1=m;94fi9HHh?*j4U0~|r zzc_YjnEXn%60PT$)B(~Kg>#_lgpxyVA38l^=ZH{-5Xr*|q%Hf++R`C>q95xI@jxU| zoH`7U#-#qH77$+2g8X~Df4raQD*v-|aq58CmW(;FPl?5)$3FGh)X_hLSQL)-HFdR_%VN{;t}ZJ#~tqHn=Ad7 zuTYR2{Vr7Ku%wOgaxG(eQ!%3tkE}v+*?TlV$0%sd88!WlOD?*{*&OsQcll@#p7PPa+~uOdxlK^= zJP}#m_zX`ZraNTQ=>0;jcWUU{^+H)d4~WqnIW%y8m|q>CWngHQ^B`3v^96^@>^-@?Hp`%7B%Yr#t7Y|Kuw ziJs%J_;WJ%xFF9oESI#vPOpnOKA&okMdg?nc6RYKbHnr_qtU3Jgl5JT3U&+EK&b{R zmfJ*|^hb9ECyz06Id^2O{E|EXx~FW(EweF)C&x7Y*^@}d0QS#MgEf0aCZ6Y>fdnba zm5+jk8<+=E=oDlBTG^)%1Dq?WccBGfwZPtFpwkvTJ8^zO!FEoHB#!n3Ics-@J|MQy zXx)RPa1$vJ`T-)Q>V51*iY4kNjbY#$7sX5QG^j)nUQk{e3ecJqIM(bHC$$#hDGn{3K{~AD?<+o-|5RlOj!i)Urj9xOu zJ91~6L3;MD!g!)BWdcj%X^UUu#QZ2E;kKn-x~s0Ou^nYkm>D4sm>Y(h8Hc02rOi2| z-zi@n^4kfO@X+oUq|Z6f+W-wI=gDDe^jYXDryb#=9ps}GBSiIjPCU3aaV+ zV{m<8lD{!2_A^P8XXjj0%4X5OIWhY<5aUHu4@fFyluYwNS7?u>aiw~ELApLHD-&km zA9QOa5c6H?Xs!4F^mj&@vint+8m#c8Y+lH&Fl_1M&gA9m4-J3h=0we~Q>2%1)emPL z4%l9Bx2$I3$65gu_>Y+qXlWK+xX{I?juZuP5hNzv8h-u#CZ0*3QZbC>U3DpGeU>au zI9~{Fy7ocv9=OE4#y#j$y0b~XiKu};lZ0?#%p5hOCvOGx70Ai%Jp3#lkOuO8q>i|!ELuHB{=_!WdjIR%SVzhw<5Xm_!?}2$l%sB8G!@=H zpvpbNZ=qBT2rfH0C~Mf!<#Ojd!EM;jg5l0N0;BF2G*)1bE$)IZSI(%f+WEDFm#2{S znA+QeevYt4Hl3S5?s2f`FygWgn|hD_Ym&z(x(7yn?A_&$XVVt=ar?9NeeWKKmxV*X z&K@110%=9)2tGFZa-norqi$O6sViqIuKD|t?okUf?>FYHt@?uOzofje zM+RyA;U332*qNp8JkKw>rhR9`4_X+R>sY2k=9l3D(8poGQRB7FIUu13u%0{l8}`MyZ_+=XWpH5DFH0PZ@QQ?D z+qL1rN8}CvG4X~(R6r2$SAkLgYm+35ykj8)@q?KG%frz;1hJF#XDXfy(Y;#7LGqrgYH=> z67xy!03aF@3>8}4+P(gMykY~R~(_6?X@yb81d%JP+4m98ALD1lTWI4n%7ELWMeYXb+K6^0yvol%Fc=kVh z_rG)eKk{F8Bt-2#eN%*Gqu>7=qzM6rfh-WS2Z<${O|#eA=NVMRVqd%Frn<|K${|+o zWMlrtWL6~*I&Cj{#?RfdC&1&0f>dMfY8zqp&Gc5nn|2k@HNxdhy*8GOC5|SC{FAnr z4)rFn*%sG{@d%TSwA`VnN-P#ADRbc_!>Vjed38zD_`Z@%!^2(KcS&xe4s$^JA8pWZ z#?5?IW-Jy^o30WrWzY0fr$%S#c(x4Y9i;IPoiVxk%PFn>BW`tT$3Nb*l?k8RdM=o> z<=|_!EK3=CiQlEal7BLRjB8f@HJ@tD6`>OrjJJ8b30}zAh@ETrGa$;fVOlO;Vx%EQ z+sty36MSLx_8vPikeG(TqLTAzR&)Iw_sL02FuBhLk#D!HW`f~zic z1{p_LSIWbj!``ixsbHmQEI4apm7>YQ$Xt{yQ)|Onz-8HoxBtDo#39%C5i;VQTT~)u zg|}Q|n4tVI6LPBwUaKaZSG??-MJ{YqI&+IyhxU5cngk9-Rn+p%nVXvlcUX&@wWUMSGpk;XFjO?i@k>A2DeaNV~U%yxp+YZ5B z7N#_Z49i8kZLd|y+M}%M-yz){YvAG!!tec^zBpNm zq;#}o#S+>u63qmle?10LY2hva3lJ+h+pVrl*nioDrM8Me`w&MOT*mXsj$2R8A^qdyr;B1!HV+7oC4o4oa7@&k z1W-?QRm@y}NbIXiJD#S!75Am&0)7d@~Y?CzUU*Bu}1^DRy{)2rJq;zmbc&^CL zSF-$a#GIaEpVOF>Md_XKkw76bmr_=mTunCtYE~?2H$+LFK@X5D&#{26Bxt_|GT^CcS@V;r2^wqs-G=^RIajVG>J28wHpX`H)sRPj;BOjJe$Vv9VNmxKq^e zm~GM;1zK)+09n(kXn^+I*rg;B6}-IV%anM-VZoMALC`wV2j$S%#XiNZ2m`W$t#bE; z%Npm^(BY36bN)tySH8GK{KbC$vG@^7f8S(RN&xZ(<&bE}H8@$(5RSt01-|7c+0gS> z1r|O_jKZu|jXDHtKqT(qO6K5teL-sA_Tw(4AH}@J4{L5eg)2?C*g-a0khtn#-*ym& zZj>o z5mr8M9yrhaH`E>kG3ZHWRs<{dOX8{@;5%e~L#iVLDE^LJ+HXeG^EOPjqmTnN{|wgu zng3VZd1Qy5kn!O9_t@>k8g$|J3Xt?LG)DND+kMMb^hX-%UHKSM&ck?hMcn#b z3a5ci)wU3-ge(1#GbiM;7xk}IXtF={8+6ix^q&V*+;U`k#niEGDRws%dp(Ol00DEZ zxeRU-TiwvzL4X~_v-!d(a$^_&hhWW|BkqTwkInXl=5B#Wp%&?LnVm)c*fPu;=HW`s zoh(?H-Ry$CQlh{QmbzT#=0k`i^{HK(Uo3jdvSSy@Wiahrg1dk08o7b* zEvxaCaq0EIkjzc?$> zEseM%xVK@FOrr6&@E7x|MAw?S{S6Cfg{SRj{%KKd%N<_*Fbbc_$2Dh9D{%h^#Y^hM zNX`@WMb_AKP+BQFYEQEIxO?idu1JI)9FKwxQ&;`rKhXGYVD#bKmlPhyd~92Y>(au5 zZrrma*0Jl;B+Cuwm@_!8fUMYfR)Zt>l#mcE!{3Ub?qk_*d&CVv=Q_xJg~_h>otBL| zR9l7?i~3VNYG?FgnJ(G_x;I%%bM`z&(wf?uY*9Z}k@>`q{w%EUfLncPr%>RA$vYxk zV85hYf8?3QdK`9KVUR^Sh+%o>&S6C92yQ<1rZv8=JlPKg|EnC%07S9-@$t%r@ukQw z6rU14Dn;?!C38`=IShH+mU6ntu=_#I4W(Rm<6zU)y$%#zVJ;Iw|9%_`r$XF;&{)xr zfJA?|USmKGo`Vca8I}GjsC@V#;zfru;8aHy#=|QbKhx^k7xGf*R}#Rb+V!-B-$FB2 zHWAsB9_}Q3vI2%z{IC0cI5QRCG|v*30GBNL9hOU+?Bt#+jHX5C(|2$v$|uGxUqBv< zKuDJTFsvuF{y>z=fOe*~sD?%~SILq!{-P3FKk<>{Zi^9F$|Rq+DrCLRg-XCUcuME> zDCOgb$bj7scS88mNuW0uNg%i#|B^WY>MHg?*l}p%MQ1jv7l!I;;o3osz>OslyvjoRuE$J$%*|jN0L4z2G>Ci%hx*xcpd* zcS*+b8JL~*OR)04>-7BD0YYt%ZqZ3HV!VVa-yMFaZVmWE-j=rdJU~|cxoQ20wu5KF(x`AK`VD6bjyOYTt(` zzK}SG1B-q6A(UztQLMmd3!xxmh-}QX`VS(f%rxx%tTPet%Ofe94QHBH_b=HLgfk)b zn|HmGws~mQ6b-j#j|Xf3ze20gQNg1*uTkZtMC{E33g9xsYS_7eeZ=Oov?m9%At$C< zc`3V}hJoT3_MLBzU0nI7J8IQpS3E~?)V-0g|Ecf4fJFums+{#{%7Bu z0Af0t3a&~{n_~hxjeo^M{MhA1ec?@1Xgu(fQ-Ej=A|u%&|GaN8rltVv4uLC)*M{&& zqm&noGyZm&dw=-lr(s29+?9Z(*Y{GY9^WWV6ks|f3f~7ze%CniA6qxj=8t(Ipat;< zuPoRt9&-AJCrl)b2QNtx?6d_L@Sbbc=O@0=s;d+as7V15fEVUy^Jt7M@D4ZT3}UPm za~>u}Vc63@;2Vg^P{8u(gxB|jbUE|Y2feQcd@KA`chfTloo!D>hMrd(PNEX2o~ehO z08pAXR#v>Swc#0}En&5(q#az@n&G{wqzy{GnBV_#jadu>JhuuJ%YLn`g}5RrB`_|$|4{rwlDjr z^w7Eb^`|G1I@{Rfu?z9f5Lm#N97X;=?t@B~b_Kgam>Ee>6BM=E!Y1N&%!?W#%}P}= zi0)D4zfNAS5ce(YCmZ4r;?qHQ9D}tyX9IzOxzahQFq1?}!nk&7jcZ)d8$%^+L; z)6h3hfieQ>K30Uv3qRl8}MyrIiCA7>+LtdjyXe@O0JxR~3wK zgLe_4?oGI0$uV3Y-y@RM@AMwU8p^it(^KIkRGdqt`F0mz)~iDwT7xETqysI$@MDhEE-TUfrp9c;3W7 zfbJ_3s6gCj|La{GU_U;62%wPu7svmT__IuUh+OekoZ9VnuAIr^NrK~guKx`pU%>fn zAimPcbk%)T%5RVE@f+THi`8HL<3LW$J&dBrSAD$SI!6z+g$|N98GXP@uVRd|wMd^? zk%XsO#FN$fGw6%;?goYWQn3mai=*DqJq$;a>U!a7i!I##dDNA98i0%5$;V^xWcAy5 z$x07=QGIw8L0Hzh&@2wQ;=}l3vP$)vru;00eq@$FZb}x1$m4jy>3HGktl|U8H>CC6 zDaA5eUKX7Y+Zp(ZD8g8r7q!CV8B9tKT95;1RTo~=UKE`-XMt&Sy(vto+1hNNJPM_k zFqIZ)m4#u0vUB^4Dxm01(Rr4VZ<|y4J8-}L?nB`Th|uk$r%ro)&BwJqgl25tY{>nfQ2aPF+#=Zb&E}k=k6W5PT9C!XbAKw%<(pC* zyD7!Ba(%B?g4&fo(*I+1DYzvBU%1u>lk+MuKscK(^!j@fv(#o%aXfRMn+cfU`DB;RVt{^+6cmsLsal3@H<|gI(1*Nib5~ zNp=ZRIhSMt@H#ga7!bdE;L7@T+cbtv?9Y+94{s~s+39I?X=|=>G zWrTm!+AYgK6@WsCU)~UuH+IGg0?C*CcazUgdK!{1NJ*{F=_qGyNmF)1u6YvnCBB0*hk7;^(GeRyYHY zE>5JP=O&-Zm!YyFUR53UnB+evttZYX4Rp_rcAdhOOb+#V={&1DRK!jE(`_%5Je>u$ zgGwk?N?2hUmDSIOrKjBgU<^2KIX5Nu( z-kCPQd;l}&8FjtSAW&RMaoay&Z<>B@=y%2`QjgdE$F(~-gdJku!uKhdZ4cO zel3}kG)##=)rm7w0QzU%faVup;Nd;8+E3Ix(Q}s)&PVq<_EZEjyM%CU46Au@YRu8U zQ{RnD{1eBeofR~jNh+q3X4X;#tSOp~Z!~(2r2uWhWOL?64XSrX`2o+U_Oz0YF49pR zY2}{gfrUHN8+xg`yd>p4jif_RGAe#m<@ie(FsW@lcB<>|a69k; z;1fjfi^T9MF(fT9)0U9w%lN9LU{wd(UeHx~;Ck}`gf+{4ys3SYYL7N~V=A899CxsL zV=SBIrd0EX-CpbhV{D(q^H8hzI}6%%aDNWG3TfV27U*~d9trdD-^mz$Nxa3}vev<@ z-wxec^Rx71&qKf56*Y`T58s?N4}07Kl5UH23H$?bh?_f@nDeuVEu46pQnE?@{nZ}u z@huicSbM5|=nh3c!--{jdB6kU@kckM28;PLDdLb|V0x*pEnhW>(5sPuC8RIw>I=E` zFgv1aofi*<=6Ry0C*$vB(%m3MzGKHbx|)?J9nyUJ7kx6$BKyf3tvokvH7R`oqFxDk z_8fW;^V~_qz?F0A^ZNPq_}^^&ODrS?*w%k;kNhQdD0KFRQ*)-EJAJ4?nm^eQvso17 z?#OPtcfUAz0222Fz+NXl*QDRp&9|4w_g^0*^KaD4*nGSS^@Iv}F#$jwkhEjODRgzo zvvI{K0^y1+bq@trd&=@fY3Qc`{>sVwkAqcz#EMI^2rj0?OQ@px@Rfv+uBZ2}IyYue ztp>WOhANyk7dE{}%ipnVm2$*{ds4`f^7P{Nz6~ zCSw+I*(h1Q)g1u^NsQ)8JWSH)5YN4{s5la;D_005M|hoh#cn{SNZ@e>WYkszjiPo^ zd)KV*Z(8OaZ(8JCImRS_%Lt1t8NOH^l}{xN(2~D>UNbys*jYSj*r(#(X-1g9Hj;9g zzMLZLlXOh~Vt$8EIm66SM|Bf(G0s?#?%-Hq^RVJ|Skm7}Fv2fL^Gjym?v17|()ZzJ z0HK}ldV=bU;_r3NVLsIXz}}N7kh~XapvtF;mk%?>>Y2s8er=}tT{5y)Dc^n-4*P+J zn80xP{9bFT;+qUBpLFg|U#gB(pg|KYXY&PVZIaL(KTO3_NpQOK5}+^pE!jx^w2rFxol|gV@Coz( zaK8U3)2?0OMA`pCx0^uz^M?8lrx&1TYvg6-{69eHSXDa>95GaX2;sDl+ETQAYnehq zIrJ^DntGv>AW6Fd$pmcyuI!j;*6iJ!*%17%Pyw-dEBScuxbgWf%6Jd+a6u;2{u!5> z-H-d3T%VU4fd4nj0CFBDrg26s1)adL)qu$2h4|3EbkM5m$PUMu{75`N^n!4l@hgSE zS>Vv=TmU*Rs>^tyz1W`8BrNly(<&}B%4vNQvra9U^)cAKnJSgRm~1sMUyZn4nC~!m zj@%Mh%I%BlQbNu?tw`**Wj_EC^^c4*UmM`KeB;|c9pjZS@Q|Z~OsX4!5)}O6tAc#?y3;G>#O?9NLv(j4GOye0WOCpCQ zCK}8~Xj6< zNuT-xWB57{8mvU;cWw+@m&WhT6yyt%Uv&7JC2Uf|#j!DFz7l9|+wPfta9?ReEMf+0 zV7NM%z7m|y-_ZexXFEiO-YV@>e!2=$oBC$sdc7!Bn`skX{@M})5rbqkLMadDvX2VG z2NJV4R{V1zqCa4hQyDYv-i8+K8V{bR(NR8IUYh>>powX zInk(nr|jH<>k`YusB4z_vY`NkM=E3lUbXn=yO3niOKT$iox3HF1f{fll<&l?o zl1Cn4F-st@OQaYj{fZu#Cq*zN;58gmk8$4F_}e8&&jqHnZ&?C-)x zrJ_0LPi%nKH z%P`HkA&R)|$JJ@;-$?F1NPu}PBtUxvEUEr+My>wQIw2Uct~7sO`V7vIUGml} zuB~+#_A><7J`avAHs&YZGbETp4jerKtiNqf-#0GC{}m_>ExSJ1Kf|G$e-GJz3)K66 zwVA-DFwBS;HV>Y~4x-&BKsut0PTR;#qy(V~W=#swCgTj&UWq~`UwXTY`3mw$8S+On z^Ug8e_hs+$;qRxvALsyFj?aRLBi0#Bo-vk@bTv20SBiuOnba}6zjwo=Vb1{DJ*?SO zelhrHRG)JZePMaIM2V0#GO&(HRr41ZRRQD2J;rqG0%TS5Y?@`L{y8tX%n%r(H>)P<5 zEa@2Lr6cbmXsOlE**P1kP}wI^BmGMRz6eb5e95F%eP7{pK*A(*P-uY)w4n!{Z}=wDIf zmT2e*eY0bg4W`XDbU0J6h%Wwq6`9jQKqM=6I`;0B`=wO4pxFTmkR@r;RBGj9CGS<;VEr&hHMqrD@fg&cq z$W?T94bN8>0_DRj_gYTGTa6`OVi{>C7xF!#hPIIFfb}+G3GH^*%q2J${Ogd!HC%1X zblu7+Sj>~Y&25w`RSvUnu;Bp5&?Dy7rd(w<-BCt2$yf5C&GdaFAK`lMe^b;U&U_tV zN^zH}FPj3`V~7^#%v4dgxLYZOrWYwM-m~&Z$Qj2O1z(@v8pEh%l~Qe=znMnjNHmA& zf%P$XT93}SQelgyqpl_pR&ZFRSj1IAZnd&(m!DG0!x_VH@VQ1sa2j8;h4J9KO^OVeePQD>nZ4eTSrWmg}si!E=v$RgWH zx=`-5wEg07Z1md-HKXz!&NQ8d>fp*I?CvMzT+O0%yS%es?pga;VQ9Ri#d~c8!&D@98Xs0f+AXo4uz7qp9R+z<{;^@BJ7HtxrfHB8+p5Dy* z2;V}rA4>1f)C#e@-cUGV1hrvt3mqZ;g0r6$G5E?xbf*$SA(k^`FG!o?zd^(?+4)Tz zpMM;|_A{zXT$7}}g=sbIn7+Ecj?ZJOYJH^M{0O7c4;q7oP&);57$@^h=8WR)l*SCJ zPV?=Q=O9dAi~LUbO$0x7mjEpnz?;F40@JKxI}t}u?TyT8&bXAYn|ykec5x+1j$z)u zm9UFx7OQg3WX!Rbu-klkmAAgxs~F|^hVXynATa)Q-39e8`@4ew_(Ai(Fnc{4;SRO4dn70(h#bZQXw4 zxg>Y8xL733l*kEVMUfLBMg<@%{vs751tXPAWtJi*WzLMuj6?*(sp~bwpw(1NX>CG` z&~p`1T5s)sZt8eeTc-=M?|aGdDK{f0@}Ga;`+hhZ+; zuP-d4?$p((nB-`xqQcCIFs!rEK6we*((e5w((R^D6?LtTVr_R{56JRFmQyN*(a!3{ z2Wa`ZBnw0Y$ROGdjtyXAbIx~HQT>*Xg!9&!e?(@VtHR8&F(si(-8!_&9NQq%uV>FXE5#q7Ev4ms_(atW zRo!3|=yXa(m_{z%1(Wqdj@mQj!cf9d^Os!9)kBoRy9B>lz4@O0P{$M|4x&5cLYq|T z2@)wph{sZp@&)Y`KvOJW64=!WQw3Fyo>{%LDL;@}+uw75sR9VmDP#2wqM=nR1*lij}t? zRwMRVzhPF^+5q9(X(XoS&4*bU$Z)K#vE``~bz%(=I=nWYbR&<5cV+q#%59Yk1teBI zY{+IKBn*rGUHmn3XHZL|`TR4UB&}@gY~GjZ>psGwGB8&C;j#`R)b;z@)MldI`Q+Ib zy^CXrz%T|unbO1yuj=hAo8H<7@NFbqwLtE8hrseyDL@ZStXimFLu}us=;BWp#|ezC z9{FHc$6uDc5b_f(1DlR@P;*53W0)7JZwtS9IrAg*PT*ECPjl2XQ$`9#oiQvEAb{!} zi1h4(Vt3QPVb%^XdNK>q>Dkm%f$bxT7OPdFyXuQMBh#INNNQdArW`r{@md~y8eOPt zSx2;?0YLH0>Tm0gf0&NC0}p9v6hGa0PRW1N4?)muaQlFNYe?;Ss&kfM(8Y|Q8nI+az^q4_BA03iQxC` znd-(a>nY^U%|=E1qztI})H;^iyUI8VT~ zfdCl+wv-@2wleaq^2616=B0_u#E}jX(neUu19TBO7_TuzL^)6nVTJ zu!Ve4w^xRyrlgUg1&AqDaVt`ZDog0j>5u}oHeM*O|AFa|xMT5|0}`F6u_($&FVtH` zV8eeqkiX`Tu125CJVOMp;No)gNK(Im`$~b>yPM6npsl*7r^sciD~V{SD>;;50J;Mn z(G6^F;e2JBSdO3GTt5-3K8zLocEvVk*vI0>W_7@Bo_~4OAf)XhHmu4*(>qxFsq@~ z5;ky}zk_AoH$NRrRC4EO-kDilBlzXaOPTO8vCSjlWmFo*{yBjnN>iT_0%Ec+?ml{- z?4{9m`^q33q@*Idx0X3~{JeD-kLwU#VTA3Cw64R}1e>>y>Pj0?qDP|W;T{!SwXF;fa z8e&Qi&%#O%6ZZ$Ku+vOJCq|xJ3(5Q`tP66@4NIXc#{P)nVdv4ZH--)0(>ioF{H2Do zAW@^!YHTwoURN)2&s)g`;_f239_Yd;2vPghbj7JdDaRQnDifU9cvdYG$5cf%fuk9P z)>LKi8$8mlI4a53103UwMa`aIg}#vsA!NEMg*r}UZIzv{m()*FNiQ#F}7Oms2L0cYv6^@vyYD-BQz>nh8gduyj&2VJ}mc zBaA`(aAVOypNQ{luoId@B<5;nv!7^Y50ttqic!Jf#-i0>0HMe%TLUHj@*?qgs%Xmw z!b-VemSLruDxmC=z29X)Mz8v?`{d2}JGUDfIWG)RcejzOosH#fo3?YK1y_y3u&q_|T ziu&?TfePFF!UF-#&8V?g_R&Q7@*J16!@E=8+n<{ZRENG98_MVi>|rvc%$K z9;JGR`tYUbR!tbJ0>ua*IE(|@#$`l1d(Iq>yHsdB>RC_HvP@q4H!Rzzki zL&Y2HH;h1I9Okq6q8Y%fzj&iNt-SN^?f>F<2S9+6>sB4=l#F^ecMFbsOyoiD*hH`f zmPxvpq8C?(McqKZrB=N1FLrS*oR&o`;^1p-U!!Zyg=71ZvW}6WW~_*fDu{Y*p1WOI zl(1%7$6ndzK
5H%%tBE4U3X*WC#PRt}vHctQtXkpU9|b2ocaX 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Ð|H!Vm@v1y~dXi=*I( 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
-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 diff --git a/src/com/garbagemule/ArenaPlugin/Arena.java b/src/com/garbagemule/ArenaPlugin/Arena.java new file mode 100644 index 0000000..883ee9f --- /dev/null +++ b/src/com/garbagemule/ArenaPlugin/Arena.java @@ -0,0 +1,116 @@ +package com.garbagemule.ArenaPlugin; + +import org.bukkit.entity.Player; + +public interface Arena +{ + /** + * Start the arena session. + * This method should warp all players to their respective warp points, start all + * needed timers, clear/populate all sets and lists, and flag all booleans. + */ + public void startArena(); + + /** + * Stop the arena session. + * Distribute rewards, clean up arena floor and reset everything to how it was before + * the arena session was started. + */ + public void endArena(); + + /** + * Force the arena to start. + * If some players are ready, this method will force all non-ready players to leave, + * and the arena will start with only the currently ready players. + * @return true, if the arena was successfully started, false otherwise + */ + public boolean forceStart(); + + /** + * Force the arena to end. + * Returns all players to their entry locations, distributes rewards, cleans the arena + * floor, as well as all lists, sets and maps. Calling this method will return the + * arena to the state it would be in right after MobArena has loaded. + * @return true, if the session was successfully ended. + */ + public boolean forceEnd(); + + /** + * Player joins the arena/lobby. + * The player should either enter with an empty inventory, or have their inventory + * stored upon entering, such that the classes in the lobby/arena will be the only + * means of equipment. The player's previous location and health is also stored. + * @param p A player + * @precondition Calling canJoin(p) for the given player must return true. + */ + public void playerJoin(Player p); + + /** + * Player leaves the arena or lobby. + * Upon leaving, the player will have their inventory restored (if it was stored + * on join), as well as their health. They will be completely discarded/cleared from + * the arena, such that they no longer reside in any collections. + * @param p A player + * @precondition Calling canLeave(p) for the given player must return true. + */ + public void playerLeave(Player p); + + /** + * Player joins the spectator area. + * The player takes a spectator role, meaning they cannot participate in the arena + * in any way. The player's location and health is stored upon spectating, and of + * course restored upon leaving. + * @param p A player + * @precondition Calling canSpec(p) for the given player must return true. + */ + public void playerSpec(Player p); + + /** + * Player dies in the arena. + */ + public void playerDeath(Player p); + + /** + * Player signals that they are ready. + */ + public void playerReady(Player p); + + /** + * Check if a player can join the arena. + * @param p A player + * @return true, if the player is eligible to join the arena. + */ + public boolean canJoin(Player p); + + /** + * Check if a player can leave the arena. + * @param p A player + * @return true, if the player is eligible to leave the arena. + */ + public boolean canLeave(Player p); + + /** + * Check if a player can spectate the arena. + * @param p A player + * @return true, if the player is eligible for spectating. + */ + public boolean canSpec(Player p); + + /** + * Check if the arena is enabled. + * @return true, if the arena is enabled. + */ + public boolean isEnabled(); + + /** + * Check if the arena is set up and ready for use. + * @return true, if the arena is ready for use. + */ + public boolean isSetup(); + + /** + * Check if the arena is running. + * @return true, if the arena is running. + */ + public boolean isRunning(); +} diff --git a/src/com/garbagemule/ArenaPlugin/ArenaPlugin.java b/src/com/garbagemule/ArenaPlugin/ArenaPlugin.java new file mode 100644 index 0000000..b751cb4 --- /dev/null +++ b/src/com/garbagemule/ArenaPlugin/ArenaPlugin.java @@ -0,0 +1,6 @@ +package com.garbagemule.ArenaPlugin; + +public interface ArenaPlugin +{ + public Master getMaster(); +} diff --git a/src/com/garbagemule/ArenaPlugin/Master.java b/src/com/garbagemule/ArenaPlugin/Master.java new file mode 100644 index 0000000..6a66c99 --- /dev/null +++ b/src/com/garbagemule/ArenaPlugin/Master.java @@ -0,0 +1,16 @@ +package com.garbagemule.ArenaPlugin; + +import java.util.List; + +import org.bukkit.entity.Player; + +public interface Master +{ + //public List getArenas(); + + //public List getEnabledArenas(); + + //public List getPermittedArenas(Player p); + + +} diff --git a/src/com/garbagemule/MobArena/AbstractArena.java b/src/com/garbagemule/MobArena/AbstractArena.java index 1af1abc..f9d7670 100644 --- a/src/com/garbagemule/MobArena/AbstractArena.java +++ b/src/com/garbagemule/MobArena/AbstractArena.java @@ -1,65 +1,44 @@ package com.garbagemule.MobArena; -import java.util.LinkedList; -import java.util.List; import java.util.Map; import java.util.Set; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -public abstract class AbstractArena implements Arenaz +import com.garbagemule.ArenaPlugin.ArenaPlugin; + +public abstract class AbstractArena implements ArenaInterface { - - private String name; - private World world; - private MobArena plugin; + private String name; + private World world; + private ArenaPlugin plugin; private boolean enabled, setup, running; private Set arenaPlayers, lobbyPlayers, readyPlayers, specPlayers; private Map playerClassMap; private Map locations; - private Map healthMap; + private Map healths; - /** - * Start the arena session. - * This method should warp all players to their respective warp points, start all - * needed timers, clear/populate all sets and lists, and flag all booleans. - */ + public AbstractArena(String name, World world, ArenaPlugin plugin) + { + if (world == null) + throw new NullPointerException("[" + plugin.getClass().getSimpleName() + "] ERROR! World for arena '" + name + "' does not exist!"); + + this.name = name; + this.world = world; + this.plugin = plugin; + } + public abstract void startArena(); - /** - * Stop the arena session. - * Distribute rewards, clean up arena floor and reset everything to how it was before - * the arena session was started, false otherwise - */ public abstract void endArena(); - - /** - * Force the arena to start. - * If some players are ready, this method will force all non-ready players to leave, - * and the arena will start with only the currently ready players. - * @return true, if the arena was successfully started, false otherwise - */ + public abstract boolean forceStart(); - - /** - * Force the arena to end. - * Returns all players to their entry locations, distributes rewards, cleans the arena - * floor, as well as all lists, sets and maps. Calling this method will return the - * arena to the state it would be in right after MobArena has loaded. - * @return true, if the session was successfully ended. - */ + public abstract boolean forceEnd(); - - /** - * Player joins the arena/lobby. - * @param p A player - * @precondition Calling canJoin(p) for the given player must return true. - */ +/* public void playerJoin(Player p) { storePlayerData(p, p.getLocation()); @@ -67,12 +46,7 @@ public abstract class AbstractArena implements Arenaz p.setHealth(20); movePlayerToLobby(p); } - - /** - * Player leaves the arena or lobby. - * @param p A player - * @precondition Calling canLeave(p) for the given player must return true. - */ +*/ /* public void playerLeave(Player p) { @@ -86,66 +60,29 @@ public abstract class AbstractArena implements Arenaz endArena(); }*/ - /** - * Player joins the spectator area. - * @param p A player - * @precondition Calling canSpec(p) for the given player must return true. - */ + public abstract void playerSpec(Player p); - - /** - * Player dies in the arena. - */ + public abstract void playerDeath(Player p); - - /** - * Player signals that they are ready. - */ + public abstract void playerReady(Player p); - - /** - * Check if a player can join the arena. - * @param p A player - * @return true, if the player is eligible to join the arena. - */ + public abstract boolean canJoin(Player p); - - /** - * Check if a player can leave the arena. - * @param p A player - * @return true, if the player is eligible to leave the arena. - */ + public abstract boolean canLeave(Player p); - - /** - * Check if a player can spectate the arena. - * @param p A player - * @return true, if the player is eligible for spectating. - */ + public abstract boolean canSpec(Player p); - - /** - * Check if the arena is enabled. - * @return true, if the arena is enabled. - */ + public boolean isEnabled() { return enabled; } - - /** - * Check if the arena is set up and ready for use. - * @return true, if the arena is ready for use. - */ + public boolean isSetup() { return setup; } - - /** - * Check if the arena is running. - * @return true, if the arena is running. - */ + public boolean isRunning() { return running; @@ -159,15 +96,21 @@ public abstract class AbstractArena implements Arenaz if (!locations.containsKey(p)) locations.put(p, loc); - if (!healthMap.containsKey(p)) - healthMap.put(p, p.getHealth()); + if (!healths.containsKey(p)) + healths.put(p, p.getHealth()); } public abstract void movePlayerToLobby(Player p); public abstract void movePlayerToSpec(Player p); - public abstract void movePlayerToEntry(Player p); + public void movePlayerToEntry(Player p) + { + Location entry = locations.get(p); + if (entry == null) return; + + p.teleport(entry); + } public abstract void restoreInvAndGiveRewards(final Player p); } diff --git a/src/com/garbagemule/MobArena/Arena.java b/src/com/garbagemule/MobArena/Arena.java index e39566b..ad168c9 100644 --- a/src/com/garbagemule/MobArena/Arena.java +++ b/src/com/garbagemule/MobArena/Arena.java @@ -47,6 +47,7 @@ import com.garbagemule.MobArena.MAMessages.Msg; import com.garbagemule.MobArena.repairable.Repairable; import com.garbagemule.MobArena.repairable.RepairableComparator; import com.garbagemule.MobArena.repairable.RepairableContainer; +import com.garbagemule.MobArena.util.InventoryItem; import com.garbagemule.MobArena.util.WaveUtils; import com.garbagemule.MobArena.waves.BossWave; import com.garbagemule.MobArena.waves.Wave; @@ -63,7 +64,7 @@ public class Arena protected boolean edit, waveClear, detCreepers, detDamage, lightning, hellhounds, specOnDeath, shareInArena; protected Location p1, p2, l1, l2, arenaLoc, lobbyLoc, spectatorLoc; - protected Map spawnpoints; + protected Map spawnpoints, containers; protected String logging; // Wave/reward/entryfee fields @@ -89,7 +90,7 @@ public class Arena protected Set blocks; protected Set pets; protected Map petMap; - protected LinkedList repairables, containers; + protected LinkedList repairables, containables; // Spawn overriding protected int spawnMonsters; @@ -137,7 +138,7 @@ public class Arena classMap = new HashMap(); randoms = new HashSet(); repairables = new LinkedList(); - containers = new LinkedList(); + containables = new LinkedList(); running = false; edit = false; @@ -179,7 +180,10 @@ public class Arena p.setHealth(20); } - // Spawn pets. + // Set the boolean. + running = true; + + // Spawn pets (must happen after 'running = true;') spawnPets(); // Copy the singleWaves Set. @@ -193,9 +197,6 @@ public class Arena log = new ArenaLog(plugin, this); log.start(); - // Set the boolean. - running = true; - // Announce and notify. MAUtils.tellAll(this, Msg.ARENA_START.get()); for (MobArenaListener listener : plugin.getAM().listeners) @@ -339,7 +340,6 @@ public class Arena if (specOnDeath) { - //resetPlayer(p); clearPlayer(p); movePlayerToSpec(p); } @@ -353,13 +353,14 @@ public class Arena spawnThread.updateTargets(); MAUtils.tellAll(this, Msg.PLAYER_DIED.get(p.getName())); - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() - { - public void run() + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, + new Runnable() { - endArena(); - } - }); + public void run() + { + endArena(); + } + }); // Notify listeners. for (MobArenaListener listener : plugin.getAM().listeners) @@ -520,14 +521,12 @@ public class Arena { public void run() { - for (int x = p1.getBlockX(); x <= p2.getBlockX(); x++) - for (int y = p1.getBlockY(); y <= p2.getBlockY(); y++) - for (int z = p1.getBlockZ(); z <= p2.getBlockZ(); z++) - { - BlockState state = world.getBlockAt(x,y,z).getState(); - if (state instanceof ContainerBlock) - containers.add(new RepairableContainer(state, false)); - } + for (Location loc : containers.values()) + { + BlockState state = world.getBlockAt(loc).getState(); + if (state instanceof ContainerBlock) + containables.add(new RepairableContainer(state, false)); + } } }); } @@ -539,7 +538,7 @@ public class Arena { public void run() { - for (Repairable r : containers) + for (Repairable r : containables) r.repair(); } }); @@ -807,6 +806,7 @@ public class Arena lobbyLoc = MAUtils.getArenaCoord(config, world, configName, "lobby"); spectatorLoc = MAUtils.getArenaCoord(config, world, configName, "spectator"); spawnpoints = MAUtils.getArenaSpawnpoints(config, world, configName); + containers = MAUtils.getArenaContainers(config, world, configName); // NEW WAVES singleWaves = WaveUtils.getWaves(this, config, WaveBranch.SINGLE); @@ -1025,12 +1025,12 @@ public class Arena return classes; } - public Collection getAllSpawnpoints() + public List getAllSpawnpoints() { - return spawnpoints.values(); + return new ArrayList(spawnpoints.values()); } - public Collection getSpawnpoints() + public List getSpawnpoints() { List result = new ArrayList(spawnpoints.size()); @@ -1040,7 +1040,7 @@ public class Arena result.add(entry.getValue()); } - return !result.isEmpty() ? result : spawnpoints.values(); + return !result.isEmpty() ? result : new ArrayList(spawnpoints.values()); } public Location getBossSpawnpoint() @@ -1200,54 +1200,25 @@ public class Arena 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; - } + InventoryItem[] items = InventoryItem.parseItemStacks(inv.getContents()); + InventoryItem[] fee = InventoryItem.parseItemStacks(entryFee); - // 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); - } - } - } - } + // Take some economy money + for (InventoryItem item : InventoryItem.extractAllFromArray(MobArena.ECONOMY_MONEY_ID, fee)) + if (plugin.Methods.hasMethod()) + plugin.Method.getAccount(p.getName()).subtract(item.getAmount()); + + // Take any other items + for (InventoryItem item : fee) + InventoryItem.removeItemFromArray(item, items); - hasPaid.add(p); + // Turn everything back into ItemStacks + for (int i = 0; i < items.length; i++) + inv.setItem(i, items[i].toItemStack()); + return true; } - public void refund(Player p) - { - if (!hasPaid.contains(p)) - return; - - MAUtils.giveItems(p, entryFee, false, plugin); - hasPaid.remove(p); - } - public boolean canJoin(Player p) { if (!enabled) @@ -1266,12 +1237,14 @@ public class Arena MAUtils.tellPlayer(p, Msg.JOIN_PLAYER_LIMIT_REACHED); else if (joinDistance > 0 && !inRegionRadius(p.getLocation(), joinDistance)) MAUtils.tellPlayer(p, Msg.JOIN_TOO_FAR); - else if (!canAfford(p) || !takeFee(p)) + else if (emptyInvJoin && !MAUtils.hasEmptyInventory(p)) + MAUtils.tellPlayer(p, Msg.JOIN_EMPTY_INV); + /*else if (!canAfford(p) || !takeFee(p)) MAUtils.tellPlayer(p, Msg.JOIN_FEE_REQUIRED, MAUtils.listToString(entryFee, plugin)); else if (emptyInvJoin && !MAUtils.hasEmptyInventory(p)) MAUtils.tellPlayer(p, Msg.JOIN_EMPTY_INV); else if (!emptyInvJoin && !MAUtils.storeInventory(p)) - MAUtils.tellPlayer(p, Msg.JOIN_STORE_INV_FAIL); + MAUtils.tellPlayer(p, Msg.JOIN_STORE_INV_FAIL);*/ else return true; return false; diff --git a/src/com/garbagemule/MobArena/ArenaInterface.java b/src/com/garbagemule/MobArena/ArenaInterface.java new file mode 100644 index 0000000..d10255b --- /dev/null +++ b/src/com/garbagemule/MobArena/ArenaInterface.java @@ -0,0 +1,116 @@ +package com.garbagemule.MobArena; + +import org.bukkit.entity.Player; + +public interface ArenaInterface +{ + /** + * Start the arena session. + * This method should warp all players to their respective warp points, start all + * needed timers, clear/populate all sets and lists, and flag all booleans. + */ + public void startArena(); + + /** + * Stop the arena session. + * Distribute rewards, clean up arena floor and reset everything to how it was before + * the arena session was started. + */ + public void endArena(); + + /** + * Force the arena to start. + * If some players are ready, this method will force all non-ready players to leave, + * and the arena will start with only the currently ready players. + * @return true, if the arena was successfully started, false otherwise + */ + public boolean forceStart(); + + /** + * Force the arena to end. + * Returns all players to their entry locations, distributes rewards, cleans the arena + * floor, as well as all lists, sets and maps. Calling this method will return the + * arena to the state it would be in right after MobArena has loaded. + * @return true, if the session was successfully ended. + */ + public boolean forceEnd(); + + /** + * Player joins the arena/lobby. + * The player should either enter with an empty inventory, or have their inventory + * stored upon entering, such that the classes in the lobby/arena will be the only + * means of equipment. The player's previous location and health is also stored. + * @param p A player + * @precondition Calling canJoin(p) for the given player must return true. + */ + public void playerJoin(Player p); + + /** + * Player leaves the arena or lobby. + * Upon leaving, the player will have their inventory restored (if it was stored + * on join), as well as their health. They will be completely discarded/cleared from + * the arena, such that they no longer reside in any collections. + * @param p A player + * @precondition Calling canLeave(p) for the given player must return true. + */ + public void playerLeave(Player p); + + /** + * Player joins the spectator area. + * The player takes a spectator role, meaning they cannot participate in the arena + * in any way. The player's location and health is stored upon spectating, and of + * course restored upon leaving. + * @param p A player + * @precondition Calling canSpec(p) for the given player must return true. + */ + public void playerSpec(Player p); + + /** + * Player dies in the arena. + */ + public void playerDeath(Player p); + + /** + * Player signals that they are ready. + */ + public void playerReady(Player p); + + /** + * Check if a player can join the arena. + * @param p A player + * @return true, if the player is eligible to join the arena. + */ + public boolean canJoin(Player p); + + /** + * Check if a player can leave the arena. + * @param p A player + * @return true, if the player is eligible to leave the arena. + */ + public boolean canLeave(Player p); + + /** + * Check if a player can spectate the arena. + * @param p A player + * @return true, if the player is eligible for spectating. + */ + public boolean canSpec(Player p); + + /** + * Check if the arena is enabled. + * @return true, if the arena is enabled. + */ + public boolean isEnabled(); + + /** + * Check if the arena is set up and ready for use. + * @return true, if the arena is ready for use. + */ + public boolean isSetup(); + + /** + * Check if the arena is running. + * @return true, if the arena is running. + */ + public boolean isRunning(); +} diff --git a/src/com/garbagemule/MobArena/ArenaMaster.java b/src/com/garbagemule/MobArena/ArenaMaster.java index 1cc7cba..fd16e62 100644 --- a/src/com/garbagemule/MobArena/ArenaMaster.java +++ b/src/com/garbagemule/MobArena/ArenaMaster.java @@ -15,7 +15,9 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.util.config.Configuration; -public class ArenaMaster +import com.garbagemule.ArenaPlugin.Master; + +public class ArenaMaster implements Master { private MobArena plugin; private Configuration config; diff --git a/src/com/garbagemule/MobArena/ArenaPlayer.java b/src/com/garbagemule/MobArena/ArenaPlayer.java index c4efe41..fc3b215 100644 --- a/src/com/garbagemule/MobArena/ArenaPlayer.java +++ b/src/com/garbagemule/MobArena/ArenaPlayer.java @@ -3,6 +3,7 @@ package com.garbagemule.MobArena; import java.util.LinkedList; import java.util.List; +import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -13,6 +14,7 @@ public class ArenaPlayer public String className; public Arena arena; public List rewards; + public List blocks; protected boolean inArena, inLobby, inSpec, isReady; @@ -34,6 +36,7 @@ public class ArenaPlayer className = arena.classMap.get(player); rewards = new LinkedList(); + blocks = new LinkedList(); } public Player getPlayer() { return player; } diff --git a/src/com/garbagemule/MobArena/MABlockListener.java b/src/com/garbagemule/MobArena/MABlockListener.java index 109eab1..93fdd0a 100644 --- a/src/com/garbagemule/MobArena/MABlockListener.java +++ b/src/com/garbagemule/MobArena/MABlockListener.java @@ -1,8 +1,10 @@ package com.garbagemule.MobArena; +import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockListener; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockPhysicsEvent; import org.bukkit.event.block.BlockPlaceEvent; public class MABlockListener extends BlockListener @@ -19,6 +21,12 @@ public class MABlockListener extends BlockListener for (Arena arena : am.arenas) arena.eventListener.onBlockBreak(event); } + + public void onBlockBurn(BlockBurnEvent event) + { + for (Arena arena : am.arenas) + arena.eventListener.onBlockBurn(event); + } public void onBlockPlace(BlockPlaceEvent event) { @@ -31,4 +39,10 @@ public class MABlockListener extends BlockListener for (Arena arena : am.arenas) arena.eventListener.onBlockIgnite(event); } + + public void onBlockPhysics(BlockPhysicsEvent event) + { + for (Arena arena : am.arenas) + arena.eventListener.onBlockPhysics(event); + } } \ No newline at end of file diff --git a/src/com/garbagemule/MobArena/MACommands.java b/src/com/garbagemule/MobArena/MACommands.java index 602dbaa..dcfea9a 100644 --- a/src/com/garbagemule/MobArena/MACommands.java +++ b/src/com/garbagemule/MobArena/MACommands.java @@ -11,6 +11,7 @@ import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.World; import org.bukkit.entity.Player; +import org.bukkit.block.ContainerBlock; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.CommandExecutor; @@ -55,14 +56,16 @@ public class MACommands implements CommandExecutor COMMANDS.add("setwarp"); // Set arena/lobby/spec COMMANDS.add("spawnpoints"); // List spawnpoints COMMANDS.add("addspawn"); // Add a spawnpoint - COMMANDS.add("delspawn"); // Delete a spawnpoint + COMMANDS.add("delspawn"); // Delete a spawnpoint + COMMANDS.add("containers"); // List containers + COMMANDS.add("addcontainer"); // Add a container block + COMMANDS.add("delcontainer"); // Delete a container block COMMANDS.add("reset"); // Reset arena coordinates COMMANDS.add("addclass"); // Add a new class COMMANDS.add("delclass"); // Delete a class COMMANDS.add("checkdata"); // Check arena well formedness COMMANDS.add("auto-generate"); // Auto-generate arena COMMANDS.add("auto-degenerate"); // Restore cuboid - COMMANDS.add("lol"); } private boolean meanAdmins, showingRegion; private Server server; @@ -155,6 +158,10 @@ public class MACommands implements CommandExecutor if (p.isInsideVehicle()) p.leaveVehicle(); + // Take entry fee and store inventory + arena.takeFee(p); + if (!arena.emptyInvJoin) MAUtils.storeInventory(p); + // If player is in a bed, unbed! if (p.isSleeping()) { @@ -1070,6 +1077,77 @@ public class MACommands implements CommandExecutor return true; } + if (base.equals("containers")) + { + if (!console && !(player && plugin.has(p, "mobarena.setup.containers")) && !op) + { + MAUtils.tellPlayer(sender, Msg.MISC_NO_ACCESS); + return true; + } + + StringBuffer buffy = new StringBuffer(); + List containers = plugin.getConfig().getKeys("arenas." + am.selectedArena.configName() + ".coords.containers"); + + if (containers != null) + { + for (String s : containers) + { + buffy.append(s); + buffy.append(" "); + } + } + else + { + buffy.append(Msg.MISC_NONE); + } + + MAUtils.tellPlayer(sender, "Containers for arena '" + am.selectedArena.configName() + "': " + buffy.toString()); + return true; + } + + if (base.equals("addcontainer")) + { + if (!(player && plugin.has(p, "mobarena.setup.addchest")) && !op) + { + MAUtils.tellPlayer(sender, Msg.MISC_NO_ACCESS); + return true; + } + if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9]*$")) + { + MAUtils.tellPlayer(sender, "Usage: /ma addchest "); + return true; + } + if (!(p.getTargetBlock(null, 50).getState() instanceof ContainerBlock)) + { + MAUtils.tellPlayer(sender, "You must look at container."); + return true; + } + + MAUtils.setArenaCoord(plugin.getConfig(), am.selectedArena, "containers." + arg1, p.getTargetBlock(null, 50).getLocation()); + MAUtils.tellPlayer(sender, "Container '" + arg1 + "' added for arena \"" + am.selectedArena.configName() + "\""); + return true; + } + + if (base.equals("delcontainer")) + { + if (!console && !(player && plugin.has(p, "mobarena.setup.delcontainer")) && !op) + { + MAUtils.tellPlayer(sender, Msg.MISC_NO_ACCESS); + return true; + } + if (arg1 == null || !arg1.matches("^[a-zA-Z][a-zA-Z0-9]*$")) + { + MAUtils.tellPlayer(sender, "Usage: /ma delcontainer "); + return true; + } + + if (MAUtils.delArenaCoord(plugin.getConfig(), am.selectedArena, "containers." + arg1)) + MAUtils.tellPlayer(sender, "Container '" + arg1 + "' deleted for arena '" + am.selectedArena.configName() + "'"); + else + MAUtils.tellPlayer(sender, "Could not find the container '" + arg1 + "' for arena '" + am.selectedArena.configName() + "'"); + return true; + } + if (base.equals("checkdata")) { if (!console && !(player && plugin.has(p, "mobarena.setup.checkdata")) && !op) diff --git a/src/com/garbagemule/MobArena/MAListener.java b/src/com/garbagemule/MobArena/MAListener.java index eeba802..5b46fd8 100644 --- a/src/com/garbagemule/MobArena/MAListener.java +++ b/src/com/garbagemule/MobArena/MAListener.java @@ -11,12 +11,15 @@ import org.bukkit.block.Sign; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; +import org.bukkit.entity.Slime; import org.bukkit.entity.Wolf; import org.bukkit.event.Event.Result; import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockBurnEvent; +import org.bukkit.event.block.BlockEvent; import org.bukkit.event.block.BlockIgniteEvent; -import org.bukkit.event.block.BlockIgniteEvent.IgniteCause; +import org.bukkit.event.block.BlockPhysicsEvent; import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityCombustEvent; @@ -41,6 +44,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.material.Attachable; import org.bukkit.material.Bed; import org.bukkit.material.Door; +import org.bukkit.material.MaterialData; import org.bukkit.material.Redstone; import com.garbagemule.MobArena.MAMessages.Msg; @@ -57,14 +61,40 @@ public class MAListener implements ArenaListener this.plugin = plugin; } + public void onBlockPhysics(BlockPhysicsEvent event) + { + if (!arena.inRegion(event.getBlock().getLocation()) || arena.softRestore) + return; + + MaterialData data = event.getBlock().getState().getData(); + if (data instanceof Attachable || data instanceof Bed || data instanceof Door || data instanceof Redstone) + event.setCancelled(true); + } + public void onBlockBreak(BlockBreakEvent event) { - if (!arena.inRegion(event.getBlock().getLocation()) || arena.edit || (!arena.protect && arena.running)) + if (onBlockDestroy(event)) return; + event.setCancelled(true); + } + + public void onBlockBurn(BlockBurnEvent event) + { + if (onBlockDestroy(event)) + return; + + event.setCancelled(true); + } + + private boolean onBlockDestroy(BlockEvent event) + { + if (!arena.inRegion(event.getBlock().getLocation()) || arena.edit || (!arena.protect && arena.running)) + return true; + Block b = event.getBlock(); if (arena.blocks.remove(b) || b.getType() == Material.TNT) - return; + return true; if (arena.softRestore && arena.running) { @@ -85,10 +115,10 @@ public class MAListener implements ArenaListener if (!arena.softRestoreDrops) b.setTypeId(0); - return; + return true; } - event.setCancelled(true); + return false; } public void onBlockPlace(BlockPlaceEvent event) @@ -104,6 +134,7 @@ public class MAListener implements ArenaListener if (mat == Material.WOODEN_DOOR || mat == Material.IRON_DOOR_BLOCK) arena.blocks.add(b.getRelative(0,1,0)); + return; } @@ -116,8 +147,21 @@ public class MAListener implements ArenaListener if (!arena.inRegion(event.getBlock().getLocation())) return; - if (event.getCause() == IgniteCause.LIGHTNING) - event.setCancelled(true); + switch (event.getCause()) + { + case LIGHTNING: + event.setCancelled(true); + break; + case SPREAD: + case FLINT_AND_STEEL: + if (arena.running) + arena.blocks.add(event.getBlock()); + else + event.setCancelled(true); + break; + default: + break; + } } public void onCreatureSpawn(CreatureSpawnEvent event) @@ -125,8 +169,12 @@ public class MAListener implements ArenaListener if (!arena.inRegion(event.getLocation())) // || event.getSpawnReason() == SpawnReason.CUSTOM) return; - // If running == true, setCancelled(false), and vice versa. - event.setCancelled(!arena.running); + LivingEntity entity = (LivingEntity) event.getEntity(); + if (arena.running && entity instanceof Slime) + arena.monsters.add(entity); + else + // If running == true, setCancelled(false), and vice versa. + event.setCancelled(!arena.running); } public void onEntityExplode(EntityExplodeEvent event) @@ -532,7 +580,7 @@ public class MAListener implements ArenaListener public void onPlayerTeleport(PlayerTeleportEvent event) { - if (arena.edit || !arena.enabled || !arena.setup || arena.allowWarp) + if (!arena.running || arena.edit || !arena.enabled || !arena.setup || arena.allowWarp) return; if (!arena.inRegion(event.getTo()) && !arena.inRegion(event.getFrom())) diff --git a/src/com/garbagemule/MobArena/MAMessages.java b/src/com/garbagemule/MobArena/MAMessages.java index c3a57f1..828ff5a 100644 --- a/src/com/garbagemule/MobArena/MAMessages.java +++ b/src/com/garbagemule/MobArena/MAMessages.java @@ -106,6 +106,11 @@ public class MAMessages { m.msg = msg; } + + public String toString() + { + return msg; + } } /** diff --git a/src/com/garbagemule/MobArena/MAPlayerListener.java b/src/com/garbagemule/MobArena/MAPlayerListener.java index 635e411..478c8a1 100644 --- a/src/com/garbagemule/MobArena/MAPlayerListener.java +++ b/src/com/garbagemule/MobArena/MAPlayerListener.java @@ -13,6 +13,7 @@ import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; + public class MAPlayerListener extends PlayerListener { private MobArena plugin; @@ -90,6 +91,6 @@ public class MAPlayerListener extends PlayerListener { MAUtils.checkForUpdates(plugin, p, false); } - }, 100); + }, 60); } } diff --git a/src/com/garbagemule/MobArena/MASpawnThread.java b/src/com/garbagemule/MobArena/MASpawnThread.java index 6127b27..df0da9c 100644 --- a/src/com/garbagemule/MobArena/MASpawnThread.java +++ b/src/com/garbagemule/MobArena/MASpawnThread.java @@ -64,6 +64,10 @@ public class MASpawnThread implements Runnable if (arena.waveClear && wave > 1 && !arena.monsters.isEmpty()) return; + // Check if we're on a boss wave + if (!arena.waveClear && arena.bossWave != null) + return; + // Grant rewards (if any) for this wave grantRewards(wave); @@ -82,7 +86,7 @@ public class MASpawnThread implements Runnable { List tmp = new LinkedList(arena.monsters); for (Entity e : tmp) - if (e.isDead()) + if (e.isDead() || !arena.inRegion(e.getLocation())) arena.monsters.remove(e); } diff --git a/src/com/garbagemule/MobArena/MAUtils.java b/src/com/garbagemule/MobArena/MAUtils.java index 73b8706..13ddc69 100644 --- a/src/com/garbagemule/MobArena/MAUtils.java +++ b/src/com/garbagemule/MobArena/MAUtils.java @@ -15,6 +15,8 @@ import java.util.Map; import java.util.HashMap; import java.util.Random; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import net.minecraft.server.WorldServer; @@ -36,7 +38,7 @@ import org.bukkit.util.config.Configuration; import com.garbagemule.MobArena.MAMessages.Msg; import com.garbagemule.MobArena.util.EntityPosition; -import com.garbagemule.MobArena.util.MAInventoryItem; +import com.garbagemule.MobArena.util.InventoryItem; public class MAUtils { @@ -133,6 +135,20 @@ public class MAUtils // ///////////////////////////////////////////////////////////////////// */ + public static Map getArenaContainers(Configuration config, World world, String arena) + { + Map containers = new HashMap(); + String arenaPath = "arenas." + arena + ".coords.containers"; + + if (config.getKeys(arenaPath) == null) + return containers; + + for (String point : config.getKeys(arenaPath)) + containers.put(point, makeLocation(world, config.getString(arenaPath + "." + point))); + + return containers; + } + /** * Grab all the spawnpoints for a specific arena. */ @@ -353,11 +369,11 @@ public class MAUtils { backupFile.createNewFile(); - MAInventoryItem[] inv = new MAInventoryItem[armor.length + items.length]; + InventoryItem[] inv = new InventoryItem[armor.length + items.length]; for (int i = 0; i < armor.length; i++) - inv[i] = stackToItem(armor[i]); + inv[i] = InventoryItem.parseItemStack(armor[i]); for (int i = 0; i < items.length; i++) - inv[armor.length + i] = stackToItem(items[i]); + inv[armor.length + i] = InventoryItem.parseItemStack(items[i]); FileOutputStream fos = new FileOutputStream(backupFile); ObjectOutputStream oos = new ObjectOutputStream(fos); @@ -389,7 +405,7 @@ public class MAUtils // Grab the MAInventoryItem array from the backup-file. FileInputStream fis = new FileInputStream(backupFile); ObjectInputStream ois = new ObjectInputStream(fis); - MAInventoryItem[] fromFile = (MAInventoryItem[]) ois.readObject(); + InventoryItem[] fromFile = (InventoryItem[]) ois.readObject(); ois.close(); // Split that shit. @@ -397,17 +413,20 @@ public class MAUtils ItemStack[] items = new ItemStack[fromFile.length-4]; for (int i = 0; i < 4; i++) - armor[i] = itemToStack(fromFile[i]); + armor[i] = InventoryItem.toItemStack(fromFile[i]); for (int i = 4; i < fromFile.length; i++) - items[i - 4] = itemToStack(fromFile[i]); + items[i - 4] = InventoryItem.toItemStack(fromFile[i]); // Restore the inventory. PlayerInventory inv = p.getInventory(); inv.setArmorContents(armor); + for (int i = 0; i < items.length; i++) + inv.setItem(i, items[i]); + /* for (ItemStack stack : items) if (stack != null) inv.addItem(stack); - + */ // Remove the backup-file. backupFile.delete(); } @@ -421,20 +440,6 @@ public class MAUtils return true; } - private static MAInventoryItem stackToItem(ItemStack stack) - { - if (stack == null) - return new MAInventoryItem(-1, -1, (short)0); - return new MAInventoryItem(stack.getTypeId(), stack.getAmount(), stack.getDurability()); - } - - private static ItemStack itemToStack(MAInventoryItem item) - { - if (item.getTypeId() == -1) - return null; - return new ItemStack(item.getTypeId(), item.getAmount(), item.getDurability()); - } - /* Checks if all inventory and armor slots are empty. */ public static boolean hasEmptyInventory(Player p) { @@ -636,6 +641,20 @@ public class MAUtils // ///////////////////////////////////////////////////////////////////// */ + /** + * Check if a Location is inside two points (x1,y1,z1) (x2,y2,z2) + */ + public static boolean inRegion(Location loc, double x1, double y1, double z1, double x2, double y2, double z2) + { + double x = loc.getBlockX(); + double y = loc.getBlockY(); + double z = loc.getBlockZ(); + + return x >= x1 && x <= x2 && + y >= y1 && y <= y2 && + z >= z1 && z <= z2; + } + /** * Create a frame spanned by the two input coordinates. * @return An int arry holding x,y,z and the original type IDs of each block. @@ -1153,6 +1172,7 @@ public class MAUtils // Open the connection and don't redirect. HttpURLConnection con = (HttpURLConnection) baseURI.toURL().openConnection(); + con.setConnectTimeout(5000); con.setInstanceFollowRedirects(false); String header = con.getHeaderField("Location"); @@ -1167,18 +1187,27 @@ public class MAUtils // Otherwise, grab the location header to get the real URI. String url = new URI(con.getHeaderField("Location")).toString(); - // If the current version is the same as the thread version. - if (url.contains(plugin.getDescription().getVersion().replace(".", "-"))) - { - if (!response) - return; - - tellPlayer(p, "Your version of MobArena is up to date!"); + // Set up the regex and matcher + Pattern regex = Pattern.compile("v([0-9]+-)*[0-9]+"); + Matcher matcher = regex.matcher(url); + if (!matcher.find()) return; + + // Split the version strings + String[] forumVersion = matcher.group().substring(1).split("-"); + String[] thisVersion = plugin.getDescription().getVersion().split("\\."); + + // If the current version is older than the forum version, notify. + for (int i = 0; i < Math.min(forumVersion.length, thisVersion.length); i++) + { + if (Integer.parseInt(forumVersion[i]) > Integer.parseInt(thisVersion[i])) + { + tellPlayer(p, "There is a new version of MobArena available!");; + return; + } } - // Otherwise, notify the player that there is a new version. - tellPlayer(p, "There is a new version of MobArena available!");; + if (response) tellPlayer(p, "Your version of MobArena is up to date!"); } catch (Exception e) { diff --git a/src/com/garbagemule/MobArena/MobArena.java b/src/com/garbagemule/MobArena/MobArena.java index dacad15..62a239b 100644 --- a/src/com/garbagemule/MobArena/MobArena.java +++ b/src/com/garbagemule/MobArena/MobArena.java @@ -1,6 +1,7 @@ package com.garbagemule.MobArena; import java.io.File; +import java.util.Random; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -20,12 +21,14 @@ import com.nijikokun.bukkit.Permissions.Permissions; import com.garbagemule.MobArena.util.FileUtils; import com.garbagemule.register.payment.Method; import com.garbagemule.register.payment.Methods; +import com.garbagemule.ArenaPlugin.ArenaPlugin; +import com.garbagemule.ArenaPlugin.Master; /** * MobArena * @author garbagemule */ -public class MobArena extends JavaPlugin +public class MobArena extends JavaPlugin implements ArenaPlugin { private Configuration config; private ArenaMaster am; @@ -40,8 +43,10 @@ public class MobArena extends JavaPlugin // Global variables public static PluginDescriptionFile desc; public static File dir, arenaDir; - public static final double MIN_PLAYER_DISTANCE = 256.0; + public static final double MIN_PLAYER_DISTANCE = 15.0; + public static final double MIN_PLAYER_DISTANCE_SQUARED = MIN_PLAYER_DISTANCE * MIN_PLAYER_DISTANCE; public static final int ECONOMY_MONEY_ID = -29; + public static Random random = new Random(); public void onEnable() { @@ -109,8 +114,10 @@ public class MobArena extends JavaPlugin // Register events. pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Highest, this); + pm.registerEvent(Event.Type.BLOCK_BURN, blockListener, Priority.Highest, this); pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Highest, this); - pm.registerEvent(Event.Type.BLOCK_IGNITE, blockListener, Priority.Normal, this); + pm.registerEvent(Event.Type.BLOCK_PHYSICS, blockListener, Priority.Normal, this); + pm.registerEvent(Event.Type.BLOCK_IGNITE, blockListener, Priority.Highest, this); pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, playerListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_BUCKET_EMPTY, playerListener, Priority.Normal, this); @@ -174,6 +181,11 @@ public class MobArena extends JavaPlugin public ArenaMaster getAM() { return am; } // More convenient. public ArenaMaster getArenaMaster() { return am; } + public Master getMaster() + { + return am; + } + private String getHeader() { String sep = System.getProperty("line.separator"); diff --git a/src/com/garbagemule/MobArena/MobArenaHandler.java b/src/com/garbagemule/MobArena/MobArenaHandler.java index e399183..1b429f8 100644 --- a/src/com/garbagemule/MobArena/MobArenaHandler.java +++ b/src/com/garbagemule/MobArena/MobArenaHandler.java @@ -3,13 +3,12 @@ package com.garbagemule.MobArena; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; public class MobArenaHandler { - MobArena plugin; - boolean ma = false; + private MobArena plugin; /** * Primary constructor. @@ -17,26 +16,24 @@ public class MobArenaHandler */ public MobArenaHandler() { - Plugin maPlugin = (MobArena) Bukkit.getServer().getPluginManager().getPlugin("MobArena"); - - if (maPlugin == null) - return; - - ma = true; - plugin = (MobArena) maPlugin; + plugin = (MobArena) Bukkit.getServer().getPluginManager().getPlugin("MobArena"); } + + + /*////////////////////////////////////////////////////////////////// + + REGION/LOCATION METHODS + + //////////////////////////////////////////////////////////////////*/ + /** - * Check if a Location is inside of an arena region. + * Check if a Location is inside of any arena region. * @param loc A location. * @return true, if the Location is inside of any arena region. */ public boolean inRegion(Location loc) { - // If the plugin doesn't exist, always return false. - if (!ma || plugin.getAM() == null) return false; - - // Return true if location is within just one arena's region. for (Arena arena : plugin.getAM().arenas) if (arena.inRegion(loc)) return true; @@ -45,26 +42,50 @@ public class MobArenaHandler } /** - * Check if a Location is inside of a specific arena region. + * Check if a Location is inside of a specific arena region (by arena object). * @param arena An Arena object * @param loc A location * @return true, if the Location is inside of the arena region. */ - public boolean inRegion(Arena arena, Location loc) { return (ma && arena != null && arena.inRegion(loc)); } + public boolean inRegion(Arena arena, Location loc) + { + return (arena != null && arena.inRegion(loc)); + } + + /** + * Check if a Location is inside of a specific arena region (by arena name). + * @param arenaName The name of an arena + * @param loc A location + * @return true, if the Location is inside of the arena region. + */ + public boolean inRegion(String arenaName, Location loc) + { + Arena arena = plugin.getAM().getArenaWithName(arenaName); + if (arena == null) + throw new NullPointerException("There is no arena with that name"); + + return arena.inRegion(loc); + } /** * Check if a Location is inside of the region of an arena that is currently running. * @param loc A location. * @return true, if the Location is inside of the region of an arena that is currently running. */ - public boolean inRunningRegion(Location loc) { return inRegion(loc, false, true); } + public boolean inRunningRegion(Location loc) + { + return inRegion(loc, false, true); + } /** * Check if a Location is inside of the region of an arena that is currently enabled. * @param loc A location. * @return true, if the Location is inside of the region of an arena that is currently enabled. */ - public boolean inEnabledRegion(Location loc) { return inRegion(loc, true, false); } + public boolean inEnabledRegion(Location loc) + { + return inRegion(loc, true, false); + } /** * Private helper method for inRunningRegion and inEnabledRegion @@ -76,7 +97,7 @@ public class MobArenaHandler private boolean inRegion(Location loc, boolean enabled, boolean running) { // If the plugin doesn't exist, always return false. - if (!ma || plugin.getAM() == null) return false; + if (plugin.getAM() == null) return false; // Return true if location is within just one arena's region. for (Arena arena : plugin.getAM().arenas) @@ -87,40 +108,124 @@ public class MobArenaHandler return false; } + + + /*////////////////////////////////////////////////////////////////// + + PLAYER/MONSTER/PET METHODS + + //////////////////////////////////////////////////////////////////*/ + + /** + * Check if a player is in a MobArena arena (by Player). + * @param player The player + * @return true, if the player is in an arena + */ + public boolean isPlayerInArena(Player player) + { + return (plugin.getAM().getArenaWithPlayer(player) != null); + } + + /** + * Check if a player is in a MobArena arena (by name). + * @param playerName The name of the player + * @return true, if the player is in an arena + */ + public boolean isPlayerInArena(String playerName) + { + return (plugin.getAM().getArenaWithPlayer(playerName) != null); + } + + /** + * Get the MobArena class of a given player. + * @param player The player + * @return The class name of the player if the player is in the arena, null otherwise + */ + public String getPlayerClass(Player player) + { + Arena arena = plugin.getAM().getArenaWithPlayer(player); + if (arena == null) return null; + + return arena.classMap.get(player); + } + + /** + * Get the MobArena class of a given player in a given arena. + * This method is faster than the above method, granted the Arena object is known. + * @param arena The MobArena arena to check in + * @param player The player to look up + * @return The class name of the player, if the player is in the arena, null otherwise + */ + public String getPlayerClass(Arena arena, Player player) + { + return arena.classMap.get(player); + } + + /** + * Check if a monster is in a MobArena arena. + * @param entity The monster entity + * @return true, if the monster is in an arena + */ + public boolean isMonsterInArena(LivingEntity entity) + { + return plugin.getAM().getArenaWithMonster(entity) != null; + } + + /** + * Check if a pet is in a MobArena arena. + * @param wolf The pet wolf + * @return true, if the pet is in an arena + */ + public boolean isPetInArena(LivingEntity wolf) + { + return plugin.getAM().getArenaWithPet(wolf) != null; + } + + + + /*////////////////////////////////////////////////////////////////// + + ARENA GETTERS + + //////////////////////////////////////////////////////////////////*/ + /** * Get an Arena object at the given location. * @param loc A location * @return an Arena object, or null */ - public Arena getArenaAtLocation(Location loc) { return (ma) ? plugin.getAM().getArenaAtLocation(loc) : null; } + public Arena getArenaAtLocation(Location loc) + { + return plugin.getAM().getArenaAtLocation(loc); + } /** * Get the Arena object that the given player is currently in. * @param p A player * @return an Arena object, or null */ - public Arena getArenaWithPlayer(Player p) { return (ma) ? plugin.getAM().getArenaWithPlayer(p) : null; } + public Arena getArenaWithPlayer(Player p) + { + return plugin.getAM().getArenaWithPlayer(p); + } /** * Get the Arena object that the given pet is currently in. * @param wolf A pet wolf * @return an Arena object, or null */ - public Arena getArenaWithPet(Entity wolf) { return (ma) ? plugin.getAM().getArenaWithPet(wolf) : null; } + public Arena getArenaWithPet(Entity wolf) + { + return plugin.getAM().getArenaWithPet(wolf); + } /** * Get the Arena object that the given monster is currently in. * @param monster A monster * @return an Arena object, or null */ - public Arena getArenaWithMonster(Entity monster) { return (ma) ? plugin.getAM().getArenaWithMonster(monster) : null; } - - /** - * Check if the server is running MobArena. - * @return true, if MobArena exists on the server. - */ - public boolean hasMA() + public Arena getArenaWithMonster(Entity monster) { - return ma; + return plugin.getAM().getArenaWithMonster(monster); } } diff --git a/src/com/garbagemule/MobArena/repairable/RepairableContainer.java b/src/com/garbagemule/MobArena/repairable/RepairableContainer.java index 958fb25..f4b8245 100644 --- a/src/com/garbagemule/MobArena/repairable/RepairableContainer.java +++ b/src/com/garbagemule/MobArena/repairable/RepairableContainer.java @@ -5,17 +5,28 @@ import org.bukkit.block.ContainerBlock; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; +import com.garbagemule.MobArena.util.InventoryItem; + public class RepairableContainer extends RepairableBlock { - private ItemStack[] contents; + private InventoryItem[] items; public RepairableContainer(BlockState state, boolean clear) { super(state); - + + // Grab the inventory and its contents Inventory inv = ((ContainerBlock) state).getInventory(); - contents = inv.getContents().clone(); + ItemStack[] contents = inv.getContents(); + // Initialize the items array + items = new InventoryItem[contents.length]; + + // Turn every ItemStack into an InventoryItem + for (int i = 0; i < items.length; i++) + items[i] = InventoryItem.parseItemStack(contents[i]); + + // Clear the inventory if prompted if (clear) inv.clear(); } @@ -31,7 +42,15 @@ public class RepairableContainer extends RepairableBlock { super.repair(); + // Grab the inventory ContainerBlock cb = (ContainerBlock) getWorld().getBlockAt(getX(),getY(),getZ()).getState(); - cb.getInventory().setContents(contents); + Inventory inv = cb.getInventory(); + + // Turn every InventoryItem into an ItemStack + for (int i = 0; i < items.length; i++) + { + InventoryItem item = items[i]; + inv.setItem(i, item != null ? item.toItemStack() : null); + } } } diff --git a/src/com/garbagemule/MobArena/util/InventoryItem.java b/src/com/garbagemule/MobArena/util/InventoryItem.java new file mode 100644 index 0000000..160bf84 --- /dev/null +++ b/src/com/garbagemule/MobArena/util/InventoryItem.java @@ -0,0 +1,259 @@ +package com.garbagemule.MobArena.util; + +import java.io.Serializable; +import java.util.LinkedList; +import java.util.List; + +import org.bukkit.inventory.ItemStack; +import org.bukkit.material.MaterialData; + +public class InventoryItem implements Serializable +{ + private static final long serialVersionUID = 739709220350581510L; + private int id; + private int amount; + private Byte data; + private short durability; + + /** + * Default constructor. + * @param id The data value/type id of the ItemStack + * @param amount The amount of the stack + * @param data The MaterialData (possibly null) of the stack + * @param durability The durability of the stack + */ + public InventoryItem(int id, int amount, Byte data, short durability) + { + this.id = id; + this.amount = amount; + this.data = data; + this.durability = durability; + } + + /** + * ItemStack constructor. + * @param stack The ItemStack to base the InventoryItem off of. + */ + public InventoryItem(ItemStack stack) + { + if (stack == null) + id = -1; + + id = stack.getTypeId(); + amount = stack.getAmount(); + + // In case of "odd" items, don't attempt to get data and durability + if (id < 0) return; + + data = stack.getData() == null ? null : stack.getData().getData(); + durability = stack.getDurability(); + } + + /** + * Static method for turning a (possibly null) InventoryItem into an ItemStack. + * The method is useful if it is unknown whether an InventoryItem object is + * null or not. + * @param item The Inventory item to convert + * @return An ItemStack representation of the InventoryItem, or null + */ + public static ItemStack toItemStack(InventoryItem item) + { + if (item == null) + return null; + + return item.toItemStack(); + } + + /** + * Static method for converting an ItemStack to an InventoryItems. + * @param stack The ItemStack to convert + * @return An InventoryItem representation of the ItemStack, or null + */ + public static InventoryItem parseItemStack(ItemStack stack) + { + if (stack == null) + return new InventoryItem(-1, -1, null, (short) 0); + + return new InventoryItem(stack); + } + + /** + * Static method for converting an ItemStack array to an InventoryItem array. + * @param stacks The ItemStack array + * @return An InventoryItem array + */ + public static InventoryItem[] parseItemStacks(ItemStack[] stacks) + { + InventoryItem[] items = new InventoryItem[stacks.length]; + + for (int i = 0; i < items.length; i++) + items[i] = parseItemStack(stacks[i]); + + return items; + } + + /** + * Convert a list of ItemStacks into an array of InventoryItems + * @param stacks List of ItemStacks to convert + * @return An InventoryItem array + */ + public static InventoryItem[] parseItemStacks(List stacks) + { + InventoryItem[] items = new InventoryItem[stacks.size()]; + + for (int i = 0; i < items.length; i++) + items[i] = parseItemStack(stacks.get(i)); + + return items; + } + + /** + * Static method for extracting all InventoryItems from an InventoryItem array. + * @param id The type id of the items to extract + * @param items The InventoryItem array + * @return A list of all InventoryItems removed + */ + public static List extractAllFromArray(int id, InventoryItem[] items) + { + List list = new LinkedList(); + + for (int i = 0; i < items.length; i++) + { + if (items[i].getTypeId() == id) + { + list.add(items[i]); + items[i].setTypeId(-1); + } + } + + return list; + } + + /** + * Static method for removing an InventoryItem from an InventoryItem array. + * @param item The InventoryItem to remove + * @param items The InventoryItem array to remove from + * @return true, if the item was removed successfully, false otherwise + */ + public static boolean removeItemFromArray(InventoryItem item, InventoryItem[] items) + { + // Grab the total amount to remove + int leftToRemove = item.getAmount(); + + for (int i = 0; i < items.length; i++) + { + if (items[i].getTypeId() != item.getTypeId()) + continue; + + // Grab the amount + int amount = items[i].getAmount(); + + // Reduce amount/nullify item + if (amount > leftToRemove) + { + items[i].setAmount(amount - leftToRemove); + leftToRemove = 0; + } + else + { + items[i].setTypeId(-1); + leftToRemove -= amount; + } + + // If nothing left to remove, return true. + if (leftToRemove == 0) + return true; + } + + return false; + } + + /** + * Get the data value/type id of the item + * @return A type id + */ + public int getTypeId() + { + return id; + } + + /** + * Set the data value/type id of the item + * @param id A type id + */ + public void setTypeId(int id) + { + this.id = id; + } + + /** + * Get the amount of the item + * @return An amount + */ + public int getAmount() + { + return amount; + } + + /** + * Set the amount of the item + * @param amount An amount + */ + public void setAmount(int amount) + { + this.amount = amount; + } + + /** + * Get the MaterialData of the item + * @return A MaterialData + */ + public MaterialData getData() + { + return new MaterialData(id, data == null ? (byte) 0 : data); + } + + /** + * Set the MaterialData of the item + * @param data A MaterialData + */ + public void setData(MaterialData data) + { + this.data = data.getData(); + } + + /** + * Get the durability of the item + * @return The item durability + */ + public short getDurability() + { + return durability; + } + + /** + * Set the durability of the item + * @param durability An item durability + */ + public void setDurability(short durability) + { + this.durability = durability; + } + + /** + * Convert this InventoryItem to an ItemStack representation + * @return An ItemStack representation of this InventoryItem, or null if the type id is -1 + */ + public ItemStack toItemStack() + { + if (id == -1) + return null; + + ItemStack stack = new ItemStack(id, amount, durability); + + if (data != null) + stack.setData(getData()); + + return stack; + } +} diff --git a/src/com/garbagemule/MobArena/util/WaveUtils.java b/src/com/garbagemule/MobArena/util/WaveUtils.java index 9321a8c..f9c53a3 100644 --- a/src/com/garbagemule/MobArena/util/WaveUtils.java +++ b/src/com/garbagemule/MobArena/util/WaveUtils.java @@ -12,6 +12,7 @@ import org.bukkit.entity.Player; import org.bukkit.util.config.Configuration; import com.garbagemule.MobArena.Arena; +import com.garbagemule.MobArena.MAUtils; import com.garbagemule.MobArena.MobArena; import com.garbagemule.MobArena.waves.*; import com.garbagemule.MobArena.waves.Wave.*; @@ -20,36 +21,56 @@ public class WaveUtils { /** * Get all the spawnpoints that have players nearby. - */ + */ public static List getValidSpawnpoints(Arena arena, Collection players) { + long start = System.nanoTime(); List result = new ArrayList(); + + double x1 = Double.NaN, y1 = Double.NaN, z1 = Double.NaN, // Bottom + x2 = Double.NaN, y2 = Double.NaN, z2 = Double.NaN; // Top + + // Get the region that the players span. + for (Player p : players) + { + double x = p.getLocation().getBlockX(); + double y = p.getLocation().getBlockY(); + double z = p.getLocation().getBlockZ(); + + // Initialize the coordinates if they aren't already. + if (Double.isNaN(x1)) + { + x1 = x; y1 = y; z1 = z; // Bottom + x2 = x; y2 = y; z2 = z; // Top + continue; + } + + // Update x + if (x < x1) x1 = x; + else if (x > x2) x2 = x; + + // Update y + if (y < y1) y1 = y; + else if (y > y2) y2 = y; + + // Update z + if (z < z1) z1 = z; + else if (z > z2) z2 = z; + } + + // Expand by the minimum player distance. + x1 -= MobArena.MIN_PLAYER_DISTANCE; y1 -= MobArena.MIN_PLAYER_DISTANCE; z1 -= MobArena.MIN_PLAYER_DISTANCE; + x2 += MobArena.MIN_PLAYER_DISTANCE; y2 += MobArena.MIN_PLAYER_DISTANCE; z2 += MobArena.MIN_PLAYER_DISTANCE; for (Location s : arena.getAllSpawnpoints()) - { - for (Player p : players) - { - // If the player somehow got out of the arena world, kick him. - if (!s.getWorld().getName().equals(p.getWorld().getName())) - { - MobArena.info("Player '" + p.getName() + "' is not in the right world. Kicking..."); - p.kickPlayer("[MobArena] Cheater! (Warped out of the arena world.)"); - continue; - } - - if (s.distanceSquared(p.getLocation()) > MobArena.MIN_PLAYER_DISTANCE) - continue; - + if (MAUtils.inRegion(s, x1, y1, z1, x2, y2, z2)) result.add(s); - break; - } - } // If no players are in range, just use all the spawnpoints. if (result.isEmpty()) { MobArena.warning("Spawnpoints of arena '" + arena.configName() + "' may be too far apart!"); - result.addAll(arena.getAllSpawnpoints()); + return arena.getAllSpawnpoints();//result.addAll(arena.getAllSpawnpoints()); } // Else, return the valid spawnpoints. @@ -75,7 +96,7 @@ public class WaveUtils } dist = p.getLocation().distanceSquared(e.getLocation()); - if (dist < current && dist < MobArena.MIN_PLAYER_DISTANCE) + if (dist < current && dist < MobArena.MIN_PLAYER_DISTANCE_SQUARED) { current = dist; result = p; diff --git a/src/com/garbagemule/MobArena/waves/BossAbility.java b/src/com/garbagemule/MobArena/waves/BossAbility.java new file mode 100644 index 0000000..6e66b2b --- /dev/null +++ b/src/com/garbagemule/MobArena/waves/BossAbility.java @@ -0,0 +1,316 @@ +package com.garbagemule.MobArena.waves; + +import java.util.LinkedList; +import java.util.List; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.entity.Creature; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Fireball; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import com.garbagemule.MobArena.Arena; +import com.garbagemule.MobArena.util.WaveUtils; + + +public enum BossAbility +{ + ARROWS("Arrow") + { + public void run(Arena arena, LivingEntity boss) + { + boss.shootArrow(); + } + }, + FIREBALLS("Fireball") + { + public void run(Arena arena, LivingEntity boss) + { + Location bLoc = boss.getLocation(); + Location loc = bLoc.add(bLoc.getDirection().normalize().multiply(2).toLocation(boss.getWorld(), bLoc.getYaw(), bLoc.getPitch())); + Fireball fireball = boss.getWorld().spawn(loc, Fireball.class); + fireball.setIsIncendiary(false); + } + }, + FIREAURA("Fire Aura") + { + public void run(Arena arena, LivingEntity boss) + { + for (Player p : getNearbyPlayers(arena, boss, 5)) + p.setFireTicks(20); + } + }, + LIGHTNINGAURA("Lightning Aura") + { + public void run(Arena arena, LivingEntity boss) + { + Location base = boss.getLocation(); + Location ne = base.getBlock().getRelative( 2, 0, 2).getLocation(); + Location nw = base.getBlock().getRelative(-2, 0, 2).getLocation(); + Location se = base.getBlock().getRelative( 2, 0, -2).getLocation(); + Location sw = base.getBlock().getRelative(-2, 0, -2).getLocation(); + + arena.getWorld().strikeLightning(ne); + arena.getWorld().strikeLightning(nw); + arena.getWorld().strikeLightning(se); + arena.getWorld().strikeLightning(sw); + } + }, + DISORIENTTARGET("Disorient Target") + { + public void run(Arena arena, LivingEntity boss) + { + LivingEntity target = getTarget(boss); + if (target == null) return; + + Location loc = target.getLocation(); + loc.setYaw(target.getLocation().getYaw() + 45 + (new Random()).nextInt(270)); + target.teleport(loc); + } + }, + ROOTTARGET("Root Target") + { + public void run(final Arena arena, LivingEntity boss) + { + final LivingEntity target = getTarget(boss); + if (target == null) return; + + final Location loc = target.getLocation(); + final int freezeTaskId = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(arena.getPlugin(), + new Runnable() + { + public void run() + { + if (arena.getLivingPlayers().contains(target)) + target.teleport(loc); + } + }, 3, 3); + + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(arena.getPlugin(), + new Runnable() + { + public void run() + { + Bukkit.getServer().getScheduler().cancelTask(freezeTaskId); + } + }, 45); + } + }, + LIVINGBOMB("Living Bomb") + { + public void run(final Arena arena, LivingEntity boss) + { + final LivingEntity target = getTarget(boss); + if (target == null) return; + + // Set the target on fire + target.setFireTicks(60); + + // Create an explosion after 3 seconds + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(arena.getPlugin(), + new Runnable() + { + public void run() + { + if (!arena.getLivingPlayers().contains(target)) + return; + + arena.getWorld().createExplosion(target.getLocation(), 2F); + for(Player p : getNearbyPlayers(arena, target, 3)) + p.setFireTicks(40); + } + }, 61); + } + }, + CHAINLIGHTNING("Chain Lightning") + { + public void run(Arena arena, LivingEntity boss) + { + final LivingEntity target = getTarget(boss); + if (target == null) return; + + strikeLightning(arena, (Player) target, new LinkedList()); + } + + private void strikeLightning(final Arena arena, final Player p, final List done) + { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(arena.getPlugin(), + new Runnable() + { + public void run() + { + if (!arena.getLivingPlayers().contains(p)) + return; + + // Smite the target + arena.getWorld().strikeLightning(p.getLocation()); + done.add(p); + + // Grab all nearby players + List nearby = getNearbyPlayers(arena, p, 4); + + // Remove all that are "done", and return if empty + nearby.removeAll(done); + if (nearby.isEmpty()) return; + + // Otherwise, smite the next target! + strikeLightning(arena, nearby.get(0), done); + } + }, 8); + } + }, + WARPTOPLAYER("Warp") + { + public void run(Arena arena, LivingEntity boss) + { + List list = arena.getLivingPlayers(); + boss.teleport(list.get((new Random()).nextInt(list.size()))); + } + }, + THROWTARGET("Throw Target") + { + public void run(Arena arena, LivingEntity boss) + { + LivingEntity target = getTarget(boss); + if (target == null) return; + + Location bLoc = boss.getLocation(); + Location loc = target.getLocation(); + Vector v = new Vector(loc.getX() - bLoc.getX(), 0, loc.getZ() - bLoc.getZ()); + target.setVelocity(v.normalize().setY(0.8)); + } + }, + THROWNEARBY("Throw Nearby Players") + { + public void run(Arena arena, LivingEntity boss) + { + for (Player p : getNearbyPlayers(arena, boss, 5)) + { + Location bLoc = boss.getLocation(); + Location loc = p.getLocation(); + Vector v = new Vector(loc.getX() - bLoc.getX(), 0, loc.getZ() - bLoc.getZ()); + p.setVelocity(v.normalize().setY(0.8)); + } + } + }, + THROWDISTANT("Throw Distant Players") + { + public void run(Arena arena, LivingEntity boss) + { + for (Player p : getDistantPlayers(arena, boss, 8)) + { + Location bLoc = boss.getLocation(); + Location loc = p.getLocation(); + Vector v = new Vector(loc.getX() - bLoc.getX(), 0, loc.getZ() - bLoc.getZ()); + p.setVelocity(v.normalize().setY(0.8)); + } + } + }, + FETCHTARGET("Fetch Target") + { + public void run(Arena arena, LivingEntity boss) + { + LivingEntity target = getTarget(boss); + if (target != null) target.teleport(boss); + } + }, + FETCHNEARBY("Fetch Nearby Players") + { + public void run(Arena arena, LivingEntity boss) + { + for (Player p : getNearbyPlayers(arena, boss, 5)) + p.teleport(boss); + } + }, + FETCHDISTANT("Fetch Distant Players") + { + public void run(Arena arena, LivingEntity boss) + { + for (Player p : getDistantPlayers(arena, boss, 8)) + p.teleport(boss); + } + }; + + private String name; + + private BossAbility(String name) + { + this.name = name; + } + + /** + * The run-method that all boss abilities must define. + * The method is called in the ability cycle for the given boss. + * @param arena The Arena the boss is in + * @param boss The boss entity + */ + public abstract void run(Arena arena, LivingEntity boss); + + /** + * Get the target player of the LivingEntity if possible. + * @param entity The entity whose target to get + * @return The target player, or null + */ + protected LivingEntity getTarget(LivingEntity entity) + { + if (entity instanceof Creature) + { + LivingEntity target = null; + try + { + target = ((Creature) entity).getTarget(); + } + catch (Exception e) {} + + if (target instanceof Player) + return target; + } + return null; + } + + /** + * Get a list of nearby players + * @param arena The arena + * @param boss The boss + * @param x The 'radius' in which to grab players + * @return A list of nearby players + */ + protected List getNearbyPlayers(Arena arena, Entity boss, int x) + { + List result = new LinkedList(); + for (Entity e : boss.getNearbyEntities(x, x, x)) + if (arena.getLivingPlayers().contains(e)) + result.add((Player) e); + return result; + } + + /** + * Get a list of distant players + * @param arena The arena + * @param boss The boss + * @param x The 'radius' in which to exclude players + * @return A list of distant players + */ + protected List getDistantPlayers(Arena arena, Entity boss, int x) + { + List result = new LinkedList(); + for (Player p : arena.getLivingPlayers()) + if (p.getLocation().distanceSquared(boss.getLocation()) > x*x) + result.add(p); + return result; + } + + public static BossAbility fromString(String string) + { + return WaveUtils.getEnumFromString(BossAbility.class, string); + } + + public String toString() + { + return name; + } +} diff --git a/src/com/garbagemule/MobArena/waves/DefaultWave.java b/src/com/garbagemule/MobArena/waves/DefaultWave.java index d647ef9..01e09b7 100644 --- a/src/com/garbagemule/MobArena/waves/DefaultWave.java +++ b/src/com/garbagemule/MobArena/waves/DefaultWave.java @@ -9,8 +9,8 @@ import org.bukkit.Location; import org.bukkit.util.config.Configuration; import com.garbagemule.MobArena.Arena; -import com.garbagemule.MobArena.MAMessages.Msg; import com.garbagemule.MobArena.MAUtils; +import com.garbagemule.MobArena.MAMessages.Msg; import com.garbagemule.MobArena.util.WaveUtils; public class DefaultWave extends NormalWave diff --git a/src/com/garbagemule/MobArena/waves/MACreature.java b/src/com/garbagemule/MobArena/waves/MACreature.java index 4456787..ab7e274 100644 --- a/src/com/garbagemule/MobArena/waves/MACreature.java +++ b/src/com/garbagemule/MobArena/waves/MACreature.java @@ -9,6 +9,7 @@ import org.bukkit.entity.Slime; import org.bukkit.entity.Wolf; import com.garbagemule.MobArena.Arena; +import com.garbagemule.MobArena.MobArena; import com.garbagemule.MobArena.util.WaveUtils; public enum MACreature @@ -25,7 +26,6 @@ public enum MACreature POWERED_CREEPER(CreatureType.CREEPER), POWERED_CREEPERS(CreatureType.CREEPER), ANGRY_WOLF(CreatureType.WOLF), ANGRY_WOLVES(CreatureType.WOLF), HUMAN(CreatureType.MONSTER), HUMANS(CreatureType.MONSTER), - SLIME(CreatureType.SLIME), SLIMES(CreatureType.SLIME), GIANT(CreatureType.GIANT), GIANTS(CreatureType.GIANT), GHAST(CreatureType.GHAST), GHASTS(CreatureType.GHAST), @@ -33,7 +33,18 @@ public enum MACreature CHICKEN(CreatureType.CHICKEN), CHICKENS(CreatureType.CHICKEN), COW(CreatureType.COW), COWS(CreatureType.COW), PIG(CreatureType.PIG), PIGS(CreatureType.PIG), - SHEEP(CreatureType.SHEEP), EXPLODING_SHEEP(CreatureType.SHEEP); + SHEEP(CreatureType.SHEEP), + SQUID(CreatureType.SQUID), SQUIDS(CreatureType.SQUID), + + // Extended creatures + EXPLODING_SHEEP(CreatureType.SHEEP), + + // Slimes + SLIME(CreatureType.SLIME), SLIMES(CreatureType.SLIME), + SLIME_TINY(CreatureType.SLIME), SLIMES_TINY(CreatureType.SLIME), + SLIME_SMALL(CreatureType.SLIME), SLIMES_SMALL(CreatureType.SLIME), + SLIME_BIG(CreatureType.SLIME), SLIMES_BIG(CreatureType.SLIME), + SLIME_HUGE(CreatureType.SLIME), SLIMES_HUGE(CreatureType.SLIME); private CreatureType type; @@ -68,31 +79,26 @@ public enum MACreature case ANGRY_WOLVES: ((Wolf) e).setAngry(true); break; + case SLIME: case SLIMES: + ((Slime) e).setSize( (1 + MobArena.random.nextInt(3)) ); + break; + case SLIME_TINY: + case SLIMES_TINY: + ((Slime) e).setSize(1); + break; + case SLIME_SMALL: + case SLIMES_SMALL: ((Slime) e).setSize(2); - break; - default: break; - } - - return e; - } - - public static LivingEntity spawn(MACreature creature, World world, Location loc) - { - LivingEntity e = world.spawnCreature(loc, creature.type); - - switch (creature) - { - case POWERED_CREEPERS: - ((Creeper) e).setPowered(true); + case SLIME_BIG: + case SLIMES_BIG: + ((Slime) e).setSize(3); break; - case ANGRY_WOLVES: - ((Wolf) e).setAngry(true); + case SLIME_HUGE: + case SLIMES_HUGE: + ((Slime) e).setSize(4); break; - case SLIMES: - ((Slime) e).setSize(2); - break; default: break; } diff --git a/src/com/garbagemule/MobArena/waves/Wave.java b/src/com/garbagemule/MobArena/waves/Wave.java index e148289..e6d2690 100644 --- a/src/com/garbagemule/MobArena/waves/Wave.java +++ b/src/com/garbagemule/MobArena/waves/Wave.java @@ -1,18 +1,5 @@ package com.garbagemule.MobArena.waves; -import java.util.LinkedList; -import java.util.List; -import java.util.Random; - -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.entity.Creature; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Fireball; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.util.Vector; - import com.garbagemule.MobArena.Arena; import com.garbagemule.MobArena.util.WaveUtils; @@ -59,246 +46,10 @@ public interface Wave return (int) ( base * Math.pow(w, exp) ); } } - - public enum BossAbility - { - ARROWS("Arrow") - { - public void run(Arena arena, LivingEntity boss) - { - boss.shootArrow(); - } - }, - FIREBALLS("Fireball") - { - public void run(Arena arena, LivingEntity boss) - { - Location bLoc = boss.getLocation(); - Location loc = bLoc.add(bLoc.getDirection().normalize().multiply(2).toLocation(boss.getWorld(), bLoc.getYaw(), bLoc.getPitch())); - Fireball fireball = boss.getWorld().spawn(loc, Fireball.class); - fireball.setIsIncendiary(false); - } - }, - FIREAURA("Fire aura") - { - public void run(Arena arena, LivingEntity boss) - { - for (Player p : getNearbyPlayers(arena, boss, 5)) - p.setFireTicks(20); - } - }, - LIGHTNINGAURA("Lightning aura") - { - public void run(Arena arena, LivingEntity boss) - { - Location base = boss.getLocation(); - Location ne = base.getBlock().getRelative( 2, 0, 2).getLocation(); - Location nw = base.getBlock().getRelative(-2, 0, 2).getLocation(); - Location se = base.getBlock().getRelative( 2, 0, -2).getLocation(); - Location sw = base.getBlock().getRelative(-2, 0, -2).getLocation(); - arena.getWorld().strikeLightning(ne); - arena.getWorld().strikeLightning(nw); - arena.getWorld().strikeLightning(se); - arena.getWorld().strikeLightning(sw); - } - }, - DISORIENTTARGET("Disorient target") - { - public void run(Arena arena, LivingEntity boss) - { - LivingEntity target = getTarget(boss); - if (target == null) return; - - Location loc = target.getLocation(); - loc.setYaw(target.getLocation().getYaw() + 45 + (new Random()).nextInt(270)); - target.teleport(loc); - } - }, - ROOTTARGET("Root target") - { - public void run(final Arena arena, LivingEntity boss) - { - final LivingEntity target = getTarget(boss); - if (target == null) return; - - final Location loc = target.getLocation(); - final int freezeTaskId = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(arena.getPlugin(), - new Runnable() - { - public void run() - { - if (arena.getLivingPlayers().contains(target)) - target.teleport(loc); - } - }, 3, 3); - - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(arena.getPlugin(), - new Runnable() - { - public void run() - { - Bukkit.getServer().getScheduler().cancelTask(freezeTaskId); - } - }, 45); - } - }, - WARPTOPLAYER("Warp to player") - { - public void run(Arena arena, LivingEntity boss) - { - List list = arena.getLivingPlayers(); - boss.teleport(list.get((new Random()).nextInt(list.size()))); - } - }, - THROWTARGET("Throw target") - { - public void run(Arena arena, LivingEntity boss) - { - System.out.println("Throw target"); - LivingEntity target = getTarget(boss); - if (target == null) return; - - Location bLoc = boss.getLocation(); - Location loc = target.getLocation(); - Vector v = new Vector(loc.getX() - bLoc.getX(), 0, loc.getZ() - bLoc.getZ()); - target.setVelocity(v.normalize().setY(0.8)); - } - }, - THROWNEARBY("Throw nearby players") - { - public void run(Arena arena, LivingEntity boss) - { - for (Player p : getNearbyPlayers(arena, boss, 5)) - { - Location bLoc = boss.getLocation(); - Location loc = p.getLocation(); - Vector v = new Vector(loc.getX() - bLoc.getX(), 0, loc.getZ() - bLoc.getZ()); - p.setVelocity(v.normalize().setY(0.8)); - } - } - }, - THROWDISTANT("Throw distant players") - { - public void run(Arena arena, LivingEntity boss) - { - for (Player p : getDistantPlayers(arena, boss, 8)) - { - Location bLoc = boss.getLocation(); - Location loc = p.getLocation(); - Vector v = new Vector(loc.getX() - bLoc.getX(), 0, loc.getZ() - bLoc.getZ()); - p.setVelocity(v.normalize().setY(0.8)); - } - } - }, - FETCHTARGET("Fetch target") - { - public void run(Arena arena, LivingEntity boss) - { - LivingEntity target = getTarget(boss); - if (target != null) target.teleport(boss); - } - }, - FETCHNEARBY("Fetch nearby players") - { - public void run(Arena arena, LivingEntity boss) - { - for (Player p : getNearbyPlayers(arena, boss, 5)) - p.teleport(boss); - } - }, - FETCHDISTANT("Fetch distant players") - { - public void run(Arena arena, LivingEntity boss) - { - for (Player p : getDistantPlayers(arena, boss, 8)) - p.teleport(boss); - } - }; - - private String name; - - private BossAbility(String name) - { - this.name = name; - } - - /** - * The run-method that all boss abilities must define. - * The method is called in the ability cycle for the given boss. - * @param arena The Arena the boss is in - * @param boss The boss entity - */ - public abstract void run(Arena arena, LivingEntity boss); - - /** - * Get the target player of the LivingEntity if possible. - * @param entity The entity whose target to get - * @return The target player, or null - */ - protected LivingEntity getTarget(LivingEntity entity) - { - if (entity instanceof Creature) - { - LivingEntity target = null; - try - { - target = ((Creature) entity).getTarget(); - } - catch (Exception e) {} - - if (target instanceof Player) - return target; - } - return null; - } - - /** - * Get a list of nearby players - * @param arena The arena - * @param boss The boss - * @param x The 'radius' in which to grab players - * @return A list of nearby players - */ - protected List getNearbyPlayers(Arena arena, Entity boss, int x) - { - List result = new LinkedList(); - for (Entity e : boss.getNearbyEntities(x, x, x)) - if (arena.getLivingPlayers().contains(e)) - result.add((Player) e); - return result; - } - - /** - * Get a list of distant players - * @param arena The arena - * @param boss The boss - * @param x The 'radius' in which to exclude players - * @return A list of distant players - */ - protected List getDistantPlayers(Arena arena, Entity boss, int x) - { - List result = new LinkedList(); - for (Player p : arena.getLivingPlayers()) - if (p.getLocation().distanceSquared(boss.getLocation()) > x*x) - result.add(p); - return result; - } - - public static BossAbility fromString(String string) - { - return WaveUtils.getEnumFromString(BossAbility.class, string); - } - - public String toString() - { - return name; - } - } - public enum BossHealth { - LOW(5), MEDIUM(9), HIGH(14), PSYCHO(25); + LOW(8), MEDIUM(15), HIGH(25), PSYCHO(40); private int multiplier; private BossHealth(int multiplier)