From 15fc4048aefb730777a42901ad25abba31014f65 Mon Sep 17 00:00:00 2001 From: Boosik Date: Mon, 11 Mar 2013 17:06:41 +0100 Subject: [PATCH] Improved handling of Listeners. They are not registered when feature that needs specific Listener is disabled. --- .../Listeners/boosEntityDamageListener.class | Bin 0 -> 1606 bytes .../Listeners/boosPlayerDeathListener.class | Bin 0 -> 1763 bytes .../boosPlayerGameModeChangeListener.class | Bin 0 -> 1679 bytes .../boosPlayerInteractListener.class | Bin 0 -> 2330 bytes .../Listeners/boosPlayerMoveListener.class | Bin 0 -> 2390 bytes .../boosPlayerToggleSneakListener.class | Bin 0 -> 1534 bytes .../boosPlayerToggleSprintListener.class | Bin 0 -> 1543 bytes .../Listeners/boosSignChangeListener.class | Bin 0 -> 1841 bytes .../Listeners/boosSignInteractListener.class | Bin 0 -> 3467 bytes .../boosCooldown/boosConfigManager.class | Bin 17610 -> 17820 bytes bin/cz/boosik/boosCooldown/boosCoolDown.class | Bin 9444 -> 11462 bytes .../boosCooldown/boosCoolDownListener.class | Bin 19804 -> 11820 bytes .../boosCooldown/boosCoolDownManager.class | Bin 12752 -> 12795 bytes .../boosCooldown/boosWarmUpManager.class | Bin 4514 -> 4514 bytes .../boosWarmUpTimer$boosWarmUpRunnable.class | Bin 2153 -> 2153 bytes .../boosik/boosCooldown/boosWarmUpTimer.class | Bin 1725 -> 1725 bytes bin/plugin.yml | 2 +- .../Listeners/boosEntityDamageListener.java | 34 + .../Listeners/boosPlayerDeathListener.java | 41 + .../boosPlayerGameModeChangeListener.java | 35 + .../Listeners/boosPlayerInteractListener.java | 58 ++ .../Listeners/boosPlayerMoveListener.java | 47 + .../boosPlayerToggleSneakListener.java | 30 + .../boosPlayerToggleSprintListener.java | 30 + .../Listeners/boosSignChangeListener.java | 42 + .../Listeners/boosSignInteractListener.java | 66 ++ .../boosCooldown/boosConfigManager.java | 813 +++++++++--------- src/cz/boosik/boosCooldown/boosCoolDown.java | 196 +++-- .../boosCooldown/boosCoolDownListener.java | 639 ++++---------- .../boosCooldown/boosCoolDownManager.java | 460 +++++----- .../boosik/boosCooldown/boosPriceManager.java | 6 +- .../boosCooldown/boosWarmUpManager.java | 96 +-- .../boosik/boosCooldown/boosWarmUpTimer.java | 1 + src/org/mcstats/MetricsLite.java | 14 +- src/plugin.yml | 2 +- 35 files changed, 1387 insertions(+), 1225 deletions(-) create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosEntityDamageListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosPlayerGameModeChangeListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosPlayerInteractListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosPlayerMoveListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSneakListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSprintListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosSignChangeListener.class create mode 100644 bin/cz/boosik/boosCooldown/Listeners/boosSignInteractListener.class create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosEntityDamageListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosPlayerGameModeChangeListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosPlayerInteractListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosPlayerMoveListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSneakListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSprintListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosSignChangeListener.java create mode 100644 src/cz/boosik/boosCooldown/Listeners/boosSignInteractListener.java diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosEntityDamageListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosEntityDamageListener.class new file mode 100644 index 0000000000000000000000000000000000000000..7128311f4b4dba9bc6cb5cea4215886f4da26968 GIT binary patch literal 1606 zcmbVN+foxj5IqwD3t_|kE>ZBBK*%ECjo<|Wh*km=AXfP{Nyad+nWc6&TKXsW7rrR^ zVCf4Fev@U{yBjenE=5_X-QJn*=|0_kdh+x4*KYu(@LWTP;X&cOk+&>I?)f5PS!U6C ztBkC4T%m;R_}fd$mF~MmUgjn7SEC`!(6P(kaKq%PWUS?PMZwk3#4u>tB_m(i+mo&# z-U#I$yJKjYlS;ae7#iY*{9M-H{GMI{V-F(+q8vs?Cfc70;f4PVgyrqte@zbJ{!RRhBOQ^Brc3q$0ZCi zv`Qz#RY91hDEbX}KS;(>uVv{t$TVgc zMyYf`kmLF;RL3PJ9EadA^iWApWER0)+}CiA>QHf|8O-1gcXd3#EJL>=RI%z|%L?kt zV4Rc1$q$UPlLirq3J8afNOWeq&Rj~_VS$a2z&%!`ce|M$4Mi2>U2#`@b8hF#V{U`#yd3@K&c`pQ1p93 kc%$^EFpmX-8Y9aL7Ae*e*|#9n{0nz9ER)d+ZG`ab4@GmiM*si- literal 0 HcmV?d00001 diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.class new file mode 100644 index 0000000000000000000000000000000000000000..02cc674ad95e079d663e5f15fbca1191710b0e89 GIT binary patch literal 1763 zcmbVMT~pge6g_J`D{#rc7RT&57J6|&t9E-bngA@-EY4G_yk)PVhjtlpPi~w zq1-o1Q7Lanz3?4ZhLP|^5Ss0EkG~Ybir~?1Ct#tUVPua#=Z?qyy0cc@6Sc^~Aj6~z z>Q1$}zb_+4JQsd+oQ+{{N%}In$IzF_ZZq^3)s9G@4?{LA#2JQN>5Fo+Q5C@^uX=(Z z<*FL@ws|1+dwa7#+La;0UHAXeUt~xszpE~We8xRRoXE@QrPGC5)dekT?voo$iZ;Zy z3?(sJ_I(xcNGhL*&7MwW4nF4ojwb^8di)@eDxl;HSIz;iw-JOMEU#^pmfZv{W6HuL zL*~CywecaQ87|aCv}%fBn9gK-zSv#kqJK>8h{2+RW!@l@jgus&I3=h{ zKC|#?kI!3tZQRibh9c#v7a}O~kX-x)zO=Bwko#Bu%3GlZJFeg^==WYU8dg+8kgxqZ z!>uzUI!!RU9miJ;GiUveW+=jf`4w8&`!*hEsm3}|ZBe+bQXF4XBWk=xuGm=Zh+2tw z5WO#|uJe(N$M}X}G}MS?&pQS&q9EuM*eSw7^ZqowUW1d zt-IvF%&D_ctsW*+lFF*>m-vC1B^EZ$^n0gS5*5`9YT}{PvuIi?-8Bq4!?2*egR3CJ z(KSHxHAX89G`e4)H-}b6>p<>TBz`ero9=^VGl?WU+bsYtV%Wq-FiJ^M^qi!~7+vE6 zm+*nk$HpksPocfruP{-Xe}mfmpGY6#hxtE{F6ZB1E}xoxjjJ&nV&Vul4l$a#oqvry z!z+AzgwI=$r4z_K4OxBjpNA_;6@obDr3YI3rlVLH6-M@W+m{C_d>}ij9<)?-PnxzmvT%?UIQvvSlb+9W?@{Ba zYQ_#m1ZIP5D?^>U_Ybr2o{j{nwf~(*MPNEGr)4T|t5`dcO4ruJJMDwbB-cuk z*6ib+iFHTq>PQpxhA}}bV;vY`zHri~{qUhQEnkJilk0{$2z7iQu=ob!?Y;%AN46e4 zu5Z-xn8BQbS%GW+8MBLbF)uKtqpCDb<@>5-8}v=$^gS0BuqZIvR&koOz%5mQ+rLDD5T{yyM~%a6}7fSN>gD$ogSB z>;h{8+^`GaAE$;q=I~g~&kcN@7Jt)AycR9 z{Z7yeo9ez!){UiR>S(YzM~iPYX$+ak3E?%&rJAAS^5T7zZyu$f9A5qj`R7*c@;+h@ z$5G(3n;KvoXRQ7#-l3BTJ{PDt$7@ny3e(o#E2^?oeR}0boIgbNIpspV{1R8ozhmhT zrSflB+FE&u#g&Qof5xQ@e!$eq3zQBqPT{@4O^Ql_WQdW0b;boFI*gdZBx6o-%%`z{ z^Gs_77cq-6=CH=Ca0BzWO}S3(U1}2a%PE{bdIIC`Gh#0A-(>^$2zP;gs`#AoHfcYK SOzscdba0fLpwo8% literal 0 HcmV?d00001 diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosPlayerInteractListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosPlayerInteractListener.class new file mode 100644 index 0000000000000000000000000000000000000000..e9de6c3d8f73b347b453d80afa167491702d755f GIT binary patch literal 2330 zcmbtVOIO=g5dJP0q!>8_0^t!zAg`LI^XMye($qEz5Nw&+22#?N%Jz*B77~%<^w2E( z19DC`J!G3@SJ^<)MIW0inq_}LmtAz%?%I=_j;?Wn4hiSHIzHD2;0v@-PBP9;{XRjY;<<9E5`y)?+sdd08|??Z;>=*S{NC}o#<7|m!? zAVFqmPa783YU@Sr6!fCW89LK;NjDdD$MFAm!H~CVxC~d*|09Ap`EOgn=orpN)BD`t z5E+OCRaHN-xF1Acu4Z}0I$tzggIr8lmhI`DVO!+k$^F*E#u?ozo7^EEmCw+fD9fT7KBQ@T~+rpe2Kh-Kg02?ZxH#Biv> zy?Ue!1JRLyOBANJxtoW$gi{Q?dyn5MmT`sx@~f+~TUPF5*|xl*X_u;##%?vWVHoEW zyoD%3WL0!;Ei5x}Si%%7NhR^93m&kin>!IlK$YK~@peR8YjpC7(}7Vt%hpBZgf}dfEwJ-r$1?0#5iS` z2y~?wu?Ng3pI%YmRJwtU^{Q9J;?I`4jn`|{ohGeF-qTCfjJ_d8u>|L}L!fSynl5kG zoD#oo_@n%!-P*tEcQ0@$p; z9tN;Ef!z;a8G+pkU|E4x0@%j_%LlN$z^(Lz34x;!GBX~xG{a1|PH?s6QP3*rgiGL7d63(-BTwq-^ zjJql8y|f<3WkLC9ox@$qiA}7bN<>F!hlzFKcn~jO(fQ5Tpa|O0EI((h67EPC{u^zi J>Jr=p?_Y}UZC3yQ literal 0 HcmV?d00001 diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosPlayerMoveListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosPlayerMoveListener.class new file mode 100644 index 0000000000000000000000000000000000000000..afe20b26ed36913851ab5899a6377ee4e97e15c5 GIT binary patch literal 2390 zcmbVOT~`xV6x}xj2EtHnKr#4*RUrvTtkqhKwIXV5n*arb)_&L_xh5l%8JwA5vHc%i z`p{qCi*_xledy{_ANm9OYr5L*dndu9St@#ToU-@O%@yn*l&ATF@~zO`xP9Lufb=GX4a zQfQz@Am#a$+**Bo-41hdQ@Y`fF@c`Twrhu11iI3h6@mDySC$EMq2GjoUV(iD+m&gDK$hAOu3AWvOHCzH2QH0V+KwO9BKvFYQ)4i(gFijD_D?z%?<*( zOyEGe@JdNbp>MmDe1<5qm^3gUklrQC3e2kI*KThVE!V0@-^3YA2_$Gg8fQ3;wnw%V zjy^=-tcf?(wq9;i8ZRgC7A_b#FEFvk$tqW_Ggq1^Vd8CEB)O6!EuX4g^?Zj8-}C&H z1g4QUaA|Lnvz~j;uI!M!jCUzB1}-AG6WwcD3Vu-r0i7W*#Bg@_HG%gqW8f-*){!q2yRJF^73ZR{1IlhjL1bJoRY4A0K1Mz#>c9Kj%y=D{mXL zFlW_dAEmKkVilh-u_9CtBf||1Yp0exw^a9iRr?saM)#H#R0%Ghz#V*U;4^_S9i4yO zVd4vX$;>4L?rF`HsOsih!`v7$@KsxVj~3aaD7D0(Y@)!a$^HOm2Kfw09Kb;^eQGm`t8{iIXur!RX`* zWF8~MCifUgHs|=f^8#1cTvs5vG>CKhog~^p;yu9Q4)W+>9O0diMG8|GA^yYsfiQv# z9G%9f20R)eXaFV_ypLOiIlz+p0X`(ck9bBOV!eOhtU;Y6R8i#u<&fVI*KWFzeTjm= zODqT!p5u0Q8=wAyyG0IL0&~wHqmk;R_{8Kk?mt0y{AntFW*hDh{O`V3pIuLPxQuDz zC&}m(8Jxy3jFH1Qv8Qn!8O-o&miUyz&qn|>R^|R_gs2nVFhOpz7vt`6JjB=JnI-=% e_TrjT3bDV`c9Jr1SN~THikGesctq1NeDgPOf_r-a literal 0 HcmV?d00001 diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSneakListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSneakListener.class new file mode 100644 index 0000000000000000000000000000000000000000..7c07f6cad3a3da9e683cd7ae57ac731844e91078 GIT binary patch literal 1534 zcmbtU%Tg0T6g?dt17X4&c?c3gG=Z2w@Et@jLb*tQ0*qDeI!POvOnOo?6D<4_T>ArT z6kWJ<;Wt^9cV+^TicnfErf*N*+vlG9>hC|ldwX3=`9 zjEr<#p@i-D$6F>p6!xxFDw$$O30^)`YiMQY-RB3~Fu5ujoB4fFa5c0uj9PZd$k)nc z=^EldDEADLp?ygz=`J(0#Ns)I*0fa=VYHx2hlUP@o{UstqgKh2Q=T^kLx099a5Kkk z>HXIaTireBFsx+$FNhSwfTfyZWLS)4nu4hMsW6(X*Sru@UNocIHRZ~R$Vo>M*Hxt~ zm%GwZM0K(m(7*VCtD-4vV$xByrDaR^kRf`3@mAe}tlKv>x3jC6Fh($@VU!{HZ-jMR z#W+KkbkbZEglUSRUzFD#;x!$Uh%$7Rgd4=mFdmCHu%bxa!+JJS9hf2uubm3@K5~+Z z>gFLQ9j|Y?a053r%rK0cCwd-5$1TJdB75A~5_Uy84yBG^D3u@Pl(I%S2=XOLth+h#u@ zeC(@rTHF1@2qLuC0|RuU$Jh6wk3jlqA0f>EeS-o+xZ>k|AXN*gjJb~(K0@m;$%$;@ z8={H+>z^?l!g~xQP7psrHwohe_ei8X&n@H$NTQ3@UZU7XBnQaHAnk@QP7bCqO!G2A w12IhH8YSBapJ6m`S!d`4^%N__D}pJk;u%p&6J{qu9X~Lm5d_0?ItXFy7h-m(EdT%j literal 0 HcmV?d00001 diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSprintListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSprintListener.class new file mode 100644 index 0000000000000000000000000000000000000000..5cfba82244b8c50a313126c2291b699094660c21 GIT binary patch literal 1543 zcmbtUOH&g;5dJ1S7Q%)%@{l*831C(bpFt5Ll!pW;K&>uEw z=)t20f0Jd|yBm;H1hqWu^z3v`_t#%{&$l0+zW|uSih&5jV*ag_a~x0Z1tRS@cENe0 ztc>)uP{Q?s<8_-K3U|vX7HzRva;4IzdIR+g?YsPdTQ*lkYc01c^4dTnL%-t|tz3C; zPijjX2&K=QGBhqoCG}&5x_Dxnp+4;tL=<&sF=3#Ip)DhoSS|18C@Rm{f}u0xh|CvRKq1#clSu)JWGc{?H0yeB#^JPEFl%G)lMp7}{K3)>cjpfIm|m%}DTFv`$e6gte9VKAPkf<>w7!wMg%CX6!-`8}1dG?SN9 zR6E~u(hHiW1=n!hz$8Q8d8p^zn7DyBLu`k8>%!fao=4;{^u#m2dTmovCl*r)!a0Q* z1Jexg3mUV;s?|1crcv!MmUK-J|c$_de? z=J~xWFIC1py6KeNyjYR`gD~OOG|c;V4^z@76l0)HrmumXya-8pTxe~kKZ_(I*)a7H z(c?gE(%Kjt#t@^u85*D!ZGpZW9pt2w_A%0Q(bp}|gDZi*_oS*Ll{NhVy+^1&COMRy z`HIn*&aqFJh~OQ1W=@beLMsXD1b0ZJ{K$0_2}q)a)^>u}K_I&*MmOzxFh~I=&`TrJ yM>Ek&1?wl`+>>tjUoe5*dF86`zCd>-TNX$ZyqZj*8+|4WBn1YF%9YE_or?4~?201=(nYUo zJ7wEf`n$E52)9)rFjxFY^mzf(bC0tU$YqKrU{@Tk+OUqT9_wWC8u!Rr(+$;*EUQ2f z)q?AKp&csEC8#SW14WKcY`5k}pGPNmedYNo+!q)>#dx)4LF?Y-m9^4BF@=j5H83JD z`C&j!T*8<@p9%`LTa}I@YZ2|6I?|^mu3%i?OkIYnj=e8^fw4@s0}V3__pNw0ubr-$ zxQ-hF2Ay=B1coz9+2XMX)E;(a|;Wgk_3+rSqB7uzXo&&$M@ z_)4IE+YVNxzoUYHMSKrIE2}JtyNi1U<^(dQ=q^s#eWB_l+qLV`H<8D@z$h7G6{wPe zFYQojO_gL2&_rN}yr1AOh5Pu%zyo4yhRTUA=e8Z1SinPp!9cpTR)h^Nu91M%DdP4- z^CyqUmUU4dnRtvvijoi?YQYn2rx4<65bfpr@C4r(SQ0qjMroUciSM=Q&Q_RbW7!Uy zzU?^s`k<1DWvuYx1rZlVicDlSv*jdyU~L2G?@2$2^;2pa@5i+j=!tp@YtbRvsNckR z-oLm^ti!Z}9>#Mh>07$toG3uhq&+>i384;OS$etTwTs3INnQ4rzZ~a*=uZ#B+}E-+r(7b zdW&0K_yeO;Z*b=gzNTB@Exr|as=bN_v|T;2UHczfoklld11~Vbae(=rW5#I$9^`Kb zqr`iih^KJ@GnB_&+Rbrwp7R5?t|g37FPE{xM)ecMu}KDNxCTkDZO#qcKob*qg-QH| zY(&%TIPVrsWB?oZk>vEl;~8c0G6;pIct&ias4(s`Bp4aQ)}4HZMFX=2GW_T0wZ-)= G{QNJ-#NmSg literal 0 HcmV?d00001 diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosSignInteractListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosSignInteractListener.class new file mode 100644 index 0000000000000000000000000000000000000000..d71b5634b48b2ed037702a28b55b020ffe363898 GIT binary patch literal 3467 zcmbVPS#%rK8UC&;Yh-zn6q5yotYks9V=G~4NJK+zIdPmwwuy`bro^Xho98UYnIXv~TZTj6AiHu^qr9H=*yZ!h7 zzkj{I|MailzYpLB)D(mS4&?7oPT96&l)NEr+h)PO&q`(t$JH&p;&|IRqi79Tu3pjd zZsSBjSl|n%wK*+mYF05hGId(dy9y!#al2AXPE|`K!%gaQy5)YxP9Rb?t3|^S*p*p9 zw1gvZ3=l_(7j88y!#yOBNPMmvo#O)Gv|Z3+Xu&EKZCEYPlIR?71M#X*5EWRHF)V$! zIyP% z!IUe8T`}Bwfo&@gkJc%q?T1HBWcxBPY{51KTLrrR2ec}-<2r$M!%0i+O;ay;j+l__ zcBw;!$(0Oe7RP=k)C;Kv)NqI%W98hr>N9Ykk$uXjcWot8*0BnyS zrQjmO4-GQ`_4h+`^_BjYP4^NqBLq0Y?Zl96*OhE?>eJFH>^qrU6?$QRhuES?F# zxUJ_!DvA^I#odi!A&ZuCPYh!iS8zvDVe+M@IEgzM(fYkr&19;qO9X)UwJX&*5yga8 zqGSd}@fCqBQb4|56`fv(syV%WhW1t+y&b3URRxm**96Sagj9uwDS=fC^ijPsYdDS< z*G=;4hLG}^BcfaCF|DE~FGh8%;G8tv8M$ewI4#pgF`UD*Wp`eI$&k6yqWx9FEa(+^ z!BSzPOr1>KD!MaX0uIT8iV6oV4enH@9M2Do(Zta5{u#rZiu-Veg6A}|s*g+y>|V}* z0h@m2+!F4WRrqUH*u0_hcog5D&f8)r;XxG-;bEfH%4Mo8&=VBWxUob?U0()L3Ex!l zC?2EPT-&D?Sj#xN(nQS6Q+PtflM+`rKcl%(JWaulUYV1w|Mm*5_s^y4WB4w!f3Lqh=(V;5Q{=Y8lvkPg}hXg`pO#mwwmc=lQZPF%xOlDay8CNn|mY zSzk5;*6IY)91}Hvt^9S!K8Sr_i1RkY_-*Iv2-hKwv95Qac6GmlH5WXZtN2~b zyTH{5V=Zs2BL`r;PtD!6T=5?FqvRFh$p(I};od5)qSn>52Fgg%`31qw#RZ?KR{U@RxXN$6elRJRa@1dlC19uz+LnNH!kn$k(8sMSEPS zVdg9n@1b;8Jkk=6)G!+^)Nt=bRNuvX$Jc9kK+-%=!y{SAf6pQw58*t{koi*{^Jy~w zR-O68|IfVZZLF!`JN01^&k9i1LJLlwC(P(Y{PZGTk$!4{^waZftbmR5@3r*BX4-xW zyQ;0&k8K!W3}kT~#<2sF*ohg^TG)*QQvEs&%nebu;<)-~;sF4;=r9B>s%O z_!#@}SGGZ);6{8Z-GiIOCU!U5Iqt$OVh?+n0~~L|LD7$t7+}9L$nhBZym*;rgwXAc zc;W0dyw2EohREK)FBvhP@@evC10sT7;n&nEi+|!bJPi}~-|<_{T8aJ>{Eo8-b@&@D zaHdd`k1)ZAiQ+9<;03frdoS@tXj32*Y*8?#V9@(=;{Tljc3uKsC!d5omJ(c|J^m|; WO%0M2Snz+Xx(Mozw+SzVcm54V(xy28 literal 0 HcmV?d00001 diff --git a/bin/cz/boosik/boosCooldown/boosConfigManager.class b/bin/cz/boosik/boosCooldown/boosConfigManager.class index 63fc76f9457e721cc7415039a34c97eb309b4199..38160db7a8559fc21f079c28ab4d7c76e9abb543 100644 GIT binary patch literal 17820 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 DyzikR literal 17610 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 diff --git a/bin/cz/boosik/boosCooldown/boosCoolDown.class b/bin/cz/boosik/boosCooldown/boosCoolDown.class index 615e29176969c2f144a1cfcbb87e9d7a9c4c7975..ba6546c4d02b4cac230271dc20981c9e1963f5a9 100644 GIT binary patch literal 11462 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 Lk$-b6ARql7n(mN; literal 9444 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 agUs{?#rvR6D?~zCw~959&HN3>mVW_D6%cp; diff --git a/bin/cz/boosik/boosCooldown/boosCoolDownListener.class b/bin/cz/boosik/boosCooldown/boosCoolDownListener.class index e07460fb8d9dbba5e9a94d385edda943877df7b3..16305ed45f217ba74da7f5f4e6bd4566df10c80a 100644 GIT binary patch literal 11820 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 literal 19804 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 diff --git a/bin/cz/boosik/boosCooldown/boosCoolDownManager.class b/bin/cz/boosik/boosCooldown/boosCoolDownManager.class index 29118b0eb48146a490b5f021bce6dba84f183e0a..82b77a5a15c240567250ab45d9f9d8ec7410b6fc 100644 GIT binary patch literal 12795 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 diff --git a/bin/cz/boosik/boosCooldown/boosWarmUpManager.class b/bin/cz/boosik/boosCooldown/boosWarmUpManager.class index 9e210068798e118c058d1c89047bc2bf6ce4843d..5fac2252b602b916e0adbe01a48d06fa22db2d70 100644 GIT binary patch literal 4514 zcmb_fYj+!072VgCGL}4!Ex#J4i3x=`eyfC#1k0pJousiNKZ+e22l^Px6KP^ez&tc0N9PU6_g3I#vTh#nP$eAalZOYGdXRZO*@kb%}Sk^9n{iVT(=bX z1ZqxeXS8rqOUJ{*Q>XQqEwFhusmoudC-^7_}`U9gjqB>%*9l(yhn=d1NM*(5JIW-4X~D z9qDQaRP@G@M%u6s2$Z+BjSKkt%xPUgwLr_p{0d?-LMm#Z3T*0iYy}`tufmT_0@YC? ztq)~WQ@S;#O(p4hZPbiu$#Kmx@u*1xRVb6s}oSa44#wFP8Dw^>=f}PRlMs=n%)Y?`Q8Hys6ct1X%;4Ye9 z2?7^Xd=NVsG{e>{%{Cd+#*)4Lo}31Dp-n+6y=xK^s{p9jgO3O(aorx$QcOkZ*&e-u=)^u1 z`|(k#p3#z7efSjF;PJc|r5Cm$ERi6(5s_@@6=*2l;u&unuK>9w4oby?Dh}aZWb>(fukuj!{M>p=E}g62IFM1h(Fqd(5|F4P#!! zwE`o^IeZ7nv#UgK3-kT^G17<8hX!S>5W>GPmH6xulE}@ms z$!*6G8U6BE*-w=efw6JR{WB_(NO6Tkzddt3QwmJ#ZmhKik;Wq`EJ=nx z+>4Y%la)l0XlzaT zq2janoPgglv$6nvtw-DX{k$*br&kuo=T$s}hlBV6&MP>_=DbdX3V6Nltm2FK5>G6S z%kc6419|Aq1w5nR>Gkh(Ucsk~_%fJhCDm$32{-tIE?+9}WmbNRcb~UNT7Ff<*YI_= z4@+lZ$Mi$Vq`>|)TGQ%Kuh9`J@C|uDMkkr4Gd$p1xTxUUC7Fnt>9}lUmn6#v)->`R zGOZ=co0=9b;JYfmC*5hFJ0~a{G}2jH&v-sbjms*&FE#2sjbmokDqeqC#Se=ujJo)i zEzIK;1wUp_aUM4E$<&w7cme(duhM9S?b=fvGu_)&ApBo7g|=}8KV@%OxgVX@8^jfa zmNmAC^V%4ls^z&xsz3It3Qc*U*zUAsUG-4Q18TPVZ!Gl3I;B}MZmR#Y{85|`U zWBO4;J_j2mx4e>cpWfXvfqa4S7zmX%9Se4!qk+X$|Y=` zTtLlr)V;=O85;OM=qy(8yBdv-6x_x)>+)uLNx8p$0e7rylc&<6vqh>>0b9_-?*O*q zPH*!9e2)2nYpBa%+ah)dMCY-mV-YO^Z=iDt-IMK$xLY8Py$k56{a6n7*5n-YP~0p9F*ErHe%dOh}1+Cw}CIqxSD=}e=0I>vB zgfkPKWRjATlmt-rFH|eobvK8f#HTzbUgCi=+((L>7@S9UXTgbR$GUF#eOIXJ!2e76 z6&fmc@HaAIz&0Y?&KG4fv2Q~kbGw53h=;q0(g*OMhcbk+cj<7s!dES^f=}jvyofxs zPk3m%J95yXguEs;F1lf!z6jzgf>q1?Knua`qUBaL{dNb^4krfP9whLMns6Y=k-<@! z6T)(cPQu}%(S!4<2WO--cs&~pUWoe$_VgP_=P)}_2;`fR2gPyR%Q)_19QWfWnJ|n< zQ5;8>an0Bh_X=M z9%iVL_0-tOWDGX=YI>9B^O!rg&)?{;$K$D|oQcxW*_Fo=m+)6-@MIoO^#qy%wa;!RN)9jJE=I18q&tidZ~JCuaTo4G7k{nnW;OR>0LS?^NoGBO zL6SWR9Yc78nSLB2coO&HJinjjuaM_3iWiyj%dGjA`TYtj{wjAalAt$O*1zZXO&0gx zY3bj1kU4%x`0=o)h9(;L>X!9)N_J7vh~KbB@xzhqAXMc@(w_a4BT0KU29AD<-;w7b z+If@q{lxzd{DC9>=)~LjBlQA2a}WN6KO;!38c!y>P7VC;AmQ^V=-j#WpBS&_IX5XU H!(0CWB$1G7 literal 4514 zcmb_gX@;cIjV5uM#%_fOZR$4Z;`BrRKz~3#^>d#-ZPNG7j6lK!(&bIz6Deecb;0NjDU$f%Ie9(yb_Z5Ua7#{TphMk;Qc&DfI()l8q5jj98Vi6$i#A{sb#EC|MKvd znoUO4*{}rPsGi8ER?gHU#5Z`X&ylk+j9R9iNrWRev|&t7Yi9U>xH20{YVll3GbIE{ zu5=_MRQ1JDdPcVnNT_V@7?7k9OYJKsQJrX>((H$Mu^1_$YSC*hx~Y+!0l+q=GiwD#2?SxlEjHX+PRA;3bL0U!R}O z?NZQ<-E^*=bu1q-jhL3D?+&$pINLf-`VqqIGHzoW*5O&vm2MyuCfJ>{!_?Bo8O^~o zJoJBnLr?F;J{fndpSsMpQ+i?<%zhDp`h@24B1+dVr>oG*glKb9w@t*bPr=7P?)y!R zc^%UZrBV|1yD43kb1M;YS+GVxt8h?UkkwcR;#ppBFAmG-FN<%)$RrdT!BOU(WjMMd zG_?<|sqYwbsx8O-q_VvjR4^ngYocW*xER$lIZMmB<_U?Yg5yGBvnz4T$eE@4BMLrI zs$tZDx~yRoCuEFCsIkkLD3tw4)lx8y2`bHMnYb%DW;h8WA@n~nu47!rB#FCHTkJ~Y z$NdP1vhhg;KKNxk$ojJm{Tzn5N2lR9rKw zp&=pTl!UDxRCW|3MO0))?YNrO1T#-7m;uQspHWjeZJ4LqN@?k|qwpG}@naep;SWR5 z>iVkFFq1?ChyhEK7P%;wlA z%d*IYTcT(U1KcISh0iGXEFNcy6x)}CW*3>wOgr*pYIY_(D2nl3JfYz8!iBBNNq;D1 zYHECLRI~@JNL!}obg^_v*tMZ%LGL&{U&6KzF0R6C(bpSFY;-FHgP3+I5EJXH{m5|h zj$s&BUURdVYlCbbj+~vpRGrQySfq;1i1MCwnO>3}Y>_qeL2QOk5VzOX;&}z%!nb(~ z3zennne31@w~8&r_?%?kmsWMR(};MVS8xF@&^^xnjT!3dq&=2Odun28CZ?qvur@gE-E6#J^p3ND4K@gw|1#*e9fCCj;?U>-jup>#_#RmytT?-tVQ`Xo|y-j-nIChg5QfES2D5un8G^>{vfbya)QSV#)6g-+QtG& z-2PFvrI>b97tg_<=rYbxw}1Btzheg-Q^^NU1^nVA$(d}=s!%0b1jk}j4TU>3oP{VU z{;HQyJGp@RE7<%7rxj@8zkYkOhTl2_?N#s?->l1rnRZ(HQGmnC_JZf zdwPA%zJ|MbD%|T6$1b8hP+Q;RxrpuDxF_f>;E=t^*~beQu*dT_Y^#0#1y@Qgmx{Pj ztwKeU=Un;ju)W*W>?`2DCEQO(oxFkvmM}Hhc^MB7*#aKw^54N9auys-a;4N;rALJ$^W4C|DcDV3rSu+YU^;j)Py_jh@KKGl7iIxMdA{p zbJR~!j=qF13(9cx6i4JCM^E!+4}Yh4@hqOB6|MLuaXiQ9^VcQ5N;x0z+=H*->+n;m z-d+0!mDj`j9+Do9jFw&7{)O>I%JK>CFbGdjui$!57a0_Bz2CXo``i@X&*Pit;q_dq zyu=fZXB&7P*hftJY4_dK9JVdo?r62`q5yhqyJ#Ut!mbJkY?Y9@3FkX7TsZrVk&%N`lE?QK@k0rbdF&ynUXgGW zErMa!*=XDM`gzoJ7I1~4dH&d0L_xxZ_pb>Q9-B$6b}blU`bL=0QQXB>Z!d<4DS`pq zXCn(bx4X70IDlW{H^e6XH$b3vR({Ko@PQ8%|3;mRS8wBx#n?6CH8(ILB}PQ&(c4`# zBGR?483CSS*sfm1R32|n@R)7N+bc;CWYB;Ur2jaBH-V!Z594Hs2_vov&7{j8>1GFT z02S}k_DY#4LfD`WeE1Xo>;iw;1%9L)c+WA3hqjYAukla?-u*9yN0}Y~ diff --git a/bin/cz/boosik/boosCooldown/boosWarmUpTimer$boosWarmUpRunnable.class b/bin/cz/boosik/boosCooldown/boosWarmUpTimer$boosWarmUpRunnable.class index 85a2d0e0b02568f54ec04b974242d0a2ae60c2e4..0fe76d6a4e7945024bc48927a0e2ceeaeeac15be 100644 GIT binary patch delta 108 zcmaDU@KRudARD8?W+AqNjFCzVatz80+6*cT&J3yyaSUn<89+LZL7kz3L4#otgC@ga z1}%mQKou_-bQqZ#bQyVpv@nAnqb!3yqdtQHqYZ;0V+ey0V?Kj1VAJ&I~FHaSW;q89+LZL5-n;L7ia{g9gK4 z22F+w3|b5?7_=Fg8FUzVfwVA#E~6}i9-}^kKBEnT0b>Y*A!9y+5o0Bgu4gc2>|`*V Itixdo040JE<^TWy diff --git a/bin/cz/boosik/boosCooldown/boosWarmUpTimer.class b/bin/cz/boosik/boosCooldown/boosWarmUpTimer.class index 2b3441c5d29b4bb44bcbee3637deef877ed8ff90..646988411e24fa5c3bbbd43f3541099da1dc0e67 100644 GIT binary patch delta 75 zcmdnXyO(!^Agd@p0}F#711EzJ10RDhg9s2xF^Eo9W6fg~2g*oHp2-@}M diff --git a/bin/plugin.yml b/bin/plugin.yml index 15b4b85..4209b63 100644 --- a/bin/plugin.yml +++ b/bin/plugin.yml @@ -1,6 +1,6 @@ name: boosCooldowns main: cz.boosik.boosCooldown.boosCoolDown -version: 3.2.0 +version: 3.3.0 authors: [LordBoos (ingame name boosik)] softdepend: [Vault] description: > diff --git a/src/cz/boosik/boosCooldown/Listeners/boosEntityDamageListener.java b/src/cz/boosik/boosCooldown/Listeners/boosEntityDamageListener.java new file mode 100644 index 0000000..52d296e --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosEntityDamageListener.java @@ -0,0 +1,34 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosWarmUpManager; + +public class boosEntityDamageListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + private void onEntityDamage(EntityDamageEvent event) { + if (event.isCancelled()) + return; + + Entity entity = event.getEntity(); + if (entity != null && entity instanceof Player) { + Player player = (Player) entity; + if (player != null + && !player.hasPermission("booscooldowns.nocancel.damage")) { + if (boosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, boosConfigManager + .getWarmUpCancelledByDamageMessage()); + boosWarmUpManager.cancelWarmUps(player); + } + + } + } + } +} diff --git a/src/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.java b/src/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.java new file mode 100644 index 0000000..8d61e72 --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.java @@ -0,0 +1,41 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; + +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosCoolDownManager; + +public class boosPlayerDeathListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + private void onPlayerDeath(PlayerDeathEvent event) { + Entity entity = event.getEntity(); + if (entity != null && entity instanceof Player) { + Player player = (Player) entity; + if (player != null + && player + .hasPermission("booscooldowns.clear.cooldowns.death")) { + if (boosConfigManager.getCleanCooldownsOnDeath()) { + boosCoolDownManager.clearSomething("cooldown", player + .getName().toLowerCase()); + } + } + if (player != null + && player.hasPermission("booscooldowns.clear.uses.death")) { + if (boosConfigManager.getCleanUsesOnDeath()) { + boosCoolDownManager.clearSomething("uses", player.getName() + .toLowerCase()); + } + } + if (player != null) { + if (boosConfigManager.getStartCooldownsOnDeath()) { + boosCoolDownManager.startAllCooldowns(player); + } + } + } + } +} diff --git a/src/cz/boosik/boosCooldown/Listeners/boosPlayerGameModeChangeListener.java b/src/cz/boosik/boosCooldown/Listeners/boosPlayerGameModeChangeListener.java new file mode 100644 index 0000000..a6b4105 --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosPlayerGameModeChangeListener.java @@ -0,0 +1,35 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerGameModeChangeEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosWarmUpManager; + +public class boosPlayerGameModeChangeListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + private void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { + if (event.isCancelled()) + return; + + Entity entity = event.getPlayer(); + if (entity != null && entity instanceof Player) { + Player player = (Player) entity; + if (player != null + && !player + .hasPermission("booscooldowns.nocancel.gamemodechange")) { + if (boosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, boosConfigManager + .getCancelWarmupByGameModeChangeMessage()); + boosWarmUpManager.cancelWarmUps(player); + } + + } + } + } +} diff --git a/src/cz/boosik/boosCooldown/Listeners/boosPlayerInteractListener.java b/src/cz/boosik/boosCooldown/Listeners/boosPlayerInteractListener.java new file mode 100644 index 0000000..86fca4d --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosPlayerInteractListener.java @@ -0,0 +1,58 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosWarmUpManager; + +public class boosPlayerInteractListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + private void onPlayerInteract(PlayerInteractEvent event) { + if (event.isCancelled()) + return; + + Entity entity = event.getPlayer(); + if (entity != null && entity instanceof Player) { + Player player = (Player) entity; + if (player != null + && !player + .hasPermission("booscooldowns.dontblock.interact")) { + if (boosWarmUpManager.hasWarmUps(player)) { + if (event.getClickedBlock().getType().name() + .equals("CHEST") + || event.getClickedBlock().getType().name() + .equals("FURNACE") + || event.getClickedBlock().getType().name() + .equals("BURNING_FURNACE") + || event.getClickedBlock().getType().name() + .equals("WORKBENCH") + || event.getClickedBlock().getType().name() + .equals("DISPENSER") + || event.getClickedBlock().getType().name() + .equals("JUKEBOX") + || event.getClickedBlock().getType().name() + .equals("LOCKED_CHEST") + || event.getClickedBlock().getType().name() + .equals("ENCHANTMENT_TABLE") + || event.getClickedBlock().getType().name() + .equals("BREWING_STAND") + || event.getClickedBlock().getType().name() + .equals("CAULDRON") + || event.getClickedBlock().getType().name() + .equals("STORAGE_MINECART")) { + event.setCancelled(true); + boosChat.sendMessageToPlayer(player, + boosConfigManager.getInteractBlockedMessage()); + } + } + + } + } + } +} diff --git a/src/cz/boosik/boosCooldown/Listeners/boosPlayerMoveListener.java b/src/cz/boosik/boosCooldown/Listeners/boosPlayerMoveListener.java new file mode 100644 index 0000000..a10ab31 --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosPlayerMoveListener.java @@ -0,0 +1,47 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerMoveEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosCoolDownListener; +import cz.boosik.boosCooldown.boosWarmUpManager; + +public class boosPlayerMoveListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + private void onPlayerMove(PlayerMoveEvent event) { + if (event.isCancelled()) + return; + + Player player = event.getPlayer(); + if (player != null + && !player.hasPermission("booscooldowns.nocancel.move")) { + if (boosWarmUpManager.hasWarmUps(player) && hasMoved(player)) { + boosCoolDownListener.clearLocWorld(player); + boosChat.sendMessageToPlayer(player, + boosConfigManager.getWarmUpCancelledByMoveMessage()); + boosWarmUpManager.cancelWarmUps(player); + } + + } + } + + private static boolean hasMoved(Player player) { + String curworld = player.getWorld().getName(); + String cmdworld = boosCoolDownListener.playerworld.get(player); + Location curloc = player.getLocation(); + Location cmdloc = boosCoolDownListener.playerloc.get(player); + if (!curworld.equals(cmdworld)) { + return true; + } else if (cmdloc.distanceSquared(curloc) > 2) { + return true; + } + + return false; + } +} \ No newline at end of file diff --git a/src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSneakListener.java b/src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSneakListener.java new file mode 100644 index 0000000..6997849 --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSneakListener.java @@ -0,0 +1,30 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerToggleSneakEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosWarmUpManager; + +public class boosPlayerToggleSneakListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + private void onPlayerToggleSneak(PlayerToggleSneakEvent event) { + if (event.isCancelled()) + return; + + Player player = event.getPlayer(); + if (player != null + && !player.hasPermission("booscooldowns.nocancel.sneak")) { + if (boosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, + boosConfigManager.getCancelWarmupOnSneakMessage()); + boosWarmUpManager.cancelWarmUps(player); + } + + } + } +} \ No newline at end of file diff --git a/src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSprintListener.java b/src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSprintListener.java new file mode 100644 index 0000000..469d57d --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosPlayerToggleSprintListener.java @@ -0,0 +1,30 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerToggleSprintEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosWarmUpManager; + +public class boosPlayerToggleSprintListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + private void onPlayerToggleSprint(PlayerToggleSprintEvent event) { + if (event.isCancelled()) + return; + + Player player = event.getPlayer(); + if (player != null + && !player.hasPermission("booscooldowns.nocancel.sprint")) { + if (boosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, + boosConfigManager.getCancelWarmupOnSprintMessage()); + boosWarmUpManager.cancelWarmUps(player); + } + + } + } +} \ No newline at end of file diff --git a/src/cz/boosik/boosCooldown/Listeners/boosSignChangeListener.java b/src/cz/boosik/boosCooldown/Listeners/boosSignChangeListener.java new file mode 100644 index 0000000..77ad890 --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosSignChangeListener.java @@ -0,0 +1,42 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.SignChangeEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; + +public class boosSignChangeListener implements Listener { + @EventHandler(priority = EventPriority.NORMAL) + public void onSignChange(SignChangeEvent event) { + if (event.isCancelled()) + return; + + Player player = event.getPlayer(); + String line1 = event.getLine(0); + String line2 = event.getLine(1); + if (line1.equals("[boosCooldowns]")) { + if (line2.equals("player") + && !player + .hasPermission("booscooldowns.signs.player.place")) { + boosChat.sendMessageToPlayer(player, + boosConfigManager.getCannotCreateSignMessage()); + event.getBlock().breakNaturally(); + event.setCancelled(true); + return; + } + if (line2.equals("server") + && !player + .hasPermission("booscooldowns.signs.server.place")) { + boosChat.sendMessageToPlayer(player, + boosConfigManager.getCannotCreateSignMessage()); + event.getBlock().breakNaturally(); + event.setCancelled(true); + return; + } + } + } +} diff --git a/src/cz/boosik/boosCooldown/Listeners/boosSignInteractListener.java b/src/cz/boosik/boosCooldown/Listeners/boosSignInteractListener.java new file mode 100644 index 0000000..1df4d1a --- /dev/null +++ b/src/cz/boosik/boosCooldown/Listeners/boosSignInteractListener.java @@ -0,0 +1,66 @@ +package cz.boosik.boosCooldown.Listeners; + +import org.bukkit.Material; +import org.bukkit.block.Sign; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +import util.boosChat; +import cz.boosik.boosCooldown.boosConfigManager; +import cz.boosik.boosCooldown.boosCoolDown; + +public class boosSignInteractListener implements Listener { + private final boosCoolDown plugin; + + public boosSignInteractListener(boosCoolDown instance) { + plugin = instance; + } + + @EventHandler(priority = EventPriority.NORMAL) + private void onSignInteract(PlayerInteractEvent event) { + String msg; + if (event.isCancelled()) + return; + + if (event.hasBlock() && event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (event.getClickedBlock().getType() == Material.SIGN_POST + || event.getClickedBlock().getType() == Material.WALL_SIGN) { + Sign s = (Sign) event.getClickedBlock().getState(); + String line1 = s.getLine(0); + String line2 = s.getLine(1); + String line3 = s.getLine(2); + String line4 = s.getLine(3); + Player player = event.getPlayer(); + if (line1.equals("[boosCooldowns]")) { + if (line2.equals("player") + && player + .hasPermission("booscooldowns.signs.player.use")) { + msg = line3; + if (line3.endsWith("+") || !line4.isEmpty()) { + msg = line3.substring(0, line3.length() - 1) + " " + + line4; + } + event.getPlayer().chat(msg); + } else if (line2.equals("server") + && player + .hasPermission("booscooldowns.signs.server.use")) { + msg = line3; + if (line3.endsWith("+") || !line4.isEmpty()) { + msg = line3.substring(0, line3.length() - 1) + " " + + line4; + } + plugin.getServer().dispatchCommand( + plugin.getServer().getConsoleSender(), msg); + } else { + boosChat.sendMessageToPlayer(player, + boosConfigManager.getCannotUseSignMessage()); + } + } + } + } + } +} diff --git a/src/cz/boosik/boosCooldown/boosConfigManager.java b/src/cz/boosik/boosCooldown/boosConfigManager.java index b3b2477..cb87a67 100644 --- a/src/cz/boosik/boosCooldown/boosConfigManager.java +++ b/src/cz/boosik/boosCooldown/boosConfigManager.java @@ -19,6 +19,413 @@ public class boosConfigManager { private static File confFile; static List players = new LinkedList(); + public static String getAlias(String message) { + return conf.getString("commands.aliases." + message); + } + + public static ConfigurationSection getAliases() { + ConfigurationSection aliases = conf + .getConfigurationSection("commands.aliases"); + return aliases; + } + + public static boolean getBlockInteractDuringWarmup() { + return conf.getBoolean("options.options.block_interact_during_warmup", + false); + } + + public static String getCancelWarmupByGameModeChangeMessage() { + return conf.getString( + "options.messages.warmup_cancelled_by_gamemode_change", + "&6Warm-ups have been cancelled due to changing gamemode.&f"); + } + + public static boolean getCancelWarmUpOnDamage() { + return conf + .getBoolean("options.options.cancel_warmup_on_damage", false); + } + + public static boolean getCancelWarmUpOnGameModeChange() { + return conf.getBoolean( + "options.options.cancel_warmup_on_gamemode_change", false); + } + + public static boolean getCancelWarmupOnMove() { + return conf.getBoolean("options.options.cancel_warmup_on_move", false); + } + + public static boolean getCancelWarmupOnSneak() { + return conf.getBoolean("options.options.cancel_warmup_on_sneak", false); + } + + public static String getCancelWarmupOnSneakMessage() { + return conf.getString("options.messages.warmup_cancelled_by_sneak", + "&6Warm-ups have been cancelled due to sneaking.&f"); + } + + public static boolean getCancelWarmupOnSprint() { + return conf + .getBoolean("options.options.cancel_warmup_on_sprint", false); + } + + public static String getCancelWarmupOnSprintMessage() { + return conf.getString("options.messages.warmup_cancelled_by_sprint", + "&6Warm-ups have been cancelled due to sprinting.&f"); + } + + public static String getCannotCreateSignMessage() { + return conf.getString("options.messages.cannot_create_sign", + "&6You are not allowed to create this kind of signs!&f"); + } + + public static String getCannotUseSignMessage() { + return conf.getString("options.messages.cannot_use_sign", + "&6You are not allowed to use this sign!&f"); + } + + public static boolean getCleanCooldownsOnDeath() { + return conf.getBoolean("options.options.clear_cooldowns_on_death", + false); + } + + public static boolean getCleanUsesOnDeath() { + return conf.getBoolean("options.options.clear_uses_on_death", false); + } + + static boolean getClearOnRestart() { + return conf.getBoolean("options.options.clear_on_restart", false); + } + + public static String getCommandBlockedMessage() { + return conf.getString("options.messages.limit_achieved", + "&6You cannot use this command anymore!&f"); + } + + public static boolean getCommandLogging() { + return conf.getBoolean("options.options.command_logging", false); + } + + static int getCoolDown(String pre) { + int coolDown = 0; + pre = pre.toLowerCase(); + coolDown = conf.getInt("commands.cooldowns.cooldown." + pre, coolDown); + return coolDown; + } + + public static int getCoolDown2(String pre) { + int coolDown = 0; + pre = pre.toLowerCase(); + coolDown = conf.getInt("commands.cooldowns.cooldown2." + pre, coolDown); + return coolDown; + } + + public static int getCoolDown3(String pre) { + int coolDown = 0; + pre = pre.toLowerCase(); + coolDown = conf.getInt("commands.cooldowns.cooldown3." + pre, coolDown); + return coolDown; + } + + public static int getCoolDown4(String pre) { + int coolDown = 0; + pre = pre.toLowerCase(); + coolDown = conf.getInt("commands.cooldowns.cooldown4." + pre, coolDown); + return coolDown; + } + + public static int getCoolDown5(String pre) { + int coolDown = 0; + pre = pre.toLowerCase(); + coolDown = conf.getInt("commands.cooldowns.cooldown5." + pre, coolDown); + return coolDown; + } + + static String getCoolDownMessage() { + return conf + .getString( + "options.messages.cooling_down", + "&6Wait&e &seconds& seconds&6 before you can use command&e &command& &6again.&f"); + } + + public static String getCooldownsGrp(Player player) { + String cooldown; + if (player.hasPermission("booscooldowns.cooldown2")) { + cooldown = "cooldown2"; + } else if (player.hasPermission("booscooldowns.cooldown3")) { + cooldown = "cooldown3"; + } else if (player.hasPermission("booscooldowns.cooldown4")) { + cooldown = "cooldown4"; + } else if (player.hasPermission("booscooldowns.cooldown5")) { + cooldown = "cooldown5"; + } else { + cooldown = "cooldown"; + } + return cooldown; + } + + public static Set getCooldownsList(Player player) { + String cool = getCooldownsGrp(player); + boosCoolDown.log.info("Cooldown group: " + cool); + ConfigurationSection cooldownsList; + cooldownsList = conf.getConfigurationSection("commands.cooldowns." + + cool); + Set cooldowns = cooldownsList.getKeys(false); + return cooldowns; + } + + public static String getInteractBlockedMessage() { + return conf.getString( + "options.messages.interact_blocked_during_warmup", + "&6You can't do this when command is warming-up!&f"); + } + + public static String getLimGrp(Player player) { + String lim; + if (player.hasPermission("booscooldowns.limit2")) { + lim = "limit2"; + } else if (player.hasPermission("booscooldowns.limit3")) { + lim = "limit3"; + } else if (player.hasPermission("booscooldowns.limit4")) { + lim = "limit4"; + } else if (player.hasPermission("booscooldowns.limit5")) { + lim = "limit5"; + } else { + lim = "limit"; + } + return lim; + } + + public static int getLimit(String pre) { + int limit = -1; + pre = pre.toLowerCase(); + limit = conf.getInt("commands.limits.limit." + pre, limit); + return limit; + } + + public static int getLimit2(String pre) { + int limit = -1; + pre = pre.toLowerCase(); + limit = conf.getInt("commands.limits.limit2." + pre, limit); + return limit; + } + + public static int getLimit3(String pre) { + int limit = -1; + pre = pre.toLowerCase(); + limit = conf.getInt("commands.limits.limit3." + pre, limit); + return limit; + } + + public static int getLimit4(String pre) { + int limit = -1; + pre = pre.toLowerCase(); + limit = conf.getInt("commands.limits.limit4." + pre, limit); + return limit; + } + + public static int getLimit5(String pre) { + int limit = -1; + pre = pre.toLowerCase(); + limit = conf.getInt("commands.limits.limit5." + pre, limit); + return limit; + } + + public static String getLimitListMessage() { + return conf + .getString( + "options.messages.limit_list", + "&6Limit for command &e&command&&6 is &e&limit&&6. You can still use it &e×&&6 times.&f"); + } + + public static ConfigurationSection getLimits(Player player) { + String lim = getLimGrp(player); + ConfigurationSection uses = conf + .getConfigurationSection("commands.limits." + lim); + return uses; + } + + public static boolean getLimitsEnabled() { + return conf.getBoolean("options.options.enable_limits", true); + } + + public static String getLink(String pre) { + String link = null; + pre = pre.toLowerCase(); + link = conf.getString("commands.links.link." + pre, link); + return link; + } + + public static List getLinkList(String link) { + List linkGroup; + link = link.toLowerCase(); + linkGroup = conf.getStringList("commands.links.linkGroups." + link); + return linkGroup; + } + + public static String getPaidErrorMessage() { + return conf.getString("options.messages.paid_error", + "An error has occured: %s"); + } + + public static String getPaidForCommandMessage() { + return conf.getString("options.messages.paid_for_command", + "Price of &command& was %s and you now have %s"); + } + + public static int getPrice(String pre) { + int price = 0; + pre = pre.toLowerCase(); + price = conf.getInt("commands.prices.price." + pre, price); + return price; + } + + public static int getPrice2(String pre) { + int price = 0; + pre = pre.toLowerCase(); + price = conf.getInt("commands.prices.price2." + pre, price); + return price; + } + + public static int getPrice3(String pre) { + int price = 0; + pre = pre.toLowerCase(); + price = conf.getInt("commands.prices.price3." + pre, price); + return price; + } + + public static int getPrice4(String pre) { + int price = 0; + pre = pre.toLowerCase(); + price = conf.getInt("commands.prices.price4." + pre, price); + return price; + } + + public static int getPrice5(String pre) { + int price = 0; + pre = pre.toLowerCase(); + price = conf.getInt("commands.prices.price5." + pre, price); + return price; + } + + public static boolean getSignCommands() { + return conf.getBoolean("options.options.command_signs", false); + } + + public static boolean getStartCooldownsOnDeath() { + return conf.getBoolean("options.options.start_cooldowns_on_death", + false); + } + + static String getUnitHoursMessage() { + return conf.getString("options.units.hours", "hours"); + } + + static String getUnitMinutesMessage() { + return conf.getString("options.units.minutes", "minutes"); + } + + static String getUnitSecondsMessage() { + return conf.getString("options.units.seconds", "seconds"); + } + + public static int getWarmUp(String pre) { + int warmUp = -1; + pre = pre.toLowerCase(); + warmUp = conf.getInt("commands.warmups.warmup." + pre, warmUp); + return warmUp; + } + + public static int getWarmUp2(String pre) { + int warmUp = -1; + pre = pre.toLowerCase(); + warmUp = conf.getInt("commands.warmups.warmup2." + pre, warmUp); + return warmUp; + } + + public static int getWarmUp3(String pre) { + int warmUp = -1; + pre = pre.toLowerCase(); + warmUp = conf.getInt("commands.warmups.warmup3." + pre, warmUp); + return warmUp; + } + + public static int getWarmUp4(String pre) { + int warmUp = -1; + pre = pre.toLowerCase(); + warmUp = conf.getInt("commands.warmups.warmup4." + pre, warmUp); + return warmUp; + } + + public static int getWarmUp5(String pre) { + int warmUp = -1; + pre = pre.toLowerCase(); + warmUp = conf.getInt("commands.warmups.warmup5." + pre, warmUp); + return warmUp; + } + + static String getWarmUpAlreadyStartedMessage() { + return conf.getString("options.messages.warmup_already_started", + "&6Warm-Up process for&e &command& &6has already started.&f"); + } + + public static String getWarmUpCancelledByDamageMessage() { + return conf.getString("options.messages.warmup_cancelled_by_damage", + "&6Warm-ups have been cancelled due to receiving damage.&f"); + } + + public static String getWarmUpCancelledByMoveMessage() { + return conf.getString("options.messages.warmup_cancelled_by_move", + "&6Warm-ups have been cancelled due to moving.&f"); + } + + static String getWarmUpMessage() { + return conf + .getString("options.messages.warming_up", + "&6Wait&e &seconds& seconds&6 before command&e &command& &6has warmed up.&f"); + } + + static void load() { + try { + conf.load(confFile); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + } + + static void reload() { + conf = new YamlConfiguration(); + load(); + } + + static void setAddToConfigFile(String coSetnout, String co, int hodnota) { + co = co.toLowerCase(); + coSetnout = coSetnout.toLowerCase(); + String sekce = null; + if (coSetnout.contains("cooldown")) { + sekce = "cooldowns"; + } else if (coSetnout.contains("warmup")) { + sekce = "warmups"; + } else if (coSetnout.contains("limit")) { + sekce = "limits"; + } else if (coSetnout.contains("price")) { + sekce = "prices"; + } else { + return; + } + reload(); + conf.set("commands." + sekce + "." + coSetnout + "." + co, hodnota); + try { + conf.save(confFile); + } catch (IOException e) { + e.printStackTrace(); + } + reload(); + } + // test @SuppressWarnings("static-access") public boosConfigManager(boosCoolDown boosCoolDown) { @@ -38,6 +445,7 @@ public class boosConfigManager { this.confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); this.conf = new YamlConfiguration(); conf.options().copyDefaults(true); + conf.addDefault("options.options.save_interval_in_minutes", 15); conf.addDefault("options.options.cancel_warmup_on_damage", false); conf.addDefault("options.options.cancel_warmup_on_move", false); conf.addDefault("options.options.cancel_warmup_on_sneak", false); @@ -146,408 +554,7 @@ public class boosConfigManager { } } - static void load() { - try { - conf.load(confFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - } - } - - static void reload() { - conf = new YamlConfiguration(); - load(); - } - - static int getCoolDown(String pre) { - int coolDown = 0; - pre = pre.toLowerCase(); - coolDown = conf.getInt("commands.cooldowns.cooldown." + pre, coolDown); - return coolDown; - } - - public static int getCoolDown2(String pre) { - int coolDown = 0; - pre = pre.toLowerCase(); - coolDown = conf.getInt("commands.cooldowns.cooldown2." + pre, coolDown); - return coolDown; - } - - public static int getCoolDown3(String pre) { - int coolDown = 0; - pre = pre.toLowerCase(); - coolDown = conf.getInt("commands.cooldowns.cooldown3." + pre, coolDown); - return coolDown; - } - - public static int getCoolDown4(String pre) { - int coolDown = 0; - pre = pre.toLowerCase(); - coolDown = conf.getInt("commands.cooldowns.cooldown4." + pre, coolDown); - return coolDown; - } - - public static int getCoolDown5(String pre) { - int coolDown = 0; - pre = pre.toLowerCase(); - coolDown = conf.getInt("commands.cooldowns.cooldown5." + pre, coolDown); - return coolDown; - } - - static void setAddToConfigFile(String coSetnout, String co, int hodnota) { - co = co.toLowerCase(); - coSetnout = coSetnout.toLowerCase(); - String sekce = null; - if (coSetnout.contains("cooldown")) { - sekce = "cooldowns"; - } else if (coSetnout.contains("warmup")) { - sekce = "warmups"; - } else if (coSetnout.contains("limit")) { - sekce = "limits"; - } else if (coSetnout.contains("price")) { - sekce = "prices"; - } else { - return; - } - reload(); - conf.set("commands." + sekce + "." + coSetnout + "." + co, hodnota); - try { - conf.save(confFile); - } catch (IOException e) { - e.printStackTrace(); - } - reload(); - } - - public static int getWarmUp(String pre) { - int warmUp = -1; - pre = pre.toLowerCase(); - warmUp = conf.getInt("commands.warmups.warmup." + pre, warmUp); - return warmUp; - } - - public static int getWarmUp2(String pre) { - int warmUp = -1; - pre = pre.toLowerCase(); - warmUp = conf.getInt("commands.warmups.warmup2." + pre, warmUp); - return warmUp; - } - - public static int getWarmUp3(String pre) { - int warmUp = -1; - pre = pre.toLowerCase(); - warmUp = conf.getInt("commands.warmups.warmup3." + pre, warmUp); - return warmUp; - } - - public static int getWarmUp4(String pre) { - int warmUp = -1; - pre = pre.toLowerCase(); - warmUp = conf.getInt("commands.warmups.warmup4." + pre, warmUp); - return warmUp; - } - - public static int getWarmUp5(String pre) { - int warmUp = -1; - pre = pre.toLowerCase(); - warmUp = conf.getInt("commands.warmups.warmup5." + pre, warmUp); - return warmUp; - } - - public static int getPrice(String pre) { - int price = 0; - pre = pre.toLowerCase(); - price = conf.getInt("commands.prices.price." + pre, price); - return price; - } - - public static int getPrice2(String pre) { - int price = 0; - pre = pre.toLowerCase(); - price = conf.getInt("commands.prices.price2." + pre, price); - return price; - } - - public static int getPrice3(String pre) { - int price = 0; - pre = pre.toLowerCase(); - price = conf.getInt("commands.prices.price3." + pre, price); - return price; - } - - public static int getPrice4(String pre) { - int price = 0; - pre = pre.toLowerCase(); - price = conf.getInt("commands.prices.price4." + pre, price); - return price; - } - - public static int getPrice5(String pre) { - int price = 0; - pre = pre.toLowerCase(); - price = conf.getInt("commands.prices.price5." + pre, price); - return price; - } - - static String getCoolDownMessage() { - return conf - .getString( - "options.messages.cooling_down", - "&6Wait&e &seconds& seconds&6 before you can use command&e &command& &6again.&f"); - } - - static String getWarmUpCancelledByMoveMessage() { - return conf.getString("options.messages.warmup_cancelled_by_move", - "&6Warm-ups have been cancelled due to moving.&f"); - } - - static String getWarmUpCancelledByDamageMessage() { - return conf.getString("options.messages.warmup_cancelled_by_damage", - "&6Warm-ups have been cancelled due to receiving damage.&f"); - } - - static String getWarmUpMessage() { - return conf - .getString("options.messages.warming_up", - "&6Wait&e &seconds& seconds&6 before command&e &command& &6has warmed up.&f"); - } - - static String getWarmUpAlreadyStartedMessage() { - return conf.getString("options.messages.warmup_already_started", - "&6Warm-Up process for&e &command& &6has already started.&f"); - } - - public static String getPaidForCommandMessage() { - return conf.getString("options.messages.paid_for_command", - "Price of &command& was %s and you now have %s"); - } - - public static String getPaidErrorMessage() { - return conf.getString("options.messages.paid_error", - "An error has occured: %s"); - } - - public static String getCancelWarmupOnSneakMessage() { - return conf.getString("options.messages.warmup_cancelled_by_sneak", - "&6Warm-ups have been cancelled due to sneaking.&f"); - } - - public static String getCancelWarmupOnSprintMessage() { - return conf.getString("options.messages.warmup_cancelled_by_sprint", - "&6Warm-ups have been cancelled due to sprinting.&f"); - } - - public static String getCommandBlockedMessage() { - return conf.getString("options.messages.limit_achieved", - "&6You cannot use this command anymore!&f"); - } - - static String getUnitSecondsMessage() { - return conf.getString("options.units.seconds", "seconds"); - } - - static String getUnitMinutesMessage() { - return conf.getString("options.units.minutes", "minutes"); - } - - static String getUnitHoursMessage() { - return conf.getString("options.units.hours", "hours"); - } - - static boolean getClearOnRestart() { - return conf.getBoolean("options.options.clear_on_restart", false); - } - - public static boolean getCancelWarmUpOnDamage() { - return conf - .getBoolean("options.options.cancel_warmup_on_damage", false); - } - - public static boolean getCancelWarmupOnMove() { - return conf.getBoolean("options.options.cancel_warmup_on_move", false); - } - - public static boolean getCancelWarmupOnSprint() { - return conf - .getBoolean("options.options.cancel_warmup_on_sprint", false); - } - - public static boolean getCancelWarmupOnSneak() { - return conf.getBoolean("options.options.cancel_warmup_on_sneak", false); - } - - public static boolean getCommandLogging() { - return conf.getBoolean("options.options.command_logging", false); - } - - public static int getLimit2(String pre) { - int limit = -1; - pre = pre.toLowerCase(); - limit = conf.getInt("commands.limits.limit2." + pre, limit); - return limit; - } - - public static int getLimit3(String pre) { - int limit = -1; - pre = pre.toLowerCase(); - limit = conf.getInt("commands.limits.limit3." + pre, limit); - return limit; - } - - public static int getLimit4(String pre) { - int limit = -1; - pre = pre.toLowerCase(); - limit = conf.getInt("commands.limits.limit4." + pre, limit); - return limit; - } - - public static int getLimit5(String pre) { - int limit = -1; - pre = pre.toLowerCase(); - limit = conf.getInt("commands.limits.limit5." + pre, limit); - return limit; - } - - public static int getLimit(String pre) { - int limit = -1; - pre = pre.toLowerCase(); - limit = conf.getInt("commands.limits.limit." + pre, limit); - return limit; - } - - public static String getLink(String pre) { - String link = null; - pre = pre.toLowerCase(); - link = conf.getString("commands.links.link." + pre, link); - return link; - } - - public static List getLinkList(String link) { - List linkGroup; - link = link.toLowerCase(); - linkGroup = conf.getStringList("commands.links.linkGroups." + link); - return linkGroup; - } - - public static boolean getCancelWarmUpOnGameModeChange() { - return conf.getBoolean( - "options.options.cancel_warmup_on_gamemode_change", false); - } - - public static String getCancelWarmupByGameModeChangeMessage() { - return conf.getString( - "options.messages.warmup_cancelled_by_gamemode_change", - "&6Warm-ups have been cancelled due to changing gamemode.&f"); - } - - public static boolean getBlockInteractDuringWarmup() { - return conf.getBoolean("options.options.block_interact_during_warmup", - false); - } - - public static String getInteractBlockedMessage() { - return conf.getString( - "options.messages.interact_blocked_during_warmup", - "&6You can't do this when command is warming-up!&f"); - } - - public static boolean getCleanUsesOnDeath() { - return conf.getBoolean("options.options.clear_uses_on_death", false); - } - - public static boolean getCleanCooldownsOnDeath() { - return conf.getBoolean("options.options.clear_cooldowns_on_death", - false); - } - - public static String getLimitListMessage() { - return conf - .getString( - "options.messages.limit_list", - "&6Limit for command &e&command&&6 is &e&limit&&6. You can still use it &e×&&6 times.&f"); - } - - public static String getLimGrp(Player player) { - String lim; - if (player.hasPermission("booscooldowns.limit2")) { - lim = "limit2"; - } else if (player.hasPermission("booscooldowns.limit3")) { - lim = "limit3"; - } else if (player.hasPermission("booscooldowns.limit4")) { - lim = "limit4"; - } else if (player.hasPermission("booscooldowns.limit5")) { - lim = "limit5"; - } else { - lim = "limit"; - } - return lim; - } - - public static String getCooldownsGrp(Player player) { - String cooldown; - if (player.hasPermission("booscooldowns.cooldown2")) { - cooldown = "cooldown2"; - } else if (player.hasPermission("booscooldowns.cooldown3")) { - cooldown = "cooldown3"; - } else if (player.hasPermission("booscooldowns.cooldown4")) { - cooldown = "cooldown4"; - } else if (player.hasPermission("booscooldowns.cooldown5")) { - cooldown = "cooldown5"; - } else { - cooldown = "cooldown"; - } - return cooldown; - } - - public static ConfigurationSection getLimits(Player player) { - String lim = getLimGrp(player); - ConfigurationSection uses = conf - .getConfigurationSection("commands.limits." + lim); - return uses; - } - - public static Set getCooldownsList(Player player) { - String cool = getCooldownsGrp(player); - boosCoolDown.log.info("Cooldown group: "+cool); - ConfigurationSection cooldownsList; - cooldownsList = conf.getConfigurationSection("commands.cooldowns." + cool); - Set cooldowns = cooldownsList.getKeys(false); - return cooldowns; - } - - public static ConfigurationSection getAliases() { - ConfigurationSection aliases = conf - .getConfigurationSection("commands.aliases"); - return aliases; - } - - public static String getAlias(String message) { - return conf.getString("commands.aliases." + message); - } - - public static boolean getSignCommands() { - return conf.getBoolean("options.options.command_signs", false); - } - - public static String getCannotUseSignMessage() { - return conf.getString("options.messages.cannot_use_sign", - "&6You are not allowed to use this sign!&f"); - } - - public static String getCannotCreateSignMessage() { - return conf.getString("options.messages.cannot_create_sign", - "&6You are not allowed to create this kind of signs!&f"); - } - - public static boolean getLimitsEnabled() { - return conf.getBoolean("options.options.enable_limits", true); - } - - public static boolean getStartCooldownsOnDeath() { - return conf.getBoolean("options.options.start_cooldowns_on_death", false); + public static int getSaveInterval() { + return conf.getInt("options.options.save_interval_in_minutes", 15); } } diff --git a/src/cz/boosik/boosCooldown/boosCoolDown.java b/src/cz/boosik/boosCooldown/boosCoolDown.java index 17b0e67..b2c40f1 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDown.java +++ b/src/cz/boosik/boosCooldown/boosCoolDown.java @@ -5,61 +5,75 @@ import java.util.logging.Logger; import net.milkbowl.vault.Vault; import net.milkbowl.vault.economy.Economy; + import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitScheduler; import org.mcstats.MetricsLite; import util.boosChat; +import cz.boosik.boosCooldown.Listeners.boosEntityDamageListener; +import cz.boosik.boosCooldown.Listeners.boosPlayerDeathListener; +import cz.boosik.boosCooldown.Listeners.boosPlayerGameModeChangeListener; +import cz.boosik.boosCooldown.Listeners.boosPlayerInteractListener; +import cz.boosik.boosCooldown.Listeners.boosPlayerMoveListener; +import cz.boosik.boosCooldown.Listeners.boosPlayerToggleSneakListener; +import cz.boosik.boosCooldown.Listeners.boosPlayerToggleSprintListener; +import cz.boosik.boosCooldown.Listeners.boosSignChangeListener; +import cz.boosik.boosCooldown.Listeners.boosSignInteractListener; -public class boosCoolDown extends JavaPlugin { +public class boosCoolDown extends JavaPlugin implements Runnable { public static final Logger log = Logger.getLogger("Minecraft"); public static PluginDescriptionFile pdfFile; private static Economy economy = null; private static boolean usingVault = false; private PluginManager pm; - - public void onEnable() { - pdfFile = this.getDescription(); - PluginDescriptionFile pdfFile = this.getDescription(); - log.info("[" + pdfFile.getName() + "]" + " version " - + pdfFile.getVersion() + " by " + pdfFile.getAuthors() - + " is enabled!"); - - new boosConfigManager(this); - boosConfigManager.load(); - new boosCoolDownManager(this); - boosCoolDownManager.load(); - pm = getServer().getPluginManager(); - pm.registerEvents(new boosCoolDownListener(this), this); - initializeVault(); - if (boosConfigManager.getClearOnRestart()) { - boosCoolDownManager.clear(); - } - try { - MetricsLite metrics = new MetricsLite(this); - metrics.start(); - } catch (IOException e) { - // Failed to submit the stats :-( - } - + + public static void commandLogger(String player, String command) { + log.info("[" + "boosLogger" + "] " + player + " used command " + + command); } - public void onDisable() { - if (boosConfigManager.getClearOnRestart() == true) { - boosCoolDownManager.clear(); - log.info("[" + pdfFile.getName() + "]" + " cooldowns cleared!"); + public static Economy getEconomy() { + return economy; + } + + public static Logger getLog() { + return log; + } + + public static boolean isUsingVault() { + return usingVault; + } + + private void initializeVault() { + Plugin x = this.getServer().getPluginManager().getPlugin("Vault"); + if (x != null & x instanceof Vault) { + log.info("[" + pdfFile.getName() + "]" + + " found [Vault] searching for economy plugin."); + usingVault = true; + if (setupEconomy()) { + log.info("[" + pdfFile.getName() + "]" + " found [" + + economy.getName() + + "] plugin, enabling prices support."); + } else { + log.info("[" + + pdfFile.getName() + + "]" + + " economy plugin not found, disabling prices support."); + } } else { - boosCoolDownManager.save(); - log.info("[" + pdfFile.getName() + "]" + " cooldowns saved!"); + log.info("[" + pdfFile.getName() + "]" + + " [Vault] not found disabling economy support."); + usingVault = false; } - log.info("[" + pdfFile.getName() + "]" + " version " - + pdfFile.getVersion() + " disabled!"); } @Override @@ -70,7 +84,7 @@ public class boosCoolDown extends JavaPlugin { if (args.length == 1) { if (sender.hasPermission("booscooldowns.reload") && args[0].equalsIgnoreCase("reload")) { - boosConfigManager.reload(); + reload(); boosChat.sendMessageToCommandSender(sender, "&6[" + pdfFile.getName() + "]&e" + " config reloaded"); @@ -221,17 +235,88 @@ public class boosCoolDown extends JavaPlugin { return false; } - public static Economy getEconomy() { - return economy; + public void onDisable() { + if (boosConfigManager.getClearOnRestart() == true) { + boosCoolDownManager.clear(); + log.info("[" + pdfFile.getName() + "]" + " cooldowns cleared!"); + } else { + boosCoolDownManager.save(); + log.info("[" + pdfFile.getName() + "]" + " cooldowns saved!"); + } + log.info("[" + pdfFile.getName() + "]" + " version " + + pdfFile.getVersion() + " disabled!"); } - public static boolean isUsingVault() { - return usingVault; + public void onEnable() { + pdfFile = this.getDescription(); + PluginDescriptionFile pdfFile = this.getDescription(); + log.info("[" + pdfFile.getName() + "]" + " version " + + pdfFile.getVersion() + " by " + pdfFile.getAuthors() + + " is enabled!"); + + new boosConfigManager(this); + boosConfigManager.load(); + new boosCoolDownManager(this); + boosCoolDownManager.load(); + pm = getServer().getPluginManager(); + registerListeners(); + initializeVault(); + BukkitScheduler scheduler = this.getServer().getScheduler(); + scheduler.scheduleSyncRepeatingTask(this, this, boosConfigManager.getSaveInterval()*1200, boosConfigManager.getSaveInterval()*1200); + if (boosConfigManager.getClearOnRestart()) { + boosCoolDownManager.clear(); + } + try { + MetricsLite metrics = new MetricsLite(this); + metrics.start(); + } catch (IOException e) { + // Failed to submit the stats :-( + } + } - public static void commandLogger(String player, String command) { - log.info("[" + "boosLogger" + "] " + player + " used command " - + command); + private void registerListeners() { + HandlerList.unregisterAll(this); + pm.registerEvents(new boosCoolDownListener(this), this); + if (boosConfigManager.getCancelWarmUpOnDamage()) { + pm.registerEvents(new boosEntityDamageListener(), this); + } + if (boosConfigManager.getCleanCooldownsOnDeath() + || boosConfigManager.getCleanUsesOnDeath() + || boosConfigManager.getStartCooldownsOnDeath()) { + pm.registerEvents(new boosPlayerDeathListener(), this); + } + if (boosConfigManager.getCancelWarmUpOnGameModeChange()) { + pm.registerEvents(new boosPlayerGameModeChangeListener(), this); + } + if (boosConfigManager.getBlockInteractDuringWarmup()) { + pm.registerEvents(new boosPlayerInteractListener(), this); + } + if (boosConfigManager.getCancelWarmupOnMove()) { + pm.registerEvents(new boosPlayerMoveListener(), this); + } + if (boosConfigManager.getCancelWarmupOnSneak()) { + pm.registerEvents(new boosPlayerToggleSneakListener(), this); + } + if (boosConfigManager.getCancelWarmupOnSprint()) { + pm.registerEvents(new boosPlayerToggleSprintListener(), this); + } + if (boosConfigManager.getSignCommands()) { + pm.registerEvents(new boosSignChangeListener(), this); + pm.registerEvents(new boosSignInteractListener(this), this); + } + } + + private void reload() { + boosConfigManager.reload(); + registerListeners(); + } + + @Override + public void run() { + boosCoolDownManager.save(); + boosCoolDownManager.load(); + log.info("[boosCooldowns] Config saved!"); } private boolean setupEconomy() { @@ -246,31 +331,4 @@ public class boosCoolDown extends JavaPlugin { } return false; } - - private void initializeVault() { - Plugin x = this.getServer().getPluginManager().getPlugin("Vault"); - if (x != null & x instanceof Vault) { - log.info("[" + pdfFile.getName() + "]" - + " found [Vault] searching for economy plugin."); - usingVault = true; - if (setupEconomy()) { - log.info("[" + pdfFile.getName() + "]" + " found [" - + economy.getName() - + "] plugin, enabling prices support."); - } else { - log.info("[" - + pdfFile.getName() - + "]" - + " economy plugin not found, disabling prices support."); - } - } else { - log.info("[" + pdfFile.getName() + "]" - + " [Vault] not found disabling economy support."); - usingVault = false; - } - } - - public static Logger getLog() { - return log; - } } diff --git a/src/cz/boosik/boosCooldown/boosCoolDownListener.java b/src/cz/boosik/boosCooldown/boosCoolDownListener.java index 62b17ec..749d5b7 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDownListener.java +++ b/src/cz/boosik/boosCooldown/boosCoolDownListener.java @@ -3,38 +3,125 @@ package cz.boosik.boosCooldown; import java.util.concurrent.ConcurrentHashMap; import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Sign; import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.block.SignChangeEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerGameModeChangeEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.bukkit.event.player.PlayerToggleSneakEvent; -import org.bukkit.event.player.PlayerToggleSprintEvent; import util.boosChat; public class boosCoolDownListener implements Listener { private final boosCoolDown plugin; private boolean blocked = false; - private static ConcurrentHashMap playerloc = new ConcurrentHashMap(); - private static ConcurrentHashMap playerworld = new ConcurrentHashMap(); + public static ConcurrentHashMap playerloc = new ConcurrentHashMap(); + public static ConcurrentHashMap playerworld = new ConcurrentHashMap(); + + public static void clearLocWorld(Player player) { + boosCoolDownListener.playerloc.remove(player); + boosCoolDownListener.playerworld.remove(player); + } public boosCoolDownListener(boosCoolDown instance) { plugin = instance; } + private boolean blocked(Player player, String pre, String msg) { + int limit = -1; + int uses = boosCoolDownManager.getUses(player, pre, msg); + if (player.hasPermission("booscooldowns.nolimit") + || player.hasPermission("booscooldowns.nolimit." + pre)) { + } else { + if (player.hasPermission("booscooldowns.limit2")) { + limit = boosConfigManager.getLimit2(pre); + if (limit == -1) { + return false; + } else if (limit <= uses) { + return true; + } + } else if (player.hasPermission("booscooldowns.limit3")) { + limit = boosConfigManager.getLimit3(pre); + if (limit == -1) { + return false; + } else if (limit <= uses) { + return true; + } + } else if (player.hasPermission("booscooldowns.limit4")) { + limit = boosConfigManager.getLimit4(pre); + if (limit == -1) { + return false; + } else if (limit <= uses) { + return true; + } + } else if (player.hasPermission("booscooldowns.limit5")) { + limit = boosConfigManager.getLimit5(pre); + if (limit == -1) { + return false; + } else if (limit <= uses) { + return true; + } + } else { + limit = boosConfigManager.getLimit(pre); + if (limit == -1) { + return false; + } else if (limit <= uses) { + return true; + } + } + } + return false; + } + + // Returns true if the command is on cooldown, false otherwise + private void checkCooldown(PlayerCommandPreprocessEvent event, + Player player, String pre, String message, int warmUpSeconds, + int price) { + if (!blocked) { + if (warmUpSeconds > 0) { + if (!player.hasPermission("booscooldowns.nowarmup") + && !player.hasPermission("booscooldowns.nowarmup." + + pre)) { + start(event, player, pre, message, warmUpSeconds); + } + } else { + if (boosCoolDownManager.coolDown(player, pre)) { + event.setCancelled(true); + } + } + if (!event.isCancelled()) { + payForCommand(event, player, pre, price); + } + } else { + event.setCancelled(true); + String msg = String.format(boosConfigManager + .getCommandBlockedMessage()); + boosChat.sendMessageToPlayer(player, msg); + } + if (!event.isCancelled()) { + boosCoolDownManager.setUses(player, pre, message); + if (boosConfigManager.getCommandLogging()) { + boosCoolDown.commandLogger(player.getName(), pre + message); + } + } + } + + private boolean isPluginOnForPlayer(Player player) { + boolean on; + if (player.isOp()) { + on = false; + } + if (player.hasPermission("booscooldowns.exception")) { + on = false; + } else if (player.isOp()) { + on = false; + } else { + on = true; + } + return on; + } + @EventHandler(priority = EventPriority.LOW) private void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { if (event.isCancelled()) { @@ -190,155 +277,24 @@ public class boosCoolDownListener implements Listener { } } - private int preSubCheck(Player player, String preSub) { - - if (player.hasPermission("booscooldowns.warmup2")) { - return boosConfigManager.getWarmUp2(preSub); - } else if (player.hasPermission("booscooldowns.warmup3")) { - return boosConfigManager.getWarmUp3(preSub); - } else if (player.hasPermission("booscooldowns.warmup4")) { - return boosConfigManager.getWarmUp4(preSub); - } else if (player.hasPermission("booscooldowns.warmup5")) { - return boosConfigManager.getWarmUp5(preSub); - } else { - return boosConfigManager.getWarmUp(preSub); - } - - } - - private int preLimitCheck(Player player, String preSub) { - if (player.hasPermission("booscooldowns.limit2")) { - return boosConfigManager.getLimit2(preSub); - } else if (player.hasPermission("booscooldowns.limit3")) { - return boosConfigManager.getLimit3(preSub); - } else if (player.hasPermission("booscooldowns.limit4")) { - return boosConfigManager.getLimit4(preSub); - } else if (player.hasPermission("booscooldowns.limit5")) { - return boosConfigManager.getLimit5(preSub); - } else { - return boosConfigManager.getLimit(preSub); - } - } - - private int preCDCheck(Player player, String preSub) { - if (player.hasPermission("booscooldowns.cooldown2")) { - return boosConfigManager.getCoolDown2(preSub); - } else if (player.hasPermission("booscooldowns.cooldown3")) { - return boosConfigManager.getCoolDown3(preSub); - } else if (player.hasPermission("booscooldowns.cooldown4")) { - return boosConfigManager.getCoolDown4(preSub); - } else if (player.hasPermission("booscooldowns.cooldown5")) { - return boosConfigManager.getCoolDown5(preSub); - } else { - return boosConfigManager.getCoolDown(preSub); - } - } - - private int prePriceCheck(Player player, String preSub) { - if (player.hasPermission("booscooldowns.cooldown2")) { - return boosConfigManager.getPrice2(preSub); - } else if (player.hasPermission("booscooldowns.cooldown3")) { - return boosConfigManager.getPrice3(preSub); - } else if (player.hasPermission("booscooldowns.cooldown4")) { - return boosConfigManager.getPrice4(preSub); - } else if (player.hasPermission("booscooldowns.cooldown5")) { - return boosConfigManager.getPrice5(preSub); - } else { - return boosConfigManager.getPrice(preSub); - } - } - - private boolean blocked(Player player, String pre, String msg) { - int limit = -1; - int uses = boosCoolDownManager.getUses(player, pre, msg); - if (player.hasPermission("booscooldowns.nolimit") - || player.hasPermission("booscooldowns.nolimit." + pre)) { - } else { - if (player.hasPermission("booscooldowns.limit2")) { - limit = boosConfigManager.getLimit2(pre); - if (limit == -1) { - return false; - } else if (limit <= uses) { - return true; - } - } else if (player.hasPermission("booscooldowns.limit3")) { - limit = boosConfigManager.getLimit3(pre); - if (limit == -1) { - return false; - } else if (limit <= uses) { - return true; - } - } else if (player.hasPermission("booscooldowns.limit4")) { - limit = boosConfigManager.getLimit4(pre); - if (limit == -1) { - return false; - } else if (limit <= uses) { - return true; - } - } else if (player.hasPermission("booscooldowns.limit5")) { - limit = boosConfigManager.getLimit5(pre); - if (limit == -1) { - return false; - } else if (limit <= uses) { - return true; - } + @EventHandler(priority = EventPriority.LOW) + private void onPlayerChat(AsyncPlayerChatEvent event) { + String chatMessage = event.getMessage(); + String temp = "globalchat"; + int price = 0; + Player player = event.getPlayer(); + if (chatMessage.startsWith("!")) { + if (!boosCoolDownManager.checkCoolDownOK(player, temp, chatMessage)) { + event.setCancelled(true); + return; } else { - limit = boosConfigManager.getLimit(pre); - if (limit == -1) { - return false; - } else if (limit <= uses) { - return true; - } - } - } - return false; - } - - private boolean isPluginOnForPlayer(Player player) { - boolean on; - if (player.isOp()) { - on = false; - } - if (player.hasPermission("booscooldowns.exception")) { - on = false; - } else if (player.isOp()) { - on = false; - } else { - on = true; - } - return on; - } - - // Returns true if the command is on cooldown, false otherwise - private void checkCooldown(PlayerCommandPreprocessEvent event, - Player player, String pre, String message, int warmUpSeconds, - int price) { - if (!blocked) { - if (warmUpSeconds > 0) { - if (!player.hasPermission("booscooldowns.nowarmup") - && !player.hasPermission("booscooldowns.nowarmup." - + pre)) { - start(event, player, pre, message, warmUpSeconds); - } - } else { - if (boosCoolDownManager.coolDown(player, pre)) { + if (boosCoolDownManager.coolDown(player, temp)) { event.setCancelled(true); + return; } } - if (!event.isCancelled()) { - payForCommand(event, player, pre, price); - } - } else { - event.setCancelled(true); - String msg = String.format(boosConfigManager - .getCommandBlockedMessage()); - boosChat.sendMessageToPlayer(player, msg); - } - if (!event.isCancelled()) { - boosCoolDownManager.setUses(player, pre, message); - if (boosConfigManager.getCommandLogging()) { - boosCoolDown.commandLogger(player.getName(), pre + message); - } + price = prePriceCheck(player, temp); + payForCommand2(event, player, temp, price); } } @@ -376,6 +332,64 @@ public class boosCoolDownListener implements Listener { } } + private int preCDCheck(Player player, String preSub) { + if (player.hasPermission("booscooldowns.cooldown2")) { + return boosConfigManager.getCoolDown2(preSub); + } else if (player.hasPermission("booscooldowns.cooldown3")) { + return boosConfigManager.getCoolDown3(preSub); + } else if (player.hasPermission("booscooldowns.cooldown4")) { + return boosConfigManager.getCoolDown4(preSub); + } else if (player.hasPermission("booscooldowns.cooldown5")) { + return boosConfigManager.getCoolDown5(preSub); + } else { + return boosConfigManager.getCoolDown(preSub); + } + } + + private int preLimitCheck(Player player, String preSub) { + if (player.hasPermission("booscooldowns.limit2")) { + return boosConfigManager.getLimit2(preSub); + } else if (player.hasPermission("booscooldowns.limit3")) { + return boosConfigManager.getLimit3(preSub); + } else if (player.hasPermission("booscooldowns.limit4")) { + return boosConfigManager.getLimit4(preSub); + } else if (player.hasPermission("booscooldowns.limit5")) { + return boosConfigManager.getLimit5(preSub); + } else { + return boosConfigManager.getLimit(preSub); + } + } + + private int prePriceCheck(Player player, String preSub) { + if (player.hasPermission("booscooldowns.cooldown2")) { + return boosConfigManager.getPrice2(preSub); + } else if (player.hasPermission("booscooldowns.cooldown3")) { + return boosConfigManager.getPrice3(preSub); + } else if (player.hasPermission("booscooldowns.cooldown4")) { + return boosConfigManager.getPrice4(preSub); + } else if (player.hasPermission("booscooldowns.cooldown5")) { + return boosConfigManager.getPrice5(preSub); + } else { + return boosConfigManager.getPrice(preSub); + } + } + + private int preSubCheck(Player player, String preSub) { + + if (player.hasPermission("booscooldowns.warmup2")) { + return boosConfigManager.getWarmUp2(preSub); + } else if (player.hasPermission("booscooldowns.warmup3")) { + return boosConfigManager.getWarmUp3(preSub); + } else if (player.hasPermission("booscooldowns.warmup4")) { + return boosConfigManager.getWarmUp4(preSub); + } else if (player.hasPermission("booscooldowns.warmup5")) { + return boosConfigManager.getWarmUp5(preSub); + } else { + return boosConfigManager.getWarmUp(preSub); + } + + } + private void start(PlayerCommandPreprocessEvent event, Player player, String pre, String message, int warmUpSeconds) { if (!boosCoolDownManager.checkWarmUpOK(player, pre, message)) { @@ -398,311 +412,4 @@ public class boosCoolDownListener implements Listener { } } } - - @EventHandler(priority = EventPriority.NORMAL) - private void onPlayerMove(PlayerMoveEvent event) { - if (!boosConfigManager.getCancelWarmupOnMove()) - return; - - if (event.isCancelled()) - return; - - Player player = event.getPlayer(); - if (player != null - && !player.hasPermission("booscooldowns.nocancel.move")) { - if (boosWarmUpManager.hasWarmUps(player) && hasMoved(player)) { - clearLocWorld(player); - boosChat.sendMessageToPlayer(player, - boosConfigManager.getWarmUpCancelledByMoveMessage()); - boosWarmUpManager.cancelWarmUps(player); - } - - } - } - - private static boolean hasMoved(Player player) { - String curworld = player.getWorld().getName(); - String cmdworld = playerworld.get(player); - Location curloc = player.getLocation(); - Location cmdloc = playerloc.get(player); - if (!curworld.equals(cmdworld)) { - return true; - } else if (cmdloc.distanceSquared(curloc) > 2) { - return true; - } - - return false; - } - - public static void clearLocWorld(Player player) { - playerloc.remove(player); - playerworld.remove(player); - } - - @EventHandler(priority = EventPriority.NORMAL) - private void onPlayerToggleSneak(PlayerToggleSneakEvent event) { - if (!boosConfigManager.getCancelWarmupOnSneak()) - return; - - if (event.isCancelled()) - return; - - Player player = event.getPlayer(); - if (player != null - && !player.hasPermission("booscooldowns.nocancel.sneak")) { - if (boosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, - boosConfigManager.getCancelWarmupOnSneakMessage()); - boosWarmUpManager.cancelWarmUps(player); - } - - } - } - - @EventHandler(priority = EventPriority.NORMAL) - private void onPlayerToggleSprint(PlayerToggleSprintEvent event) { - if (!boosConfigManager.getCancelWarmupOnSprint()) - return; - - if (event.isCancelled()) - return; - - Player player = event.getPlayer(); - if (player != null - && !player.hasPermission("booscooldowns.nocancel.sprint")) { - if (boosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, - boosConfigManager.getCancelWarmupOnSprintMessage()); - boosWarmUpManager.cancelWarmUps(player); - } - - } - } - - @EventHandler(priority = EventPriority.NORMAL) - private void onEntityDamage(EntityDamageEvent event) { - if (!boosConfigManager.getCancelWarmUpOnDamage()) - return; - - if (event.isCancelled()) - return; - - Entity entity = event.getEntity(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - if (player != null - && !player.hasPermission("booscooldowns.nocancel.damage")) { - if (boosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, boosConfigManager - .getWarmUpCancelledByDamageMessage()); - boosWarmUpManager.cancelWarmUps(player); - } - - } - } - } - - @EventHandler(priority = EventPriority.NORMAL) - private void onPlayerInteract(PlayerInteractEvent event) { - if (!boosConfigManager.getBlockInteractDuringWarmup()) - return; - - if (event.isCancelled()) - return; - - Entity entity = event.getPlayer(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - if (player != null - && !player - .hasPermission("booscooldowns.dontblock.interact")) { - if (boosWarmUpManager.hasWarmUps(player)) { - if (event.getClickedBlock().getType().name() - .equals("CHEST") - || event.getClickedBlock().getType().name() - .equals("FURNACE") - || event.getClickedBlock().getType().name() - .equals("BURNING_FURNACE") - || event.getClickedBlock().getType().name() - .equals("WORKBENCH") - || event.getClickedBlock().getType().name() - .equals("DISPENSER") - || event.getClickedBlock().getType().name() - .equals("JUKEBOX") - || event.getClickedBlock().getType().name() - .equals("LOCKED_CHEST") - || event.getClickedBlock().getType().name() - .equals("ENCHANTMENT_TABLE") - || event.getClickedBlock().getType().name() - .equals("BREWING_STAND") - || event.getClickedBlock().getType().name() - .equals("CAULDRON") - || event.getClickedBlock().getType().name() - .equals("STORAGE_MINECART")) { - event.setCancelled(true); - boosChat.sendMessageToPlayer(player, - boosConfigManager.getInteractBlockedMessage()); - } - } - - } - } - } - - @EventHandler(priority = EventPriority.NORMAL) - private void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { - if (!boosConfigManager.getCancelWarmUpOnGameModeChange()) - return; - - if (event.isCancelled()) - return; - - Entity entity = event.getPlayer(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - if (player != null - && !player - .hasPermission("booscooldowns.nocancel.gamemodechange")) { - if (boosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, boosConfigManager - .getCancelWarmupByGameModeChangeMessage()); - boosWarmUpManager.cancelWarmUps(player); - } - - } - } - } - - @EventHandler(priority = EventPriority.NORMAL) - private void onPlayerDeath(PlayerDeathEvent event) { - if (!boosConfigManager.getCleanCooldownsOnDeath() - && !boosConfigManager.getCleanUsesOnDeath() - && !boosConfigManager.getStartCooldownsOnDeath()){ - return;} - Entity entity = event.getEntity(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - if (player != null - && player - .hasPermission("booscooldowns.clear.cooldowns.death")) { - if (boosConfigManager.getCleanCooldownsOnDeath()) { - boosCoolDownManager.clearSomething("cooldown", player - .getName().toLowerCase()); - } - } - if (player != null - && player.hasPermission("booscooldowns.clear.uses.death")) { - if (boosConfigManager.getCleanUsesOnDeath()) { - boosCoolDownManager.clearSomething("uses", player.getName() - .toLowerCase()); - } - } - if (player != null){ - if (boosConfigManager.getStartCooldownsOnDeath()) { - boosCoolDownManager.startAllCooldowns(player); - } - } - } - } - - @EventHandler(priority = EventPriority.LOW) - private void onPlayerChat(AsyncPlayerChatEvent event) { - String chatMessage = event.getMessage(); - String temp = "globalchat"; - int price = 0; - Player player = event.getPlayer(); - if (chatMessage.startsWith("!")) { - if (!boosCoolDownManager.checkCoolDownOK(player, temp, chatMessage)) { - event.setCancelled(true); - return; - } else { - if (boosCoolDownManager.coolDown(player, temp)) { - event.setCancelled(true); - return; - } - } - price = prePriceCheck(player, temp); - payForCommand2(event, player, temp, price); - } - } - - @EventHandler(priority = EventPriority.NORMAL) - private void onSignInteract(PlayerInteractEvent event) { - String msg; - if (!boosConfigManager.getSignCommands()) { - return; - } - if (event.isCancelled()) { - return; - } - if (event.hasBlock() && event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (event.getClickedBlock().getType() == Material.SIGN_POST - || event.getClickedBlock().getType() == Material.WALL_SIGN) { - Sign s = (Sign) event.getClickedBlock().getState(); - String line1 = s.getLine(0); - String line2 = s.getLine(1); - String line3 = s.getLine(2); - String line4 = s.getLine(3); - Player player = event.getPlayer(); - if (line1.equals("[boosCooldowns]")) { - if (line2.equals("player") - && player - .hasPermission("booscooldowns.signs.player.use")) { - msg = line3; - if (line3.endsWith("+") || !line4.isEmpty()) { - msg = line3.substring(0, line3.length() - 1) + " " - + line4; - } - event.getPlayer().chat(msg); - } else if (line2.equals("server") - && player - .hasPermission("booscooldowns.signs.server.use")) { - msg = line3; - if (line3.endsWith("+") || !line4.isEmpty()) { - msg = line3.substring(0, line3.length() - 1) + " " - + line4; - } - plugin.getServer().dispatchCommand( - plugin.getServer().getConsoleSender(), msg); - } else { - boosChat.sendMessageToPlayer(player, - boosConfigManager.getCannotUseSignMessage()); - } - } - } - } - } - - @EventHandler(priority = EventPriority.NORMAL) - public void onSignChange(SignChangeEvent event) { - if (!boosConfigManager.getSignCommands()) { - return; - } - if (event.isCancelled()) { - return; - } - Player player = event.getPlayer(); - String line1 = event.getLine(0); - String line2 = event.getLine(1); - if (line1.equals("[boosCooldowns]")) { - if (line2.equals("player") - && !player - .hasPermission("booscooldowns.signs.player.place")) { - boosChat.sendMessageToPlayer(player, - boosConfigManager.getCannotCreateSignMessage()); - event.getBlock().breakNaturally(); - event.setCancelled(true); - return; - } - if (line2.equals("server") - && !player - .hasPermission("booscooldowns.signs.server.place")) { - boosChat.sendMessageToPlayer(player, - boosConfigManager.getCannotCreateSignMessage()); - event.getBlock().breakNaturally(); - event.setCancelled(true); - return; - } - } - } } \ No newline at end of file diff --git a/src/cz/boosik/boosCooldown/boosCoolDownManager.java b/src/cz/boosik/boosCooldown/boosCoolDownManager.java index 88b7162..7060651 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDownManager.java +++ b/src/cz/boosik/boosCooldown/boosCoolDownManager.java @@ -21,147 +21,10 @@ public class boosCoolDownManager { private static YamlConfiguration confusers; private static File confFile; - public boosCoolDownManager(boosCoolDown bCoolDown) { - confFile = new File(bCoolDown.getDataFolder(), "users.yml"); - - confusers = new YamlConfiguration(); - - if (confFile.exists()) { - try { - confusers.load(confFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - } - } else { - try { - confFile.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - static void load() { - try { - confusers.load(confFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - } - } - - static void save() { - try { - confFile.createNewFile(); - confusers.save(confFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - - static void clear() { - ConfigurationSection userSection = confusers - .getConfigurationSection("users"); - if (userSection == null) - return; - for (String user : userSection.getKeys(false)) { - // clear cooldown - ConfigurationSection cooldown = confusers - .getConfigurationSection("users." + user + ".cooldown"); - if (cooldown != null) { - for (String key : cooldown.getKeys(false)) { - confusers.set("users." + user + ".cooldown." + key, null); - } - } - confusers.set("users." + user + ".cooldown", null); - - // clear warmup - ConfigurationSection warmup = confusers - .getConfigurationSection("users." + user + ".warmup"); - if (warmup != null) { - for (String key : warmup.getKeys(false)) { - confusers.set("users." + user + ".warmup." + key, null); - } - } - confusers.set("users." + user + ".warmup", null); - - confusers.set("users." + user, null); - } - save(); - load(); - } - - static void getLimits(Player player) { - int usesNum = 0; - int limitNum = 0; - int num; - String message; - String lim = boosConfigManager.getLimGrp(player); - ConfigurationSection uses = boosConfigManager.getLimits(player); - if (uses != null) { - for (String key : uses.getKeys(false)) { - usesNum = confusers.getInt("users." - + player.getName().toLowerCase().hashCode() + ".uses." + key, - usesNum); - if (lim.equals("limit")) { - limitNum = boosConfigManager.getLimit(key); - } else if (lim.equals("limit2")) { - limitNum = boosConfigManager.getLimit2(key); - } else if (lim.equals("limit3")) { - limitNum = boosConfigManager.getLimit3(key); - } else if (lim.equals("limit4")) { - limitNum = boosConfigManager.getLimit4(key); - } else if (lim.equals("limit5")) { - limitNum = boosConfigManager.getLimit5(key); - } - num = limitNum - usesNum; - if (num < 0) { - num = 0; - } - message = boosConfigManager.getLimitListMessage(); - message = message.replaceAll("&command&", key); - message = message.replaceAll("&limit&", - String.valueOf(limitNum)); - message = message.replaceAll("×&", String.valueOf(num)); - boosChat.sendMessageToPlayer(player, message); - } - } - } - - static void clearSomething(String co, String player) { - ConfigurationSection userSection = confusers - .getConfigurationSection("users." + player.toLowerCase().hashCode() + "." + co); - if (userSection == null) - return; - confusers.set("users." + player.toLowerCase().hashCode() + "." + co, null); - save(); - load(); - } - - static void clearSomething(String co, String player, String command) { - int pre2 = command.toLowerCase().hashCode(); - confusers.set("users." + player.toLowerCase().hashCode() + "." + co + "." + pre2, 0); - save(); - load(); - } - - static boolean coolDown(Player player, String pre) { - pre = pre.toLowerCase(); - int coolDownSeconds = 0; - coolDownSeconds = getCooldownGroup(player, pre, coolDownSeconds); - if (coolDownSeconds > 0 - && !player.hasPermission("booscooldowns.nocooldown") - && !player.hasPermission("booscooldowns.nocooldown." + pre)) { - return cd(player, pre, coolDownSeconds); - } - return false; + static void cancelCooldown(Player player, String pre) { + int pre2 = pre.toLowerCase().hashCode(); + confusers.set("users." + player.getName().toLowerCase().hashCode() + + ".cooldown." + pre2, null); } private static boolean cd(Player player, String pre, int coolDownSeconds) { @@ -224,10 +87,167 @@ public class boosCoolDownManager { } } - static void cancelCooldown(Player player, String pre) { + static void clear() { + ConfigurationSection userSection = confusers + .getConfigurationSection("users"); + if (userSection == null) + return; + for (String user : userSection.getKeys(false)) { + // clear cooldown + ConfigurationSection cooldown = confusers + .getConfigurationSection("users." + user + ".cooldown"); + if (cooldown != null) { + for (String key : cooldown.getKeys(false)) { + confusers.set("users." + user + ".cooldown." + key, null); + } + } + confusers.set("users." + user + ".cooldown", null); + + // clear warmup + ConfigurationSection warmup = confusers + .getConfigurationSection("users." + user + ".warmup"); + if (warmup != null) { + for (String key : warmup.getKeys(false)) { + confusers.set("users." + user + ".warmup." + key, null); + } + } + confusers.set("users." + user + ".warmup", null); + + confusers.set("users." + user, null); + } + save(); + load(); + } + + public static void clearSomething(String co, String player) { + ConfigurationSection userSection = confusers + .getConfigurationSection("users." + + player.toLowerCase().hashCode() + "." + co); + if (userSection == null) + return; + confusers.set("users." + player.toLowerCase().hashCode() + "." + co, + null); + save(); + load(); + } + + static void clearSomething(String co, String player, String command) { + int pre2 = command.toLowerCase().hashCode(); + confusers.set("users." + player.toLowerCase().hashCode() + "." + co + + "." + pre2, 0); + save(); + load(); + } + + static boolean coolDown(Player player, String pre) { + pre = pre.toLowerCase(); + int coolDownSeconds = 0; + coolDownSeconds = getCooldownGroup(player, pre, coolDownSeconds); + if (coolDownSeconds > 0 + && !player.hasPermission("booscooldowns.nocooldown") + && !player.hasPermission("booscooldowns.nocooldown." + pre)) { + return cd(player, pre, coolDownSeconds); + } + return false; + } + + private static int getCooldownGroup(Player player, String pre, + int coolDownSeconds) { + if (player.hasPermission("booscooldowns.cooldown2")) { + coolDownSeconds = boosConfigManager.getCoolDown2(pre); + } else if (player.hasPermission("booscooldowns.cooldown3")) { + coolDownSeconds = boosConfigManager.getCoolDown3(pre); + } else if (player.hasPermission("booscooldowns.cooldown4")) { + coolDownSeconds = boosConfigManager.getCoolDown4(pre); + } else if (player.hasPermission("booscooldowns.cooldown5")) { + coolDownSeconds = boosConfigManager.getCoolDown5(pre); + } else { + coolDownSeconds = boosConfigManager.getCoolDown(pre); + } + return coolDownSeconds; + } + + static Date getCurrTime() { + String currTime = ""; + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + currTime = sdf.format(cal.getTime()); + Date time = null; + + try { + time = sdf.parse(currTime); + return time; + } catch (ParseException e) { + return null; + } + } + + static void getLimits(Player player) { + int usesNum = 0; + int limitNum = 0; + int num; + String message; + String lim = boosConfigManager.getLimGrp(player); + ConfigurationSection uses = boosConfigManager.getLimits(player); + if (uses != null) { + for (String key : uses.getKeys(false)) { + usesNum = confusers.getInt("users." + + player.getName().toLowerCase().hashCode() + ".uses." + + key, usesNum); + if (lim.equals("limit")) { + limitNum = boosConfigManager.getLimit(key); + } else if (lim.equals("limit2")) { + limitNum = boosConfigManager.getLimit2(key); + } else if (lim.equals("limit3")) { + limitNum = boosConfigManager.getLimit3(key); + } else if (lim.equals("limit4")) { + limitNum = boosConfigManager.getLimit4(key); + } else if (lim.equals("limit5")) { + limitNum = boosConfigManager.getLimit5(key); + } + num = limitNum - usesNum; + if (num < 0) { + num = 0; + } + message = boosConfigManager.getLimitListMessage(); + message = message.replaceAll("&command&", key); + message = message.replaceAll("&limit&", + String.valueOf(limitNum)); + message = message.replaceAll("×&", String.valueOf(num)); + boosChat.sendMessageToPlayer(player, message); + } + } + } + + static Date getTime(Player player, String pre) { int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() + ".cooldown." + String confTime = ""; + confTime = confusers.getString("users." + + player.getName().toLowerCase().hashCode() + ".cooldown." + pre2, null); + + if (confTime != null && !confTime.equals("")) { + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + Date lastDate = null; + + try { + lastDate = sdf.parse(confTime); + return lastDate; + } catch (ParseException e) { + return null; + } + } + return null; + } + + static int getUses(Player player, String pre, String message) { + int pre2 = pre.toLowerCase().hashCode(); + int message2 = message.toLowerCase().hashCode(); + int uses = 0; + uses = confusers.getInt("users." + + player.getName().toLowerCase().hashCode() + ".uses." + pre2 + + message2, uses); + return uses; } static boolean checkCoolDownOK(Player player, String pre, String message) { @@ -276,65 +296,49 @@ public class boosCoolDownManager { return true; } - private static int getCooldownGroup(Player player, String pre, - int coolDownSeconds) { - if (player.hasPermission("booscooldowns.cooldown2")) { - coolDownSeconds = boosConfigManager.getCoolDown2(pre); - } else if (player.hasPermission("booscooldowns.cooldown3")) { - coolDownSeconds = boosConfigManager.getCoolDown3(pre); - } else if (player.hasPermission("booscooldowns.cooldown4")) { - coolDownSeconds = boosConfigManager.getCoolDown4(pre); - } else if (player.hasPermission("booscooldowns.cooldown5")) { - coolDownSeconds = boosConfigManager.getCoolDown5(pre); - } else { - coolDownSeconds = boosConfigManager.getCoolDown(pre); - } - return coolDownSeconds; - } - - static void setTime(Player player, String pre) { + static boolean checkWarmUpOK(Player player, String pre, String message) { int pre2 = pre.toLowerCase().hashCode(); - String currTime = ""; - Calendar cal = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - currTime = sdf.format(cal.getTime()); - confusers.set("users." + player.getName().toLowerCase().hashCode() + ".cooldown." - + pre2, currTime); + int ok = 0; + ok = confusers.getInt( + "users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, ok); + if (ok == 1) { + return true; + } + return false; } - static Date getCurrTime() { - String currTime = ""; - Calendar cal = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - currTime = sdf.format(cal.getTime()); - Date time = null; - + static void load() { try { - time = sdf.parse(currTime); - return time; - } catch (ParseException e) { - return null; + confusers.load(confFile); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); } } - static Date getTime(Player player, String pre) { + static void removeWarmUp(Player player, String pre, String message) { int pre2 = pre.toLowerCase().hashCode(); - String confTime = ""; - confTime = confusers.getString("users." - + player.getName().toLowerCase().hashCode() + ".cooldown." + pre2, null); + confusers.set("users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, null); + } - if (confTime != null && !confTime.equals("")) { - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - Date lastDate = null; + static void removeWarmUpOK(Player player, String pre, String message) { + int pre2 = pre.toLowerCase().hashCode(); + confusers.set("users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, null); + } - try { - lastDate = sdf.parse(confTime); - return lastDate; - } catch (ParseException e) { - return null; - } + static void save() { + try { + confFile.createNewFile(); + confusers.save(confFile); + } catch (IOException e) { + e.printStackTrace(); } - return null; } public static long secondsBetween(Calendar startDate, Calendar endDate) { @@ -347,33 +351,14 @@ public class boosCoolDownManager { return secondsBetween; } - static void setWarmUpOK(Player player, String pre, String message) { + static void setTime(Player player, String pre) { int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() + ".warmup." - + pre2, 1); - } - - static boolean checkWarmUpOK(Player player, String pre, String message) { - int pre2 = pre.toLowerCase().hashCode(); - int ok = 0; - ok = confusers.getInt("users." + player.getName().toLowerCase().hashCode() - + ".warmup." + pre2, ok); - if (ok == 1) { - return true; - } - return false; - } - - static void removeWarmUpOK(Player player, String pre, String message) { - int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() + ".warmup." - + pre2, null); - } - - static void removeWarmUp(Player player, String pre, String message) { - int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() + ".warmup." - + pre2, null); + String currTime = ""; + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + currTime = sdf.format(cal.getTime()); + confusers.set("users." + player.getName().toLowerCase().hashCode() + + ".cooldown." + pre2, currTime); } static void setUses(Player player, String pre, String message) { @@ -383,8 +368,9 @@ public class boosCoolDownManager { int uses = getUses(player, pre, message); uses = uses + 1; try { - confusers.set("users." + player.getName().toLowerCase().hashCode() - + ".uses." + pre2 + message2, uses); + confusers.set("users." + + player.getName().toLowerCase().hashCode() + ".uses." + + pre2 + message2, uses); } catch (IllegalArgumentException e) { boosCoolDown.log.warning("Player " + player.getName() + " used empty command and caused this error!"); @@ -394,21 +380,41 @@ public class boosCoolDownManager { } } - static int getUses(Player player, String pre, String message) { + static void setWarmUpOK(Player player, String pre, String message) { int pre2 = pre.toLowerCase().hashCode(); - int message2 = message.toLowerCase().hashCode(); - int uses = 0; - uses = confusers.getInt("users." + player.getName().toLowerCase().hashCode() - + ".uses." + pre2 + message2, uses); - return uses; + confusers.set("users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, 1); } public static void startAllCooldowns(Player player) { for (String a : boosConfigManager.getCooldownsList(player)) { coolDown(player, a); } - - + + } + + public boosCoolDownManager(boosCoolDown bCoolDown) { + confFile = new File(bCoolDown.getDataFolder(), "users.yml"); + + confusers = new YamlConfiguration(); + + if (confFile.exists()) { + try { + confusers.load(confFile); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + } else { + try { + confFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } } } diff --git a/src/cz/boosik/boosCooldown/boosPriceManager.java b/src/cz/boosik/boosCooldown/boosPriceManager.java index cf0ab0f..a476d9c 100644 --- a/src/cz/boosik/boosCooldown/boosPriceManager.java +++ b/src/cz/boosik/boosCooldown/boosPriceManager.java @@ -1,12 +1,12 @@ package cz.boosik.boosCooldown; +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.EconomyResponse; + import org.bukkit.entity.Player; import util.boosChat; -import net.milkbowl.vault.economy.Economy; -import net.milkbowl.vault.economy.EconomyResponse; - public class boosPriceManager { private static Economy economy = boosCoolDown.getEconomy(); diff --git a/src/cz/boosik/boosCooldown/boosWarmUpManager.java b/src/cz/boosik/boosCooldown/boosWarmUpManager.java index 134aad5..657942d 100644 --- a/src/cz/boosik/boosCooldown/boosWarmUpManager.java +++ b/src/cz/boosik/boosCooldown/boosWarmUpManager.java @@ -14,6 +14,54 @@ public class boosWarmUpManager { static Timer scheduler; + public static void cancelWarmUps(Player player) { + Iterator iter = playercommands.keySet().iterator(); + while (iter.hasNext()) { + if (iter.next().startsWith(player.getName() + "@")) { + killTimer(player); + iter.remove(); + } + } + } + + public static boolean hasWarmUps(Player player) { + for (String key : playercommands.keySet()) { + if (key.startsWith(player.getName() + "@")) { + return true; + } + } + return false; + } + + public static boolean isWarmUpProcess(Player player, String pre, + String message) { + pre = pre.toLowerCase(); + if (playercommands.containsKey(player.getName() + "@" + pre)) { + return true; + } + return false; + } + + // public static void cancelWarmUps(Player player) { + // for (String key : playercommands.keySet()) { + // if (key.startsWith(player.getName() + "@")) { + // removeWarmUpProcess(key); + // } + // } + // } + + public static void killTimer(Player player) { + for (String key : playercommands.keySet()) { + if (key.startsWith(player.getName() + "@")) { + playercommands.get(key).cancel(); + } + } + } + + public static void removeWarmUpProcess(String tag) { + boosWarmUpManager.playercommands.remove(tag); + } + public static void startWarmUp(boosCoolDown bCoolDown, Player player, String pre, String message, int warmUpSeconds) { pre = pre.toLowerCase(); @@ -49,52 +97,4 @@ public class boosWarmUpManager { boosChat.sendMessageToPlayer(player, msg); } } - - public static boolean isWarmUpProcess(Player player, String pre, - String message) { - pre = pre.toLowerCase(); - if (playercommands.containsKey(player.getName() + "@" + pre)) { - return true; - } - return false; - } - - public static void removeWarmUpProcess(String tag) { - boosWarmUpManager.playercommands.remove(tag); - } - - // public static void cancelWarmUps(Player player) { - // for (String key : playercommands.keySet()) { - // if (key.startsWith(player.getName() + "@")) { - // removeWarmUpProcess(key); - // } - // } - // } - - public static void cancelWarmUps(Player player) { - Iterator iter = playercommands.keySet().iterator(); - while (iter.hasNext()) { - if (iter.next().startsWith(player.getName() + "@")) { - killTimer(player); - iter.remove(); - } - } - } - - public static void killTimer(Player player) { - for (String key : playercommands.keySet()) { - if (key.startsWith(player.getName() + "@")) { - playercommands.get(key).cancel(); - } - } - } - - public static boolean hasWarmUps(Player player) { - for (String key : playercommands.keySet()) { - if (key.startsWith(player.getName() + "@")) { - return true; - } - } - return false; - } } diff --git a/src/cz/boosik/boosCooldown/boosWarmUpTimer.java b/src/cz/boosik/boosCooldown/boosWarmUpTimer.java index ffea6c0..77bc13a 100644 --- a/src/cz/boosik/boosCooldown/boosWarmUpTimer.java +++ b/src/cz/boosik/boosCooldown/boosWarmUpTimer.java @@ -2,6 +2,7 @@ package cz.boosik.boosCooldown; import java.util.Timer; import java.util.TimerTask; + import org.bukkit.entity.Player; public class boosWarmUpTimer extends TimerTask { diff --git a/src/org/mcstats/MetricsLite.java b/src/org/mcstats/MetricsLite.java index 0c6526e..6bc62c4 100644 --- a/src/org/mcstats/MetricsLite.java +++ b/src/org/mcstats/MetricsLite.java @@ -28,13 +28,6 @@ package org.mcstats; -import org.bukkit.Bukkit; -import org.bukkit.configuration.InvalidConfigurationException; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginDescriptionFile; -import org.bukkit.scheduler.BukkitTask; - import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -48,6 +41,13 @@ import java.net.URLEncoder; import java.util.UUID; import java.util.logging.Level; +import org.bukkit.Bukkit; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginDescriptionFile; +import org.bukkit.scheduler.BukkitTask; + public class MetricsLite { /** diff --git a/src/plugin.yml b/src/plugin.yml index 15b4b85..4209b63 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: boosCooldowns main: cz.boosik.boosCooldown.boosCoolDown -version: 3.2.0 +version: 3.3.0 authors: [LordBoos (ingame name boosik)] softdepend: [Vault] description: >