From 515d29a71483aad3b137ec096d1b06ed9878f5fa Mon Sep 17 00:00:00 2001 From: Garbage Mule Date: Sun, 2 Oct 2011 07:24:57 +0200 Subject: [PATCH] Added basic Leaderboards functionality. --- MobArena.jar | Bin 231590 -> 245013 bytes resources/plugin.yml | 6 +- src/com/garbagemule/MobArena/Arena.java | 39 ++- src/com/garbagemule/MobArena/ArenaLog.java | 6 +- src/com/garbagemule/MobArena/ArenaPlayer.java | 15 +- .../MobArena/ArenaPlayerStatistics.java | 74 +++++ .../garbagemule/MobArena/MABlockListener.java | 35 +++ src/com/garbagemule/MobArena/MAListener.java | 19 +- src/com/garbagemule/MobArena/MobArena.java | 1 + .../MobArena/leaderboards/Leaderboard.java | 257 ++++++++++++++++++ .../leaderboards/LeaderboardColumn.java | 78 ++++++ .../MobArena/leaderboards/Stats.java | 49 ++++ .../MobArena/util/ConfigUtils.java | 47 ++++ .../garbagemule/MobArena/util/WaveUtils.java | 16 ++ .../MobArena/util/data/PlainText.java | 10 +- .../MobArena/util/data/Totals.java | 20 +- .../garbagemule/MobArena/util/data/XML.java | 12 +- .../garbagemule/MobArena/util/data/YAML.java | 12 +- 18 files changed, 647 insertions(+), 49 deletions(-) create mode 100644 src/com/garbagemule/MobArena/ArenaPlayerStatistics.java create mode 100644 src/com/garbagemule/MobArena/leaderboards/Leaderboard.java create mode 100644 src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java create mode 100644 src/com/garbagemule/MobArena/leaderboards/Stats.java create mode 100644 src/com/garbagemule/MobArena/util/ConfigUtils.java diff --git a/MobArena.jar b/MobArena.jar index 6ba17dd10dc89792af72a4a87d50ce5c6abc3347..9d0d2ce8202446a01ff7114fb63f616eea4b2d83 100644 GIT binary patch delta 80202 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 delta 67496 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%0DTVdIaRL$0u z1TNZYIStU9dE;yvXjrHAyC}RKJ~(QPJa2KEj}3Dt-Yib*^PqGP3Q3)%6U8WXVX#JK^@alV;tW+3`Ym7!%X19 zNLNpC!-Bb@NUigddx3MLd+~JE6(pmkhQn2DX6L@)D`4@v(^aVU(^S+EKYplCWm~v3 zP>781h(xY!3ncW;TN6tbMPZwMauWZ^Jrx!?LitY_eCR_hX8Fa_gWEK%pD>uIJM1)~j86mx!Niti5O8ujW~qy$2$Cfo+`2P~Nvho0`& z@8ChQ{OZkD&KnzFBw9+QU(-q?96TsS3fddh5H!jRaEp;St+5Oln~k&MTc)kz9a<;+ z+91tG8uZqvm!;rAQpL0L@~5_1Ml?mdLqNTUPfrDjhq|y!k-x&Di-f3^FwPdx@4T>p z#vr&P)>ACJi>Hr+Y_5tB7zG8OB>GVmptCBER#q_#zq2<_^b4s-QKK5&JXYnD9d=3z z`&w#rhCUm6DMJGZ!en0MFdilxcF>=)$WWk3y0Hp4}In7CZ_3lqmVAy6oX%4hGyN9 zPq^0QBkHuWz7Rj|gf3_1{*-~-F&fQm&Ce)1s*&vqC_)HT`Jvke1kN}^(fg&lhZZNm zDPV13z89Py%}P|!r-7O=_T}mfhg>tz#>VF@Ad4$C#M%NUc)XqG*?4Qth%QSCoKhDT z2|T{Gt4|%MhTqxNxKrsn+5%^_y?RAml_WA-mrOTL5CPeB9ybiA*;Ym8uTxJAUMn%P zoRi90V8bUfco1CB#JodFJpPpe55YG)KngAfPs+vm$9IjIfIOW3ed~I${^=D%;q@iE zxE6fAJOjqSA4fC+@NeNA7*(}Rk(9_z+2hvcF97nKtL8`P*z0Ib$;tQ=iXO&@Dp+{31YGut^OZi$q zh^q7EQ==SJ*&y?+(}!p)kEK~%${SoS7gYle-|iYf)^JfE9Sh3#1{Gh>-_XS^l#B_B zrtEzp^Iy_NU+7H7ly$XyRV~^|$u>0!&$PNwO9&VCl&~yQ`wab6ZBHHLWQVe{(gwd7j71Qe~Lyb zsW>*G7p3O_S$jEj zUWU0jrh#j_0}jn7m7$6~RmLQ)pTXC|E5H_0p?~AUyq90q;)+Zu8(H=4tlLDhqa)Hc z=jZrk2>e#7C_X^f4#EXd!qcL6sHhu~taKTPAwg!ifea zXKbx=c5;nr6o}V;*CsjW3c(A7OAbbB7MUc-Q6m=3ZqFuB^aI>{6ukTwwayY?_{qEx zKdOv36Dmr);}tP^V;U#5tk>p3TdXZUVY*`Iz7;tw93AA`X`3x6SGHAMg!M`pe#9ny z7GjMeFBpVt_o5sJDa^l5E;h!`vQ68lS$n?iJ&rF^*Gnu1l$VJSzo?=EIL^}93QDfn%v0P{*Jio_Me5(3Ot z_|;coR8UI+KT?4-nePqak=idjl9q}&Hz0*o$M`R{l!gWm^(eVW5*ezR+??ub2PWu~ zvm6g90@Tsc@!#h}g_UMxB^rfs+Z9K-wdW=lHWH?oS|V}zB{femH97JR(lk%w>+#ca zLwU8(qbf(DBy2jvk zOIe$%eR~j3)@_kHl|k8H3m@^!%vh2~ri)IyCHd2;IL>6vyFzg#wTZe%V@TLKlW9Fl z<9TPMXeWhYh#F!E?oy@BUx=J2l&T>apPveWJBR}piQO$J5QsTGyqs3REPHNL8^=K| zt1>uo@U)Cdn`XUJx?l+{zXFwB9q-F$-^x@1hD^veyq+dl>9MHT58fs!qy?$g?rzlW zj*UJ``G?w?{ru5!DQ1H|R62|8U-{|be`91#L-r_VzSn2H)=K6aU-889yr}^VLai*o z!_-XWL0a#|uH65X5zl%ov+v7_rtF87P&QKIsV|jY0`TnC)L5~zU(gkn?eiKWNF4L;XfW6f>TKJA&csVNNIrwnK&I7biO2(cdnGKObu(bqBNBTq)Z$d!4zzt^FVv z!PGxBZFj{#WkYS%uB7wu_09<-5SO1@oR3hAuQ_~^!xE1~TzO=Br+X#x;QsxK+KRkM zRHmUwH`H`>lvgN>h_+Q)jS`XF1aICmwtD%B(=AM0oW?XxX8U-^pq~ApAvz{NJLBFE zEjj%e=7hnB_j#hd`!L@C=IycTyGiB#+Wa-D66YSqS-l=_(qZ&PeV;rCghZGv_Rup2 zd03W4m`#1zt;ByLj1f2yOSqdct=A5(>h-&iPN+6qdev76*o7<|JE>C!^q9zGo#d}_ zssn7Vsf`0b?wzQb7kj7l=_0vtKMRz%QO?&r-r|1OqZqHcAd5H|*1DpA^gz4QU3dmj z&Ub#U(En7u~CZ6{koQfFy2*5W?n(t%+XF4I08ZrAZz+~rVfiK zRH$N%|FvxBTiXJ=`%uE+Rr^(mV%}qoEZGC+=k{GNKanAWi`!4Hu^A86k`t`v4#Sz>4he0*MDA!sOKWvz?+ zZH+Brg%3IKrwu=hmvYaTn-iVIF=hLSD%WI)O=OW?vC<4k+_E~WT>kzGAvfF_l^)6X z3wHq)wmj%~uKWAp*iqrJub{CjPBt@l6N!``nphiCHA!TPn&SKrWBiP_PD%(gClgtE z>mx$=kpm^rbI-9+89f4H{d~q*;oM!>=OzTIP_(y~Ca%J6_q2tD;~fIK?bEu9bW}T5 zsgP-cM~s*@D?&z$7#s=x$r|rHgwGc^iYI6rwkRev?bzm1dt3YttLrO}s)t#$z_5XF zra1I@)-vvD=my6MQN}8Ff{S;Cbzh)4=EranJA)b0uJ)pM8I>~_jT>cqAetELL>IU1_0lqxzy z70AME@fS0F*qWxUy{V~}TqWE`$A(tTw;nsaaH;2U;;}cl1F;ad8hTOmwTPGR1?{SV z;Z6Z_#==QMl2{7&wu!tZ-6h4)T2%~vLwJ@hfgJ?=xg2YL#=o(gkZsk%6LGqnO(y~a zD=KI+iuQ>KijEtC_RP8a+J??GUQK^@ATb4XsKiquf}{DNMIk#sJJPW(J>#&e9>U=l zZ;xP|r&4@$c_75)jq4P<1?Obe+@y2HyoP0NWY)a1wnd+UW(Um9y|G*pY?c&GSh5FQ zDi$wA_IV-x9s?M*Etl~7Jdm&-gAs?X6%We~RE1ZPeWbh$g>xIXX7klkGe_jD7A@I$ntIIO-aH6}}Ep?o; zl|}<_K49c>|-aQc=Ku2ax>Hd+)m%H zwjRvF_v|_3J=XVoqc0S%VHJp^zp83$6n*@txw2|%(nAP^V@VedHhIFd+w;RM!VjE9 zpn6TbJc!(ct97C9RZK;XSMhRdynMhrfhVMy@na1;+uZQMPV=ibmaOsR>ZiK!?xz#o zSou)%N3@ZzWc6y+Xq1M=_`YHKQs*u{PZ1Ixa@2DUgDf>w80_X^b?N0+@ifTgZS~I@ zBCJZMt*DrHjx+aB&Ac@miP&&#;B!qL-$Jq{!&bLmp2}Owm@6FDMYBOPkk??Ov!$?L zZlYq0rzPk8eAYfwRK=j|nS(2jibl{F|0rptNQN-8{P8jd->C>kPh+z8Q#s{>YUIB4 z06hQ1Zpa$%!W6<6XT4(M#V*)-SuhpHv+t)_1(T{(?agGkk9s!omK0Zy+R1Rqm0m{!T$b$#Aof)a&xsGO!6$!VROr8ks`sjv7jb^z`zkeq^KbdvaD2R>h z3#vx^s`SueD^d0RtEJZ*o5-p*d|bJWDhATxMrDu72Nj46nMI$9;}yaW$tDnHaix>7 zr;vHIaKde4f6uV~wjIv!F(gLRWo7`0n--r?AvE6MB7fBCi#;Sa_2ouWOV=BRB9CGJ z)L@?PjQskKPvT#E9&OGw@dwT@#MOCF{yhaD7m)}!BJg!#e}wZmmPR~%H6BV9839wB zIfc>qsCgY6bWEeqwwb}FpBR4zd?1YoH7xPv0TmHQTGRox>D&CAO?%{=wqII*g@6Aj zxzl=@gNs3{xDx@ASRMx2A?ky2k>`a(Nssq3 z1R@vLrm8wVc*Oal!JG0b@}1QJ)4?WdO#X_%Kw-{!Qu<_%>t|#tUnUcCZTO*doFr6g zUn`>0csUfUnl#lTopoLlV^pcyq``qm777lu*$VLtTC+OH4-%nQ{QLX`i|i1qpnB9i z9K7l1YClxw>69;8qz(@bx*J1itKvnh`3IvD89&3R#R*1y(V4eP*5$H#sPB44| za%{}W?v54E6iAJk6J=t|%a0rCQtg0Oi%sO>>?JhfGk^Nj$dG6@Mq1_}UaA96bmw3k z(GTvX$Jp=QK#2CZk{1SH`c#b(lDai?ls5v1+($QdsOdLXo1i#C`)`BkBqAF{r)EMCs9rkl zbkvg4xhi`pDn|^JwnS^&RFaZyB3a8-X^-06zhnphD8TIvvtxT`mOgE(Ls@vmfCn!a zj+$Ib=k=^TI~F02PQm<)^1~CHaE@FdY17Oa{~4sppzNQO#lb4Vt$j4eAKI#NjDHLc z&~q6;gjSd{MV#q}x;nM=n_W(Jkorv(Qq&hU#=S4@HJ{GsILXPMLeIzomKgbK-NT*gJ$6>rj) z@Wst!BzU+79!bRMlI?m@NrU;cecMlVvadbzVFB5 zYDnFYNVLX4g;XKWde_MvX|OVIXJ8vlSw_H6xBMPyWh6~e{FESFx@WW3Fx$L%wuZ1pbmbxy^{<)2#nxUqEFwL*pn2h- zivoPrG&ZW*@?73&IuN9lyzP8ZwsSdcP4p6SDmm@&)zfC8RSC-15S5jNctq)KDHsk_ zc=5PgiaoQW)yTX6L%}z1m!U3Io{s&qzKc1C%_gm*=*!$PNKd83>eAB><{QnKJV+{! zEGwrrUK1NpmRWv>Jh4NFq2w4XrER`s@)aiEr0Gl z2xyZ>XZ?hqWVE~ES$uCET)m&%T`u>IoMlM}-gD7qjL5nWdJV-rq++=IG$;{a!2#PI3fR z-b0f49&r<}!Z9NRA^8Y5=@6CjU7E}H`&u2|3q3ZS_;%!_xELo0-uSZ}<8^|zgr!J2 z0VO`KM(+n2NoC*&J-oo^eG1a$57F<}00|uuOHz!8g)OeQFegxbz2x^Ez7V7Wj%dir zd%~C262qKq*75BO{Ih5FQuFJw;u#n2#cYVwA%VZS5e=1Rw8&4H9VWBlE32;0<0Mz9 zm2}Te^o!M=2?ZFcGURVOGkm4)di{8uMumB7WS|&C=33+1jvOJ6!O_ViZBp+$PPQV* z(J7D4_S&%M8M|Po0f8iZ;K~3l>lNK2ihy+%f8s-ogLB2pkOOwU&ucX2i<6muy(&_> zX95aGxvjb5Z3jZUE2Zvi!%(_KK3ceR8ht`>1mfI2)U(25WcSFMc)2=1=5 zkFz&u=MFO6^HV(?C@91VeeDh6g0kg<5o_~(K?Qe(d}M4^zaRk$1mK`P-XKnB7_q(gSkbkZ+!a+uNjUYsWj_-4%U0=;E$9 zZXWTxYQUJ|dpEDZaMT)Rfx7N6jCmleI}IX*pwD+&iAz9EcV&daw;l_+0&?WPeDhvz?$(6fiFq0Xq5+j1P^h z1mi-9D}XXk<_KWfJM(Igz@>LrW@zA4(5(hUOmHw9+D!*N4JAgqfl+IKVn%~#q3M-C znWkx6@aP?`hyVZ0dL)1&5(he?%i^q(SfnjMSF zwNY;33mc>+r*M_BaQl} zG)ir`Hn`%K#RlMuJL?RM!O!kAuH-aw>%zmp?4bQ62mR0h#P^vw*bM&Gkpc@lVN*cU z&QNOuFjsB5HTd|>?y!K!s<%MPt$*2#T{~kBu7X2b2S(we?8kr)fG`0x!39hSp?+f1 zKTT;s(@_e8WM{i7{c0+RYW8J8M}*lfwfx2M#J(7YQc_dmhFi@dKm4Gfr1jdRmZ)fV zR?6`UN##U3l)`mKST~vnFBj=ZZQ*4cf@bJ?`!{;4zI3`~o0#5@eO69*Zl~VYCnw_9 zS6}n^VSS1JvOWhY?V^eVmxDN(9Atm3VMcDjFZwlR!_t;6lGtYYDpojU9{hOKQQ#6= z-eA}j$4J3Sj-9xx1WzP_JZFLXxA$iXNuRsIY>1SEH6ebx{uwhdN_hm$;_;O1)(R`CT>{l|ga1T^B=05ha~cT8*eK6% zg@WA3@w)x~n3x)x6T>&L*{DW{onmaR}*2e4g-0Bi!&MRu*)+ zOlA9sCb-b6(EHCtPx*E2TO*BXgf2xKUQ8}T2*G@^SMZ&q{;Kp=*pEuY81?P+oZne9 zecy32EZU|*zynr;ryiPbm=2;LG_HIE?DUpso=aQeFmgU!Gz8I@E~dyqRU?m!c~wc7 z%c(Y1@d@>pp803*ZhG!b>?gji-DjzwZL4!WEs2_WJMM0Tr%ES9OPM7`PUj@(PXA~{ zNQ@ZeL1MH3C#maG7-=CCvNX1DJ1mm{v`reKJ{WvL|YQ$AYaYABilrW zs6Xkl>y7Seo0ahViGLX?P< zcbWBpWt(_rT?r~#-_chbAmPCxVtJqA&=F}1oJDK?OO zbok^uv@77T@ut?<15AT)v%^Bug2DVZs}}TAF!&K@%LJOy2quB@hJbNzsq!IUp&ML$ zIG7lk8v_7mR!>^|vmvKXeI#pqVJ32mfCQsy`&0 z?QOR#~!sct3Zvy&K0ra0bQJ@tOU>>9!5NLyhM+JHi z0mcLIp#v>ZKW2aKx8?;R?3z>p`$!PN-|7{iuu)*1TN@fVOHBu*U|{mI{u@s>evu#r)IESY zM}e_#!zm;R7&KLrTVhWXnCMoV@}WMG1fnj{y{Mn!=%v4STOmm z&I=c;ek1_t2#gBTAIP~-=us?K;MN?LIKUj%$QuF;)Fuv$eJeXJDJdibI9CD#28Qhq zS>2D&%sBAFTNKgKj7<*^OFBR+f3~pJerpSHJecGbX(FMK9!diP!>$1X^KXFOc=vnf z4Kl`T3LRRS{AemWwB-g zz{;Y$V?`x^32%G-``i|)zk>qgdDK z8{dz$@)@Mb)I)*@ywb z;sbP2w_d<3*R4N=Q(#`WvO7i+ZK2YJKC6m7Q}&x zB=83mzTgg;F#(GLB~Sb1J=Qe91%btPETB{@$!)A9-B1zA@2Eg&SmImVA90)@_)OAK}T;8Ck;1<+pP%&ikktx ze`^9;2Eb})`pv?JdS(358+yYsZvD+dfFAC`qW;fxc&zGG-UFCB2&@#Gf0*0UbtijU zgBFqresJ48i*NB%0swvp=pN4>_=&#%;1@H&RJVBkc%$cBz=N9_Aq))5A9#bIKk-OV z*>}I@kik2^_J!I1@PQh*MJ4|B;x`cVC=2}H zW~WDhl5m00p|7)ltt|h(YxK80Y*@dA;Gw|VN2t(wKF_{d^8r93@*gO? zjituT{g)=7^-rji;T;sa@R!!Sd$Pu302KCrv|1S7LG5p#H#dPH*iqkZayZ0*pZ;8e zL(T4>V}-x&LADElp;UWyN98U81{k=bg31&DRH*eGHMZy%w)ln`Ykx=m{tp(l7@#IP z-%-_ye}#zU4YkDWj#^XvOT*9&HQ4ixdcWismAwR@f*^NPAm4=eKdWOTfPn3bzX{FH zCBJMuypgI7xRGLp3X}o?3v?Z-Pzq4TBX6iQH;JhGx74B=YFg}XDjc-E9GKNNzWO&O z1>BST5w$CsH+YJhEEVZ3^xyo{-*fp(0o11q{P1palmTt6*WSrqmjV08ja_8r0M()8 zjtb);kKQBvsQl(U-aZ16i7qC-{i6GbPHAhT4+A~hvilAtAW%T z*3{f@77{cA4U7sstN>Qh8?&x&_|A*};XlR%qyFLl8<=4w00V#d4I{tn=?#@=~`?wLq(Pv0r+dc+CMG0kMu8m zQvk?jE>;1X%uNrIFzcK~0dr8$|2BsQ?H?HwC{gXNL1(B1#!Um~mII}F0%+2z`=u#O zwIH_x=sz)VpZDitoJ4qsU#JD+-!=+PxSqest=a?q`qR)dvODObIxyYs2*0cY8dRpd zqXOATWN0JM;4P~UV8Mc*t?z+JJg5%F``46zGm?Lsvch=8*gTk*bRXV8rleE=bn`W!`PcRu>Ch||Hygb z!NA-lDDF(n_PLUT9yWq`!K*T0Xp#q*6e`&SW(1ijLhYNtf*>?CXlWCWUQtko9yEdP Tqx-`6!XyLF5Z^R`F2npEhEOWy diff --git a/resources/plugin.yml b/resources/plugin.yml index 99f1913..e44728d 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,6 +1,6 @@ name: MobArena main: com.garbagemule.MobArena.MobArena -version: 0.94.3.7 +version: 0.94.3.8 softdepend: [Spout,Permissions,MultiVerse,XcraftGate,Towny,Heroes,MagicSpells] commands: ma: @@ -83,6 +83,7 @@ permissions: mobarena.setup.containers: true mobarena.setup.addcontainer: true mobarena.setup.delcontainer: true + mobarena.setup.leaderboards: true mobarena.setup.checkdata: true mobarena.setup.autogenerate: true mobarena.setup.autodegenerate: true @@ -140,6 +141,9 @@ permissions: mobarena.setup.delcontainer: description: Delete a container. default: false + mobarena.setup.leaderboards: + description: Set up leaderboards. + default: false mobarena.setup.checkdata: description: Check which points need to be set up. default: false diff --git a/src/com/garbagemule/MobArena/Arena.java b/src/com/garbagemule/MobArena/Arena.java index e26ee5c..bb82d05 100644 --- a/src/com/garbagemule/MobArena/Arena.java +++ b/src/com/garbagemule/MobArena/Arena.java @@ -6,7 +6,9 @@ import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; @@ -45,6 +47,7 @@ import org.bukkit.permissions.PermissionAttachment; import org.bukkit.util.config.Configuration; import com.garbagemule.MobArena.MAMessages.Msg; +import com.garbagemule.MobArena.leaderboards.Leaderboard; import com.garbagemule.MobArena.repairable.Repairable; import com.garbagemule.MobArena.repairable.RepairableComparator; import com.garbagemule.MobArena.repairable.RepairableContainer; @@ -112,6 +115,8 @@ public class Arena // Logging protected ArenaLog log; + protected Map arenaPlayerMap; + protected Leaderboard leaderboard; protected MAListener eventListener; @@ -148,6 +153,7 @@ public class Arena repairables = new LinkedList(); containables = new LinkedList(); attachments = new HashMap(); + arenaPlayerMap = new HashMap(); running = false; edit = false; @@ -194,6 +200,7 @@ public class Arena p.setHealth(20); p.setFoodLevel(20); assignClassPermissions(p); + arenaPlayerMap.put(p, new ArenaPlayer(p, this, plugin)); } // Copy the singleWaves Set for polling. @@ -213,6 +220,9 @@ public class Arena log = new ArenaLog(plugin, this); log.start(); + // Initialize leaderboards and start displaying info. + leaderboard.initialize(); + // Announce and notify. MAUtils.tellAll(this, Msg.ARENA_START); @@ -235,6 +245,9 @@ public class Arena // Set the boolean. running = false; + // Stop tracking leaderboards + leaderboard.update(); + // Finish logging log.end(); if (logging != null) @@ -262,6 +275,7 @@ public class Arena // Announce and clear sets. MAUtils.tellAll(this, Msg.ARENA_END, true); arenaPlayers.clear(); + arenaPlayerMap.clear(); lobbyPlayers.clear(); readyPlayers.clear(); notifyPlayers.clear(); @@ -321,12 +335,13 @@ public class Arena { storePlayerData(p, loc); MAUtils.sitPets(p); + p.setHealth(20); if (plugin.getHeroManager() != null) { Hero hero = plugin.getHeroManager().getHero(p); hero.setHealth(hero.getMaxHealth()); + hero.syncHealth(); } - p.setHealth(20); p.setFoodLevel(20); p.setGameMode(GameMode.SURVIVAL); movePlayerToLobby(p); @@ -510,7 +525,7 @@ public class Arena if (p == null || log.players.get(p) == null) return; - log.players.get(p).kills++; + arenaPlayerMap.get(p).getStats().kills++; } public void restoreInvAndGiveRewardsDelayed(final Player p) @@ -633,6 +648,7 @@ public class Arena { Hero hero = plugin.getHeroManager().getHero(p); hero.setHealth(health * hero.getMaxHealth() / 20); + hero.syncHealth(); } } @@ -685,7 +701,7 @@ public class Arena else restoreInvAndGiveRewards(p); if (log != null && spawnThread != null) - log.players.get(p).lastWave = spawnThread.getWave() - 1; + arenaPlayerMap.get(p).getStats().lastWave = spawnThread.getWave() - 1; } public void repairBlocks() @@ -898,6 +914,7 @@ public class Arena spawnpoints = MAUtils.getArenaSpawnpoints(config, world, configName); spawnpointsBoss = MAUtils.getArenaBossSpawnpoints(config, world, configName); containers = MAUtils.getArenaContainers(config, world, configName); + leaderboard = new Leaderboard(plugin, this, config); // NEW WAVES singleWaves = WaveUtils.getWaves(this, config, WaveBranch.SINGLE); @@ -1214,6 +1231,22 @@ public class Arena return arenaPlayers; } + public Collection getArenaPlayerSet() + { + return arenaPlayerMap.values(); + } + + public List getArenaPlayerStatistics(Comparator comparator) + { + List list = new ArrayList(); + + for (ArenaPlayer ap : arenaPlayerMap.values()) + list.add(ap.getStats()); + + Collections.sort(list, comparator); + return list; + } + public List getNonreadyPlayers() { List result = new LinkedList(); diff --git a/src/com/garbagemule/MobArena/ArenaLog.java b/src/com/garbagemule/MobArena/ArenaLog.java index 0c37451..0c78f57 100644 --- a/src/com/garbagemule/MobArena/ArenaLog.java +++ b/src/com/garbagemule/MobArena/ArenaLog.java @@ -126,16 +126,16 @@ public class ArenaLog public void playerKill(Player p) { - players.get(p).kills++; + players.get(p).getStats().kills++; } public void playerDamager(Player p, int damage) { - players.get(p).dmgDone += damage; + players.get(p).getStats().dmgDone += damage; } public void playerDamagee(Player p, int damage) { - players.get(p).dmgTaken += damage; + players.get(p).getStats().dmgTaken += damage; } } diff --git a/src/com/garbagemule/MobArena/ArenaPlayer.java b/src/com/garbagemule/MobArena/ArenaPlayer.java index fc3b215..119acab 100644 --- a/src/com/garbagemule/MobArena/ArenaPlayer.java +++ b/src/com/garbagemule/MobArena/ArenaPlayer.java @@ -16,18 +16,10 @@ public class ArenaPlayer public List rewards; public List blocks; + private ArenaPlayerStatistics stats; + protected boolean inArena, inLobby, inSpec, isReady; - // Session fields. - public int kills, dmgDone, dmgTaken, swings, hits, deaths, lastWave; - public int flagCaps, flagAttempts, flagReturns; // BG: Capture the Pumpkin - public int baseCaps; // BG: Domination - - // All-time fields. - protected int totalKills, totalDmgDone, totalDmgTaken, totalSwings, totalHits, totalDeaths; - protected int totalFlagCaps, totalFlagAttempts, totalFlagReturns; // BG: Capture the Pumpkin - protected int totalBaseCaps; // BG: Domination - public ArenaPlayer(Player player, Arena arena, MobArena plugin) { this.player = player; @@ -37,9 +29,12 @@ public class ArenaPlayer className = arena.classMap.get(player); rewards = new LinkedList(); blocks = new LinkedList(); + + stats = new ArenaPlayerStatistics(this); } public Player getPlayer() { return player; } public Arena getArena() { return arena; } public String getClassName() { return className; } + public ArenaPlayerStatistics getStats() { return stats; } } diff --git a/src/com/garbagemule/MobArena/ArenaPlayerStatistics.java b/src/com/garbagemule/MobArena/ArenaPlayerStatistics.java new file mode 100644 index 0000000..be9f017 --- /dev/null +++ b/src/com/garbagemule/MobArena/ArenaPlayerStatistics.java @@ -0,0 +1,74 @@ +package com.garbagemule.MobArena; + +import java.util.Comparator; + +import org.bukkit.entity.Player; + +public class ArenaPlayerStatistics +{ + private String playerName, className; + private ArenaPlayer player; + public int kills, dmgDone, dmgTaken, swings, hits, lastWave; + + public ArenaPlayerStatistics(ArenaPlayer player) + { + this.player = player; + this.playerName = player.getPlayer().getName(); + this.className = player.getClassName(); + } + + public ArenaPlayerStatistics(Player p, Arena arena, MobArena plugin) + { + this(new ArenaPlayer(p, arena, plugin)); + } + + public ArenaPlayer getArenaPlayer() + { + return player; + } + + public static Comparator killComparator() + { + return new Comparator() + { + public int compare(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) + { + if (s1.kills > s2.kills) + return 1; + else if (s1.kills < s2.kills) + return -1; + return 0; + } + }; + } + + public static Comparator waveComparator() + { + return new Comparator() + { + public int compare(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) + { + if (s1.lastWave > s2.lastWave) + return 1; + else if (s1.lastWave < s2.lastWave) + return -1; + return 0; + } + }; + } + + public static Comparator dmgDoneComparator() + { + return new Comparator() + { + public int compare(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) + { + if (s1.dmgDone > s2.dmgDone) + return 1; + else if (s1.dmgDone < s2.dmgDone) + return -1; + return 0; + } + }; + } +} diff --git a/src/com/garbagemule/MobArena/MABlockListener.java b/src/com/garbagemule/MobArena/MABlockListener.java index cbc057b..47c9c8c 100644 --- a/src/com/garbagemule/MobArena/MABlockListener.java +++ b/src/com/garbagemule/MobArena/MABlockListener.java @@ -1,10 +1,14 @@ package com.garbagemule.MobArena; +import org.bukkit.ChatColor; 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.BlockPlaceEvent; +import org.bukkit.event.block.SignChangeEvent; + +import com.garbagemule.MobArena.leaderboards.Stats; public class MABlockListener extends BlockListener { @@ -39,6 +43,37 @@ public class MABlockListener extends BlockListener arena.eventListener.onBlockIgnite(event); } + public void onSignChange(SignChangeEvent event) + { + if (!event.getPlayer().hasPermission("mobarena.setup.leaderboards")) + return; + + if (event.getLine(0).startsWith("[MA]")) + { + String text = event.getLine(0).substring((4)); + Arena arena; + Stats stat; + if ((arena = am.getArenaWithName(text)) != null) + { + arena.eventListener.onSignChange(event); + setSignLines(event, ChatColor.GREEN + "MobArena", ChatColor.YELLOW + arena.arenaName(), ChatColor.AQUA + "Players", "---------------"); + } + else if ((stat = Stats.fromString(text)) != null) + { + setSignLines(event, ChatColor.GREEN + "", "", ChatColor.AQUA + stat.getFullName(), "---------------"); + MAUtils.tellPlayer(event.getPlayer(), "Stat sign created."); + } + } + } + + private void setSignLines(SignChangeEvent event, String s1, String s2, String s3, String s4) + { + event.setLine(0, s1); + event.setLine(1, s2); + event.setLine(2, s3); + event.setLine(3, s4); + } + /* public void onBlockPhysics(BlockPhysicsEvent event) { diff --git a/src/com/garbagemule/MobArena/MAListener.java b/src/com/garbagemule/MobArena/MAListener.java index 37c8150..3d0eba8 100644 --- a/src/com/garbagemule/MobArena/MAListener.java +++ b/src/com/garbagemule/MobArena/MAListener.java @@ -21,6 +21,7 @@ import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockEvent; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EndermanPickupEvent; import org.bukkit.event.entity.EndermanPlaceEvent; @@ -49,6 +50,7 @@ import org.bukkit.material.Door; import org.bukkit.material.Redstone; import com.garbagemule.MobArena.MAMessages.Msg; +import com.garbagemule.MobArena.leaderboards.Leaderboard; import com.garbagemule.MobArena.repairable.*; public class MAListener implements ArenaListener @@ -154,6 +156,13 @@ public class MAListener implements ArenaListener break; } } + + public void onSignChange(SignChangeEvent event) + { + arena.leaderboard = new Leaderboard(plugin, arena, event.getBlock().getLocation()); + MAUtils.setArenaCoord(plugin.getConfig(), arena, "leaderboard", event.getBlock().getLocation()); + MAUtils.tellPlayer(event.getPlayer(), "Leaderboard made. Now set up the stat signs!"); + } public void onCreatureSpawn(CreatureSpawnEvent event) { @@ -331,7 +340,7 @@ public class MAListener implements ArenaListener // Log damage if (!event.isCancelled()) - arena.log.players.get(player).dmgTaken += event.getDamage(); + arena.arenaPlayerMap.get(player).getStats().dmgTaken += event.getDamage(); } private void onPetDamage(EntityDamageEvent event, Wolf pet, Entity damager) @@ -352,13 +361,13 @@ public class MAListener implements ArenaListener return; } - arena.log.players.get((Player) damager).dmgDone += event.getDamage(); - arena.log.players.get((Player) damager).hits++; + arena.arenaPlayerMap.get((Player) damager).getStats().dmgDone += event.getDamage(); + arena.arenaPlayerMap.get((Player) damager).getStats().hits++; } else if (damager instanceof Wolf && arena.pets.contains(damager)) { event.setDamage(1); - arena.log.players.get((Player) ((Wolf) damager).getOwner()).dmgDone += event.getDamage(); + arena.arenaPlayerMap.get((Player) ((Wolf) damager).getOwner()).getStats().dmgDone += event.getDamage(); } else if (damager instanceof LivingEntity) { @@ -465,7 +474,7 @@ public class MAListener implements ArenaListener if (!arena.running || !arena.arenaPlayers.contains(event.getPlayer())) return; - arena.log.players.get(event.getPlayer()).swings++; + arena.arenaPlayerMap.get(event.getPlayer()).getStats().swings++; } public void onPlayerDropItem(PlayerDropItemEvent event) diff --git a/src/com/garbagemule/MobArena/MobArena.java b/src/com/garbagemule/MobArena/MobArena.java index 7f4af56..bad4da6 100644 --- a/src/com/garbagemule/MobArena/MobArena.java +++ b/src/com/garbagemule/MobArena/MobArena.java @@ -125,6 +125,7 @@ public class MobArena extends JavaPlugin 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.Highest, this); + pm.registerEvent(Event.Type.SIGN_CHANGE, blockListener, Priority.Normal, 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); diff --git a/src/com/garbagemule/MobArena/leaderboards/Leaderboard.java b/src/com/garbagemule/MobArena/leaderboards/Leaderboard.java new file mode 100644 index 0000000..f95dc1e --- /dev/null +++ b/src/com/garbagemule/MobArena/leaderboards/Leaderboard.java @@ -0,0 +1,257 @@ +package com.garbagemule.MobArena.leaderboards; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Location; +import org.bukkit.block.BlockFace; +import org.bukkit.block.BlockState; +import org.bukkit.block.Sign; +import org.bukkit.util.config.Configuration; + +import com.garbagemule.MobArena.Arena; +import com.garbagemule.MobArena.ArenaPlayer; +import com.garbagemule.MobArena.ArenaPlayerStatistics; +import com.garbagemule.MobArena.MobArena; +import com.garbagemule.MobArena.util.ConfigUtils; + +public class Leaderboard +{ + private MobArena plugin; + private Arena arena; + + private Location topLeft; + private Sign topLeftSign; + private BlockFace direction; + private int rows, cols, trackingId; + + private List boards; + private List stats; + + private boolean isValid; + + /** + * Default constructor. + * Creates a new leaderboard with no signs or locations or anything. + * @param plugin MobArena instance. + * @param arena The arena to which this leaderboard belongs. + */ + public Leaderboard(MobArena plugin, Arena arena) + { + this.plugin = plugin; + this.arena = arena; + this.boards = new ArrayList(); + this.stats = new ArrayList(); + } + + /** + * Config constructor. + * Used to create a leaderboard from the location persisted in the config-file. + * @param plugin MobArena instance. + * @param arena The arena to which this leaderboard belongs. + * @param config The config-file in which the location is specified. + */ + public Leaderboard(MobArena plugin, Arena arena, Configuration config) + { + this(plugin, arena); + + // Grab the coords from the config-file. + String coords = config.getString("arenas." + arena.configName() + ".coords.leaderboard", null); + + if (coords != null) + { + // Grab the top left sign. + topLeft = ConfigUtils.parseLocation(arena.getWorld(), coords); + + // If it is a sign, validate. + if (topLeft.getBlock().getState() instanceof Sign) + isValid = isGridWellFormed(); + } + } + + /** + * Location constructor. + * Used to create a leaderboard on-the-fly from the location from the SignChangeEvent. + * @param plugin MobArena instance. + * @param arena The arena to which this leaderboard belongs. + * @param topLeft The location at which the main leaderboard sign exists. + */ + public Leaderboard(MobArena plugin, Arena arena, Location topLeft) + { + this(plugin, arena); + + if (!(topLeft.getBlock().getState() instanceof Sign)) + throw new IllegalArgumentException("Block must be a sign!"); + + this.topLeft = topLeft; + } + + /** + * Grab all adjacent signs and register the individual columns. + */ + public void initialize() + { + if (!isGridWellFormed()) + return; + + initializeBoards(); + initializeStats(); + } + + public void update() + { + Collections.sort(stats, ArenaPlayerStatistics.waveComparator()); + + for (LeaderboardColumn column : boards) + column.update(stats); + } + + public void startTracking() + { + trackingId = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, + new Runnable() + { + public void run() + { + update(); + } + }, 100, 100); + } + + public void stopTracking() + { + Bukkit.getServer().getScheduler().cancelTask(trackingId); + } + + /** + * Check if the leaderboards grid is well-formed. + * @return true, if the grid is well-formed, false otherwise. + */ + private boolean isGridWellFormed() + { + if (topLeft == null) + return false; + + BlockState state = topLeft.getBlock().getState(); + + if (!(state instanceof Sign)) + { + MobArena.error("Leaderboards for '" + arena.configName() + "' could not be established!"); + return false; + } + + // Grab the top left sign and set up a copy for parsing. + this.topLeftSign = (Sign) state; + Sign current = this.topLeftSign; + + // Calculate matrix dimensions. + this.direction = getRightDirection(current); + this.rows = getSignCount(current, BlockFace.DOWN); + this.cols = getSignCount(current, direction); + + // Require at least 2x2 to be valid + if (rows <= 1 || cols <= 1) + return false; + + // Get the left-most sign in the current row. + Sign first = getAdjacentSign(current, BlockFace.DOWN); + + for (int i = 1; i < rows; i++) + { + // Back to the first sign of the row. + current = first; + for (int j = 1; j < cols; j++) + { + // Grab the sign to the right, if not a sign, grid is ill-formed. + current = getAdjacentSign(current, direction); + if (current == null) return false; + } + + // Hop down to the next row. + first = getAdjacentSign(first, BlockFace.DOWN); + } + return true; + } + + /** + * Build the leaderboards. + * Requires: The grid MUST be valid! + */ + private void initializeBoards() + { + boards.clear(); + Sign header = this.topLeftSign; + Sign current; + + do + { + // Strip the sign of any colors. + String name = ChatColor.stripColor(header.getLine(2)); + + // Grab the stat to track. + Stats stat = Stats.getByFullName(name); + if (stat == null) continue; + + // Create the list of signs + List signs = new ArrayList(); + current = header; + for (int i = 1; i < rows; i++) + { + current = getAdjacentSign(current, BlockFace.DOWN); + signs.add(current); + } + + // Create the column. + LeaderboardColumn column = LeaderboardColumn.create(stat.getShortName(), header, signs); + if (column == null) continue; + this.boards.add(column); + } + while ((header = getAdjacentSign(header, direction)) != null); + } + + private void initializeStats() + { + stats.clear(); + for (ArenaPlayer ap : arena.getArenaPlayerSet()) + stats.add(ap.getStats()); + } + + private int getSignCount(Sign s, BlockFace direction) + { + int i = 1; + + BlockState state = s.getBlock().getState(); + while ((state = state.getBlock().getRelative(direction).getState()) instanceof Sign) + i++; + + return i; + } + + private Sign getAdjacentSign(Sign s, BlockFace direction) + { + BlockState state = s.getBlock().getRelative(direction).getState(); + if (state instanceof Sign) + return (Sign) state; + return null; + } + + private BlockFace getRightDirection(Sign s) + { + byte data = s.getRawData(); + + if (data == 2) return BlockFace.NORTH; + if (data == 3) return BlockFace.SOUTH; + if (data == 4) return BlockFace.WEST; + if (data == 5) return BlockFace.EAST; + + return null; + } + + public boolean isValid() + { + return isValid; + } +} diff --git a/src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java b/src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java new file mode 100644 index 0000000..ffc36a5 --- /dev/null +++ b/src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java @@ -0,0 +1,78 @@ +package com.garbagemule.MobArena.leaderboards; + +import java.lang.reflect.Field; +import java.util.List; + +import org.bukkit.block.Sign; + +import com.garbagemule.MobArena.ArenaPlayerStatistics; + +public class LeaderboardColumn +{ + private Field field; + private Sign header; + private List signs; + + private LeaderboardColumn(String statname, Sign header, List signs) throws Exception + { + this.field = ArenaPlayerStatistics.class.getDeclaredField(statname); + this.header = header; + this.signs = signs; + } + + /** + * Safely create a new LeaderboardColumn. + * Avoid the try-catch blocks by creating columns with this method. + * @param statname The name of the stat to track + * @param header The header sign + * @param signs A list of signs + * @return A new LeaderboardColumn, or null + */ + public static LeaderboardColumn create(String statname, Sign header, List signs) + { + try + { + return new LeaderboardColumn(statname, header, signs); + } + catch (Exception e) + { + e.printStackTrace(); + return null; + } + } + + public void update(List stats) + { + // Make sure the stats will fit on the signs. + int range = Math.min(stats.size(), signs.size()*4); + + try + { + for (int i = 0; i < range; i++) + { + // Grab the right sign. + Sign s = signs.get(i/4); + + // Get the stat value. + field.setAccessible(true); + Object o = field.get(stats.get(i)); + field.setAccessible(false); + + // Set the value on the right line. + s.setLine(i % 4, o.toString()); + s.update(); + } + } + catch (Exception e) { e.printStackTrace(); } + } + + public Sign getHeader() + { + return header; + } + + public List getSigns() + { + return signs; + } +} diff --git a/src/com/garbagemule/MobArena/leaderboards/Stats.java b/src/com/garbagemule/MobArena/leaderboards/Stats.java new file mode 100644 index 0000000..71c1786 --- /dev/null +++ b/src/com/garbagemule/MobArena/leaderboards/Stats.java @@ -0,0 +1,49 @@ +package com.garbagemule.MobArena.leaderboards; + +import com.garbagemule.MobArena.util.WaveUtils; + +public enum Stats +{ + players("Players", "playerName"), + className("Class", "className"), + kills("Kills", "kills"), + dmgDone("Damage Done", "dmgDone"), + dmgTaken("Damage Taken", "dmgTaken"), + swings("Swings", "swings"), + hits("Hits", "hits"), + lastWave("Last Wave", "lastWave"); + + private String name, shortName; + + private Stats(String name, String shortName) + { + this.name = name; + this.shortName = shortName; + } + + public String getShortName() + { + return shortName; + } + + public String getFullName() + { + return name; + } + + public static Stats fromString(String name) + { + if (name.equals("class")) + return Stats.className; + return WaveUtils.getEnumFromStringCaseSensitive(Stats.class, name); + } + + public static Stats getByFullName(String name) + { + + for (Stats s : Stats.values()) + if (s.name.equals(name)) + return s; + return null; + } +} diff --git a/src/com/garbagemule/MobArena/util/ConfigUtils.java b/src/com/garbagemule/MobArena/util/ConfigUtils.java new file mode 100644 index 0000000..469ebc7 --- /dev/null +++ b/src/com/garbagemule/MobArena/util/ConfigUtils.java @@ -0,0 +1,47 @@ +package com.garbagemule.MobArena.util; + +import org.bukkit.Location; +import org.bukkit.World; + +public class ConfigUtils +{ + public static Location parseLocation(World world, String coords) + { + String[] parts = coords.split(","); + if (parts.length != 5) + throw new IllegalArgumentException("Input string must contain x, y, z, yaw and pitch"); + + Integer x = getInt(parts[0]); + Integer y = getInt(parts[1]); + Integer z = getInt(parts[2]); + Float yaw = getFloat(parts[3]); + Float pitch = getFloat(parts[4]); + + if (x == null || y == null || z == null || yaw == null || pitch == null) + throw new NullPointerException("Some of the parsed values are null!"); + + return new Location(world, x, y, z, yaw, pitch); + } + + private static Integer getInt(String s) + { + try + { + return Integer.parseInt(s.trim()); + } + catch (Exception e) {} + + return null; + } + + private static Float getFloat(String s) + { + try + { + return Float.parseFloat(s.trim()); + } + catch (Exception e) {} + + return null; + } +} diff --git a/src/com/garbagemule/MobArena/util/WaveUtils.java b/src/com/garbagemule/MobArena/util/WaveUtils.java index 656488e..8ae51ca 100644 --- a/src/com/garbagemule/MobArena/util/WaveUtils.java +++ b/src/com/garbagemule/MobArena/util/WaveUtils.java @@ -542,4 +542,20 @@ public class WaveUtils } return null; } + + /** + * Get the enum value of a string, null if it doesn't exist. + */ + public static > T getEnumFromStringCaseSensitive(Class c, String string) + { + if(c != null && string != null) + { + try + { + return Enum.valueOf(c, string); + } + catch(IllegalArgumentException ex) { } + } + return null; + } } diff --git a/src/com/garbagemule/MobArena/util/data/PlainText.java b/src/com/garbagemule/MobArena/util/data/PlainText.java index 46c521e..c0cf907 100644 --- a/src/com/garbagemule/MobArena/util/data/PlainText.java +++ b/src/com/garbagemule/MobArena/util/data/PlainText.java @@ -129,11 +129,11 @@ public class PlainText buffy.append("- "); buffy.append(TextUtils.padRight(name, NAME)); buffy.append(pad); buffy.append(TextUtils.padRight(ap.getClassName(), CLASS)); buffy.append(pad); - buffy.append(TextUtils.padLeft(ap.lastWave, WAVE)); buffy.append(pad); - buffy.append(TextUtils.padLeft(ap.kills, KILLS)); buffy.append(pad); - buffy.append(TextUtils.padLeft(ap.dmgDone, DMGDONE)); buffy.append(pad); - buffy.append(TextUtils.padLeft(ap.dmgTaken, DMGTAKEN)); buffy.append(pad); - buffy.append(TextUtils.padLeft(((ap.swings != 0) ? ap.hits*100/ap.swings : 0), ACCURACY-1)); buffy.append("%"); buffy.append(pad); + buffy.append(TextUtils.padLeft(ap.getStats().lastWave, WAVE)); buffy.append(pad); + buffy.append(TextUtils.padLeft(ap.getStats().kills, KILLS)); buffy.append(pad); + buffy.append(TextUtils.padLeft(ap.getStats().dmgDone, DMGDONE)); buffy.append(pad); + buffy.append(TextUtils.padLeft(ap.getStats().dmgTaken, DMGTAKEN)); buffy.append(pad); + buffy.append(TextUtils.padLeft(((ap.getStats().swings != 0) ? ap.getStats().hits*100/ap.getStats().swings : 0), ACCURACY-1)); buffy.append("%"); buffy.append(pad); buffy.append(MAUtils.listToString(ap.rewards)); result.add(buffy.toString()); diff --git a/src/com/garbagemule/MobArena/util/data/Totals.java b/src/com/garbagemule/MobArena/util/data/Totals.java index e47b1c4..087ac8d 100644 --- a/src/com/garbagemule/MobArena/util/data/Totals.java +++ b/src/com/garbagemule/MobArena/util/data/Totals.java @@ -59,12 +59,12 @@ public class Totals for (ArenaPlayer ap : log.players.values()) { // Basic values - updateInt(totals,"players." + ap.player.getName() + ".games-played", 1, true); - updateInt(totals,"players." + ap.player.getName() + ".kills", ap.kills, true); - updateInt(totals,"players." + ap.player.getName() + ".damage-done", ap.dmgDone, true); - updateInt(totals,"players." + ap.player.getName() + ".damage-taken", ap.dmgTaken, true); - updateInt(totals,"players." + ap.player.getName() + ".swings", ap.swings, true); - updateInt(totals,"players." + ap.player.getName() + ".hits", ap.hits, true); + updateInt(totals,"players." + ap.player.getName() + ".games-played", 1, true); + updateInt(totals,"players." + ap.player.getName() + ".kills", ap.getStats().kills, true); + updateInt(totals,"players." + ap.player.getName() + ".damage-done", ap.getStats().dmgDone, true); + updateInt(totals,"players." + ap.player.getName() + ".damage-taken", ap.getStats().dmgTaken, true); + updateInt(totals,"players." + ap.player.getName() + ".swings", ap.getStats().swings, true); + updateInt(totals,"players." + ap.player.getName() + ".hits", ap.getStats().hits, true); // Class count updateInt(totals,"players." + ap.player.getName() + ".classes." + ap.className,1,true); @@ -131,7 +131,7 @@ public class Totals { int kills = 0; for (ArenaPlayer ap : log.players.values()) - kills += ap.kills; + kills += ap.getStats().kills; return kills; } @@ -149,9 +149,9 @@ public class Totals if (!ap.className.equals(className)) continue; - kills += ap.kills; - dmgDone += ap.dmgDone; - dmgTaken += ap.dmgTaken; + kills += ap.getStats().kills; + dmgDone += ap.getStats().dmgDone; + dmgTaken += ap.getStats().dmgTaken; } return new int[]{kills, dmgDone, dmgTaken}; } diff --git a/src/com/garbagemule/MobArena/util/data/XML.java b/src/com/garbagemule/MobArena/util/data/XML.java index 2ca86ac..a0502e0 100644 --- a/src/com/garbagemule/MobArena/util/data/XML.java +++ b/src/com/garbagemule/MobArena/util/data/XML.java @@ -48,12 +48,12 @@ public class XML Element p = new Element("player").setAttribute(new Attribute("name", entry.getKey().getName())); ArenaPlayer ap = entry.getValue(); - p.addContent(new Element("last-wave").addContent(ap.lastWave + "")); - p.addContent(new Element("kills").addContent(ap.lastWave + "")); - p.addContent(new Element("damage-done").addContent(ap.dmgDone + "")); - p.addContent(new Element("damage-taken").addContent(ap.dmgTaken + "")); - p.addContent(new Element("swings").addContent(ap.swings + "")); - p.addContent(new Element("hits").addContent(ap.hits + "")); + p.addContent(new Element("last-wave").addContent(ap.getStats().lastWave + "")); + p.addContent(new Element("kills").addContent(ap.getStats().lastWave + "")); + p.addContent(new Element("damage-done").addContent(ap.getStats().dmgDone + "")); + p.addContent(new Element("damage-taken").addContent(ap.getStats().dmgTaken + "")); + p.addContent(new Element("swings").addContent(ap.getStats().swings + "")); + p.addContent(new Element("hits").addContent(ap.getStats().hits + "")); // Rewards Element rw = new Element("rewards"); diff --git a/src/com/garbagemule/MobArena/util/data/YAML.java b/src/com/garbagemule/MobArena/util/data/YAML.java index 7f04417..a6d6006 100644 --- a/src/com/garbagemule/MobArena/util/data/YAML.java +++ b/src/com/garbagemule/MobArena/util/data/YAML.java @@ -43,12 +43,12 @@ public class YAML String p = entry.getKey().getName(); ArenaPlayer ap = entry.getValue(); - config.setProperty("player-data." + p + ".last-wave", ap.lastWave); - config.setProperty("player-data." + p + ".kills", ap.kills); - config.setProperty("player-data." + p + ".damage-done", ap.dmgDone); - config.setProperty("player-data." + p + ".damage-taken", ap.dmgTaken); - config.setProperty("player-data." + p + ".swings", ap.swings); - config.setProperty("player-data." + p + ".hits", ap.hits); + config.setProperty("player-data." + p + ".last-wave", ap.getStats().lastWave); + config.setProperty("player-data." + p + ".kills", ap.getStats().kills); + config.setProperty("player-data." + p + ".damage-done", ap.getStats().dmgDone); + config.setProperty("player-data." + p + ".damage-taken", ap.getStats().dmgTaken); + config.setProperty("player-data." + p + ".swings", ap.getStats().swings); + config.setProperty("player-data." + p + ".hits", ap.getStats().hits); for (ItemStack stack : ap.rewards) { boolean money = stack.getTypeId() == MobArena.ECONOMY_MONEY_ID;