From 304cbed516e886c8cf18550dd05b958e8c9ce740 Mon Sep 17 00:00:00 2001 From: Boosik Date: Tue, 1 Jan 2013 15:57:15 +0100 Subject: [PATCH] updated metrics, added option to disable limits (and logging to users.yml) --- .classpath | 4 +- .../boosCooldown/boosConfigManager.class | Bin 16293 -> 16383 bytes bin/cz/boosik/boosCooldown/boosCoolDown.class | Bin 9436 -> 9444 bytes .../boosCooldown/boosCoolDownManager.class | Bin 12059 -> 12158 bytes .../boosCooldown/boosPriceManager.class | Bin 1862 -> 1862 bytes .../boosCooldown/boosWarmUpManager.class | Bin 4514 -> 4514 bytes .../boosWarmUpTimer$boosWarmUpRunnable.class | Bin 2141 -> 2153 bytes .../boosik/boosCooldown/boosWarmUpTimer.class | Bin 1721 -> 1725 bytes bin/org/mcstats/MetricsLite$1.class | Bin 1981 -> 1842 bytes bin/org/mcstats/MetricsLite.class | Bin 7898 -> 9051 bytes bin/plugin.yml | 2 +- bin/util/boosChat.class | Bin 3182 -> 3270 bytes .../boosCooldown/boosConfigManager.java | 77 +-- src/cz/boosik/boosCooldown/boosCoolDown.java | 273 ++++---- .../boosCooldown/boosCoolDownManager.java | 104 +-- .../boosik/boosCooldown/boosPriceManager.java | 9 +- .../boosCooldown/boosWarmUpManager.java | 25 +- .../boosik/boosCooldown/boosWarmUpTimer.java | 16 +- src/org/mcstats/MetricsLite.java | 600 ++++++++++-------- src/plugin.yml | 2 +- src/util/boosChat.java | 156 +++-- 21 files changed, 697 insertions(+), 571 deletions(-) diff --git a/.classpath b/.classpath index b6638b5..49dd4b2 100644 --- a/.classpath +++ b/.classpath @@ -2,7 +2,7 @@ - - + + diff --git a/bin/cz/boosik/boosCooldown/boosConfigManager.class b/bin/cz/boosik/boosCooldown/boosConfigManager.class index 28fa240edc1a738a3c648f6a2cac0ff48232f1cd..9f014acfd8c59904cf3df87b30a21631b3670089 100644 GIT binary patch literal 16383 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 CKJMuN diff --git a/bin/cz/boosik/boosCooldown/boosCoolDown.class b/bin/cz/boosik/boosCooldown/boosCoolDown.class index 10d9c1ec424111405656c4f6f0795b558a3a48ab..f062f1fdb89319de0935e7582db5d5fc16eeae01 100644 GIT binary patch delta 781 zcmWlXc}&k?9LHau=Xo6cNE8c8lUy5XnEc~f&XSn1Vdf|zS4EDw`Uz1Y$2XcBMVb_m za!1Y_%{gg#U);?9+)n($N~o8!C-tC zLTiT7fl#^=Mo)$jOgO{s8b!F{@(*#JA(DGU@r6uKykQz|iRK&AsbhwC5F?(< zl;+Hm7R;8e%#q$U`&kcRt_&nrMi3|Ch?i;1lNjbp90?N70$ImG*}@{(Zh42D?P9U) zVX5S?ObS`ayhu+>W|I zrm7@M-Djt&Vwb96xBA2$^_^_>gT30YPkWH7UF_GMHk*>Cy*Z%Ukgq#&Q1_rf_oYyW za!8Nnu%1Yfj^T(-;HXZdSf_GKXHcTEDb)oW*T*@bFK|* z;+(Fd%)oi$qTKj%!31&9^s(NbOD2S?W&jl?oNHzb*Ufltn90_oxMHHYX=ZTC%;UCk zbH}7uPUEiG$Rm@^W0T1flfzS!$1_uCy@-cK7gJTzuWh7AwUZOjU0yr)14eq*;LAJw zsUd*(PEfmq4j-w{CtQ5Si!XTF^tIlSulU)TbmTkTsC6pZMaUYbdEmFnlk7SCvNwMd zXiLzyi6LF;ktOxXl?LQXLyE1Jii?xdh Y5v#?^iETf@$J@RRl-(lP|4DNG0d=3t^#A|> delta 805 zcmW-fc}&k?9LHau=Xo4873Ip(q=?NQ7=PHvk}DN|Xe%~DqTCXjLSI*u$nncjqG&nF zQ7XBQo`f-9#a}E|*v# zwXBpn(&QnIBTcN5Ppp>TtWoW7loxAN2i7S+(p4YUtA1=ygUL|C$y8BnR54_!*_P+A zNiATrN+DaNvqfdHRc&XR%4fSO!KEt6QP(ZsVuz|_x4KWRY9vp+WsmwuzWUBy^%JK+ z8w#}>`?Wg_16lrgYb$1TxU=Hbl9M;1)qQ_FACsL}Xa8xI9Oeb?(r*T4OQl@h# z*9Dx^B~<7tD)nWmbSP#y4j6=Oix17Oklf`|r znMWp@$7UB#Od(HAF^#6w@^K!Ta-I=j1$jUxDq?!Xio9@@1q_hauBLzq9`ESFd;EE4 zXFj+>dM5Y!L~B0d&KJC_8s0X$SnkR<{P<39e$by^u7;jbvdI+`_|=((uif5kC;t%0 zUxo=*!oP%z5G9Ie(N++HBdy4=b(XXyTiTE(Z7H(S9Ts=WEmulAs;z)E;>m6CqF&nb q*m9$E;JNs;{Gl_-zSU&)?rqbXdy?zQ4hr+>)YARm6DhE#lEQzECCv^1 diff --git a/bin/cz/boosik/boosCooldown/boosCoolDownManager.class b/bin/cz/boosik/boosCooldown/boosCoolDownManager.class index 5c28a0aa2ba4044ba37dfbdf24ac058b5093cf25..1d8fefe137976ff3c09b4f4099f828cca686fb46 100644 GIT binary patch delta 1457 zcmXYx2~bvL6o#LJKm3ZQ2;t5unzH>W;6fUPnxbgTm=kE4n20Eg0j`O-Tdv@3a!hB+ zM9p0BFGSobZF9;j%Pk8Xr%@}*7F#s6*Qq;q?)%O6o$s9UzUQ2~VcflO{wMC$9|02W zP>uhkhdisTI>5Hj*$B+bEz8I+%r7e)RFpHJAa|laX4?Yn4cl(GbvUXtx6~Gc=@A^F2DwEXbLiTN2UOYMk;APome}cH3JY1eIa-iDClzEXcf_{rW0!zL?uJ0Vi;?k%CMEq))U7o zc-TM>HacCymxsQJucEuzL~~vzh|PpjO;5Jak8RGW@KpQG8yK;|D$bBBsypywCjsmd z&E2B8hj#4Ml^TWIM_&<06J}7$2sxZB_n`D*lgX z-&O7JGef!0H)E~&u+AE>QMk!mY!#pF!rkUay}3DRjX5s-*qU(i0nZpM&RA0s2~hIQ zxFWn}&AA}~ZVGQ%OYTUByVlCvr*oQhZBKx8prwTpVPSN#aFQ&7J{HLki(!N>(LD6GZnE|;%(^@IU8*9Ja9J{qttY|KxP$d3%pM`y z`f4cq(ZwEh+IPLueSmxol&?XA*yAJ!d)N^9N|&FZjIiN~I)W^Fg3*@A(>Bua#B2+B z3Ln+S*G4PvF$8Me#>P57#7KH4E;g-oE9sBr$YKIf_AK$jZZ^>=k6j#^r`^f8EuV1J zHcr^hrjl$0^s*u+EH2&VI^V~o2LI=yMAoJ9QAUiFI!W>IPD7mke-{5onI((avX~=_ z*^2bM(>p$~UAS69IWVoxHm_%DY%LoyVq)X!Y^zfdpIi}};@W3#9%Mpxu)?lTydn{{r+>ov@6`)||H2US{sRA*+wsE{>Mq*4l3N#V6pw@TgQIF}O= L-Su+fV+a2QC6vcl#a&zN~M8zG?#Ek?=?oE(T4J9v%3S*QaExo9Ol+d6aRl!u_)#vHZ zq7S9s?@I_RO_^zFOI2y51|8E*wN2mpLUhso)0s18op1K{t-aUU`#W``R*mu;uRCxE z$h4|mo=Z(4&DKTPo3`GG@eYpI7-gGmvs3JC8@<(V51Kf7*0?fXq-}RrdOJkywB2so z<(%}!H3~6a@foAbN+*;SyKQgiy7#Ed3PaT`W30TCmP$}W7{!EBf`>j(|Mi8SkDYX%%n=uw|Sgu=5U0$yiYl&wfhqDsbvAbis1$e z>85OhiPXD}bJT>!#`Um-Mbu+4tyzSRB_y$wwk)H!67}U7`tz()9lxyMassTN122)m z%T8hIC2^~9@d|EUC7Rc0tb*cL!=1cA57s&6%eLB3u5YQ8U!bcpZX|+DM6p>4w@Beu zTChz=wkzch?q(->!UE|T$X@QFk_XsFkp1$fN?Kj%GaIL1Ye2f4xrT;oH7kIW_XaKd6ZX^n+V`PdRUWf^>8T{&&tgxP#* zd7QC+oV6i*W+OOfqo}cOY2eLF^iB+H>Xndan>Rw zqP`0Ea9Q|`HK5j__(^!xqPZqxZdh!nq+On+G$YEIbBDFSXDw-Kt>|oVWLZ3Ytu+J8 z#~@2!s3kgQ+OJD!kIRy&Zz(jiRGOQgL<`Wz(zH83e@k~(CO@ChiEw!xX_>@YXIfbo z;_WVyEQ@yXKH0iE1u2(1<%la+TzMo|KIy^?>rIZ`Bc47Cw0o7cKf|qnLL0z?HpmI4 zZtxBv%Gk}RQ*ilm?eF)iLp7V^$EHQd)i#`t(*}yk1@h=w&3<<@BD8Cw=TOFREy@N zSB0o={dF!A)<+bUIdzT!;@yGbtLZdSMn>M_i1dlJ>VTR*{?^r7B` ds^uwpSE0TwQY{slkHt=}4w>$KA_%kn{{V})GuQwC diff --git a/bin/cz/boosik/boosCooldown/boosPriceManager.class b/bin/cz/boosik/boosCooldown/boosPriceManager.class index 16cc6ca9ddfd2d66e5485b9ea2ebaef71cc63b7e..73afe2e0cc28c80d6169b423610169f6e26952c1 100644 GIT binary patch delta 69 zcmX@ccZ_etGB!(o1~vu(1`Y-x22loK23a7f#vsPv!XU!n$so=U%pk!K$soxP%^=N? V!XU$t1*G$Vs!AE;Cf{dE2LN0E3LyXh delta 69 zcmX@ccZ_etGB!(I1~vvh1`Y;(22ln923ZCn1~mp@1{VfF22TbNhG3v*B!d`3G=l^~ W3WFp=7Ld+okYXrhke+;>Egb+>sR{M~ diff --git a/bin/cz/boosik/boosCooldown/boosWarmUpManager.class b/bin/cz/boosik/boosCooldown/boosWarmUpManager.class index 8b3709c467167d2b427f4b727423e8768b8ee157..75529418fb998f11b6f2e71a6e19ff33db4e1df7 100644 GIT binary patch delta 51 zcmZ3ayhwS&G6BI*21$l61`CF81~-OK27iXA$=e0y3dRCO^3|0)W49*NmlT!t4 E0YLx@jsO4v delta 51 zcmZ3ayhwS&G6BI521$lc1`CET1~-Nf27iXg$=e0y3dR6MV}YV^3|0&=49*ORlT!t4 E0YDH7ga7~l diff --git a/bin/cz/boosik/boosCooldown/boosWarmUpTimer$boosWarmUpRunnable.class b/bin/cz/boosik/boosCooldown/boosWarmUpTimer$boosWarmUpRunnable.class index 3ede1de3dd5e326b4d28b24073ab25b282ff4ac5..2e628d9f7f0b83713b7047903af7b85206dca24c 100644 GIT binary patch delta 146 zcmWN`Jr2PD9ES1dC27P*Qc6rkeN&W*jmZ_vwVGI&%x0s_2_%l-0xn?Z7XHig8=jB* zb00+~s8a&+$eP8YY>Eo5H3upG89O&^6RI`>YBULHv8GKzhn=~n%aI;;`n(wMX2_RN fX+|oT9%K1T6cK63R2ybG5bI=~nd`#h+Q_W_AOI5t delta 134 zcmW;By$-=(97o~vBWc7(^0s9p>a(;6Gm|^OY&NknnLBs1xdMqBaRYYl!atVt4Cm|K z?%{h;ivXx1YnhO`DH=Fy1q%Li;oY>|{70LFh&3JdbUBzudYtKVXTXagA7T|5sb+?Z X)g;l9R68a*G1bMqGE>GpPfM#GKgAIw diff --git a/bin/cz/boosik/boosCooldown/boosWarmUpTimer.class b/bin/cz/boosik/boosCooldown/boosWarmUpTimer.class index e1fcc3e3fa088be19573d3e428649c1703953a92..e131fd27b436a012ab5046dfd3c09574b11d3a71 100644 GIT binary patch delta 33 pcmdnVyO(#v4pzp%$vasM`1u%^85kI(8F(0E7~~jaCx2l*3ILJ>2fzRT delta 29 lcmdnXyOVdr4pv6r$vasMxVadZ7#J9&8RQsbCjVeP3IKbC2aW&$ diff --git a/bin/org/mcstats/MetricsLite$1.class b/bin/org/mcstats/MetricsLite$1.class index 183a570a61bc9a6eacd91d556b1baa2559b05d7f..5bde2bb4816f449fa739b36f7edfa9b71a382694 100644 GIT binary patch delta 721 zcmYL{TTfF#6otR(X?vg?5ooxDDw06ci&(7{g@RYAf(7KNfT*?BT5MWFtI( zMdOP5sW5fBWR++TLHXLWt78Ra~elh)?)HY}Lbqdb(4toHd9&s!?*xxp6qm4Cn|>Qq%- z=}gqqpt1>^Tv0qhL}gC&pZImOUY%>-F%9Z8{Z_cpk&ktobHJ%Ka9sf=VoDgy>ifh= MsK}-ygz{?q0l1!+tpET3 delta 876 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 E1zOD}t^fc4 literal 7898 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 diff --git a/bin/util/boosChat.class b/bin/util/boosChat.class index aabcb0dc507ad37eb1a1e42ff543f11c4c8b272f..fb7a7e7fe69eb7d2cbb33d1de9b89674f41817b2 100644 GIT binary patch delta 316 zcmWNNJ1m1?6o#MEkUziHrEYEAmAaQAsV1dVtFCF3#I+r0gMme2kzmwGB;RhgNti@p zBWwmUyToXA#`itR^FBGh-WT89qvdb}?w_nvxwxVOa8p7xmDJEcEdlBXQBM>PDZFIx zk=4sSjU3a&8O;=F!O+SLZQRn%1Ad;B^-d?BO8BOWAG-OYM}%H+(I+1I#m|5Q2}*=P zNib9;X+pBeuoM`P14hk}ow37|GDZav^J>4v$FZ4Ey_n8VDt?L}al%Y%N-#%K1!ve& z)jYEtYIDLo=PYo^BG)XLkFs3(vNAJDSW&rE6Llu-HEq^$v0;kNw7snni6biZE0w&F?gWw&=%w* ztqBc%hjziw(0{z{;m19XEu$YZYeoHjep!#IQpN`a@esl#OouflM0jDHcQ%+3WkF1( z*i<9pYRs0pW7~Y|p-!+$5zXWe92(}&9_W_TrBvHgoI$XI#T5b3L-gcv I-@G}cf6-_p2mk;8 diff --git a/src/cz/boosik/boosCooldown/boosConfigManager.java b/src/cz/boosik/boosCooldown/boosConfigManager.java index 232f301..23cb582 100644 --- a/src/cz/boosik/boosCooldown/boosConfigManager.java +++ b/src/cz/boosik/boosCooldown/boosConfigManager.java @@ -17,7 +17,8 @@ public class boosConfigManager { private static YamlConfiguration conf; private static File confFile; static List players = new LinkedList(); -//test + + // test @SuppressWarnings("static-access") public boosConfigManager(boosCoolDown boosCoolDown) { confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); @@ -49,6 +50,7 @@ public class boosConfigManager { conf.addDefault("options.options.clear_cooldowns_on_death", false); conf.addDefault("options.options.command_logging", false); conf.addDefault("options.options.command_signs", false); + conf.addDefault("options.options.enable_limits", true); conf.addDefault("options.units.seconds", "seconds"); conf.addDefault("options.units.minutes", "minutes"); conf.addDefault("options.units.hours", "hours"); @@ -75,7 +77,8 @@ public class boosConfigManager { "&6Price of&e &command& &6was&e %s &6and you now have&e %s"); conf.addDefault("options.messages.limit_achieved", "&6You cannot use this command anymore!&f"); - conf.addDefault("options.messages.limit_list", + conf.addDefault( + "options.messages.limit_list", "&6Limit for command &e&command&&6 is &e&limit&&6. You can still use it &e×&&6 times.&f"); conf.addDefault("options.messages.interact_blocked_during_warmup", "&6You can't do this when command is warming-up!&f"); @@ -133,7 +136,8 @@ public class boosConfigManager { conf.addDefault("commands.links.linkGroups.yourNameHere", Arrays.asList(def2)); conf.addDefault("commands.aliases./newcommand", "/originalcommand"); - conf.addDefault("commands.aliases./new spawn command", "/original spawn command"); + conf.addDefault("commands.aliases./new spawn command", + "/original spawn command"); conf.save(confFile); } catch (IOException e) { e.printStackTrace(); @@ -191,24 +195,24 @@ public class boosConfigManager { 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")){ + if (coSetnout.contains("cooldown")) { sekce = "cooldowns"; - } else if (coSetnout.contains("warmup")){ + } else if (coSetnout.contains("warmup")) { sekce = "warmups"; - } else if (coSetnout.contains("limit")){ + } else if (coSetnout.contains("limit")) { sekce = "limits"; - } else if (coSetnout.contains("price")){ + } else if (coSetnout.contains("price")) { sekce = "prices"; } else { return; } reload(); - conf.set("commands."+sekce+"."+coSetnout+"." + co, hodnota); + conf.set("commands." + sekce + "." + coSetnout + "." + co, hodnota); try { conf.save(confFile); } catch (IOException e) { @@ -457,52 +461,49 @@ public class boosConfigManager { 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 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")) { + + public static String getLimGrp(Player player) { + String lim; + if (player.hasPermission("booscooldowns.limit2")) { lim = "limit2"; - } else if (player.hasPermission( - "booscooldowns.limit3")) { + } else if (player.hasPermission("booscooldowns.limit3")) { lim = "limit3"; - } else if (player.hasPermission( - "booscooldowns.limit4")) { + } else if (player.hasPermission("booscooldowns.limit4")) { lim = "limit4"; - } else if (player.hasPermission( - "booscooldowns.limit5")) { + } else if (player.hasPermission("booscooldowns.limit5")) { lim = "limit5"; } else { lim = "limit"; } - return lim; + return lim; } - - public static ConfigurationSection getLimits(Player player){ + + public static ConfigurationSection getLimits(Player player) { String lim = getLimGrp(player); - ConfigurationSection uses = conf - .getConfigurationSection("commands.limits." + lim); - return uses; + ConfigurationSection uses = conf + .getConfigurationSection("commands.limits." + lim); + return uses; } - - public static ConfigurationSection getAliases(){ + + public static ConfigurationSection getAliases() { ConfigurationSection aliases = conf .getConfigurationSection("commands.aliases"); return aliases; } - - public static String getAlias(String message){ + + public static String getAlias(String message) { return conf.getString("commands.aliases." + message); } public static boolean getSignCommands() { - return conf.getBoolean("options.options.command_signs", - false); + return conf.getBoolean("options.options.command_signs", false); } public static String getCannotUseSignMessage() { @@ -514,4 +515,8 @@ public class boosConfigManager { 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); + } } diff --git a/src/cz/boosik/boosCooldown/boosCoolDown.java b/src/cz/boosik/boosCooldown/boosCoolDown.java index 24e99e7..17b0e67 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDown.java +++ b/src/cz/boosik/boosCooldown/boosCoolDown.java @@ -42,10 +42,10 @@ public class boosCoolDown extends JavaPlugin { boosCoolDownManager.clear(); } try { - MetricsLite metrics = new MetricsLite(this); - metrics.start(); + MetricsLite metrics = new MetricsLite(this); + metrics.start(); } catch (IOException e) { - // Failed to submit the stats :-( + // Failed to submit the stats :-( } } @@ -66,152 +66,150 @@ public class boosCoolDown extends JavaPlugin { public boolean onCommand(CommandSender sender, Command c, String commandLabel, String[] args) { String command = c.getName().toLowerCase(); - if (command.equalsIgnoreCase("booscooldowns")) { - if (args.length == 1) { - if (sender.hasPermission("booscooldowns.reload") - && args[0].equalsIgnoreCase("reload")) { - boosConfigManager.reload(); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " config reloaded"); - return true; - } - if (sender.hasPermission("booscooldowns.list.limits") - && args[0].equalsIgnoreCase("limits")) { - try { - Player send = (Player) sender; - boosCoolDownManager.getLimits(send); - } catch (ClassCastException e) { - log.warning("You cannot use this command from console!"); - } - return true; - } + if (command.equalsIgnoreCase("booscooldowns")) { + if (args.length == 1) { + if (sender.hasPermission("booscooldowns.reload") + && args[0].equalsIgnoreCase("reload")) { + boosConfigManager.reload(); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " config reloaded"); + return true; } - if (args.length == 2) { - String jmeno = args[1]; - if (sender.hasPermission("booscooldowns.clearcooldowns") - && args[0].equalsIgnoreCase("clearcooldowns")) { - String co = "cooldown"; - boosCoolDownManager.clearSomething(co, jmeno); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " cooldowns of player " + jmeno + " cleared"); - return true; - } else if (sender.hasPermission("booscooldowns.clearuses") - && command.equalsIgnoreCase("booscooldowns") - && args[0].equalsIgnoreCase("clearuses")) { - String co = "uses"; - boosCoolDownManager.clearSomething(co, jmeno); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " uses of player " + jmeno + " cleared"); - return true; - } else if (sender.hasPermission("booscooldowns.clearwarmups") - && command.equalsIgnoreCase("booscooldowns") - && args[0].equalsIgnoreCase("clearwarmups")) { - String co = "warmup"; - boosCoolDownManager.clearSomething(co, jmeno); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " warmups of player " + jmeno + " cleared"); + if (sender.hasPermission("booscooldowns.list.limits") + && args[0].equalsIgnoreCase("limits")) { + try { + Player send = (Player) sender; + boosCoolDownManager.getLimits(send); + } catch (ClassCastException e) { + log.warning("You cannot use this command from console!"); + } + return true; + } + } + if (args.length == 2) { + String jmeno = args[1]; + if (sender.hasPermission("booscooldowns.clearcooldowns") + && args[0].equalsIgnoreCase("clearcooldowns")) { + String co = "cooldown"; + boosCoolDownManager.clearSomething(co, jmeno); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " cooldowns of player " + jmeno + + " cleared"); + return true; + } else if (sender.hasPermission("booscooldowns.clearuses") + && command.equalsIgnoreCase("booscooldowns") + && args[0].equalsIgnoreCase("clearuses")) { + String co = "uses"; + boosCoolDownManager.clearSomething(co, jmeno); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " uses of player " + jmeno + " cleared"); + return true; + } else if (sender.hasPermission("booscooldowns.clearwarmups") + && command.equalsIgnoreCase("booscooldowns") + && args[0].equalsIgnoreCase("clearwarmups")) { + String co = "warmup"; + boosCoolDownManager.clearSomething(co, jmeno); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " warmups of player " + jmeno + + " cleared"); + return true; + } + } + if (args.length == 3) { + String jmeno = args[1]; + String command2 = args[2].trim(); + if (sender.hasPermission("booscooldowns.clearcooldowns") + && args[0].equalsIgnoreCase("clearcooldowns")) { + String co = "cooldown"; + boosCoolDownManager.clearSomething(co, jmeno, command2); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " cooldown for command " + command2 + + " of player " + jmeno + " cleared"); + return true; + } else if (sender.hasPermission("booscooldowns.clearuses") + && args[0].equalsIgnoreCase("clearuses")) { + String co = "uses"; + boosCoolDownManager.clearSomething(co, jmeno, command2); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " uses for command " + command2 + + " of player " + jmeno + " cleared"); + return true; + } else if (sender.hasPermission("booscooldowns.clearwarmups") + && args[0].equalsIgnoreCase("clearwarmups")) { + String co = "warmup"; + boosCoolDownManager.clearSomething(co, jmeno, command2); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " warmups for command " + command2 + + " of player " + jmeno + " cleared"); + return true; + } + } + if (args.length == 4) { + if (sender.hasPermission("booscooldowns.set") + && args[0].equalsIgnoreCase("set")) { + String coSetnout = args[1]; + String co = args[2]; + int hodnota = 0; + try { + hodnota = Integer.valueOf(args[3]); + } catch (Exception e) { + boosChat.sendMessageToCommandSender(sender, + "Added value must be number!"); return true; } - } - if (args.length == 3) { - String jmeno = args[1]; - String command2 = args[2].trim(); - if (sender.hasPermission("booscooldowns.clearcooldowns") - && args[0].equalsIgnoreCase("clearcooldowns")) { - String co = "cooldown"; - boosCoolDownManager.clearSomething(co, jmeno, command2); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " cooldown for command " + command2 - + " of player " + jmeno + " cleared"); - return true; - } else if (sender.hasPermission("booscooldowns.clearuses") - && args[0].equalsIgnoreCase("clearuses")) { - String co = "uses"; - boosCoolDownManager.clearSomething(co, jmeno, command2); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " uses for command " + command2 - + " of player " + jmeno + " cleared"); - return true; - } else if (sender.hasPermission("booscooldowns.clearwarmups") - && args[0].equalsIgnoreCase("clearwarmups")) { - String co = "warmup"; - boosCoolDownManager.clearSomething(co, jmeno, command2); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " warmups for command " + command2 - + " of player " + jmeno + " cleared"); - return true; - } - } - if (args.length == 4) { - if (sender.hasPermission("booscooldowns.set") - && args[0].equalsIgnoreCase("set")) { - String coSetnout = args[1]; - String co = args[2]; - int hodnota = 0; - try { - hodnota = Integer.valueOf(args[3]); - } catch (Exception e) { - boosChat.sendMessageToCommandSender(sender, - "Added value must be number!"); + if (co.startsWith("/")) { + if (coSetnout.equals("cooldown") + || coSetnout.equals("cooldown2") + || coSetnout.equals("cooldown3") + || coSetnout.equals("cooldown4") + || coSetnout.equals("cooldown5") + || coSetnout.equals("warmup") + || coSetnout.equals("warmup2") + || coSetnout.equals("warmup3") + || coSetnout.equals("warmup4") + || coSetnout.equals("warmup5") + || coSetnout.equals("limit") + || coSetnout.equals("limit2") + || coSetnout.equals("limit3") + || coSetnout.equals("limit4") + || coSetnout.equals("limit5") + || coSetnout.equals("price") + || coSetnout.equals("price2") + || coSetnout.equals("price3") + || coSetnout.equals("price4") + || coSetnout.equals("price5")) { + boosConfigManager.setAddToConfigFile(coSetnout, co, + hodnota); + boosChat.sendMessageToCommandSender(sender, "&6[" + + pdfFile.getName() + "]&e" + " " + + coSetnout + " for command " + co + + " is now set to " + hodnota); return true; - } - if (co.startsWith("/")) { - if (coSetnout.equals("cooldown") - || coSetnout.equals("cooldown2") - || coSetnout.equals("cooldown3") - || coSetnout.equals("cooldown4") - || coSetnout.equals("cooldown5") - || coSetnout.equals("warmup") - || coSetnout.equals("warmup2") - || coSetnout.equals("warmup3") - || coSetnout.equals("warmup4") - || coSetnout.equals("warmup5") - || coSetnout.equals("limit") - || coSetnout.equals("limit2") - || coSetnout.equals("limit3") - || coSetnout.equals("limit4") - || coSetnout.equals("limit5") - || coSetnout.equals("price") - || coSetnout.equals("price2") - || coSetnout.equals("price3") - || coSetnout.equals("price4") - || coSetnout.equals("price5")) { - boosConfigManager.setAddToConfigFile(coSetnout, - co, hodnota); - boosChat.sendMessageToCommandSender(sender, - "&6[" + pdfFile.getName() + "]&e" + " " - + coSetnout + " for command " - + co + " is now set to " - + hodnota); - return true; - } else { - boosChat.sendMessageToCommandSender( - sender, - "&6[" - + pdfFile.getName() - + "]&e" - + " You can only set cooldown, cooldown2, cooldown3, cooldown4, cooldown5, warmup, warmup2, warmup3, warmup4, warmup5, limit, limit2, limit3, limit4, limit5, price, price2, price3, price4, price5."); - return true; - } } else { boosChat.sendMessageToCommandSender( sender, "&6[" + pdfFile.getName() + "]&e" - + " Added command have to start with \"/\"."); + + " You can only set cooldown, cooldown2, cooldown3, cooldown4, cooldown5, warmup, warmup2, warmup3, warmup4, warmup5, limit, limit2, limit3, limit4, limit5, price, price2, price3, price4, price5."); return true; } + } else { + boosChat.sendMessageToCommandSender(sender, "&6[" + + pdfFile.getName() + "]&e" + + " Added command have to start with \"/\"."); + return true; } } - + } + } else { boosChat.sendMessageToCommandSender( sender, @@ -266,13 +264,12 @@ public class boosCoolDown extends JavaPlugin { + " economy plugin not found, disabling prices support."); } } else { - log.info("[" - + pdfFile.getName() - + "]" + 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/boosCoolDownManager.java b/src/cz/boosik/boosCooldown/boosCoolDownManager.java index bc1b420..e2048a1 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDownManager.java +++ b/src/cz/boosik/boosCooldown/boosCoolDownManager.java @@ -107,7 +107,9 @@ public class boosCoolDownManager { ConfigurationSection uses = boosConfigManager.getLimits(player); if (uses != null) { for (String key : uses.getKeys(false)) { - usesNum = confusers.getInt("users." + player.getName().toLowerCase() + ".uses." + key, usesNum); + usesNum = confusers.getInt("users." + + player.getName().toLowerCase() + ".uses." + key, + usesNum); if (lim.equals("limit")) { limitNum = boosConfigManager.getLimit(key); } else if (lim.equals("limit2")) { @@ -120,14 +122,15 @@ public class boosCoolDownManager { limitNum = boosConfigManager.getLimit5(key); } num = limitNum - usesNum; - if (num < 0){ + 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); + 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); } } } @@ -156,11 +159,11 @@ public class boosCoolDownManager { 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); - } + if (coolDownSeconds > 0 + && !player.hasPermission("booscooldowns.nocooldown") + && !player.hasPermission("booscooldowns.nocooldown." + pre)) { + return cd(player, pre, coolDownSeconds); + } return false; } @@ -211,11 +214,10 @@ public class boosCoolDownManager { boosConfigManager.getUnitHoursMessage()); } else { String secs = Long.toString(waitSeconds); - if (secs.equals("0")){ + if (secs.equals("0")) { secs = "1"; } - msg = msg.replaceAll("&seconds&", - secs); + msg = msg.replaceAll("&seconds&", secs); msg = msg.replaceAll("&unit&", boosConfigManager.getUnitSecondsMessage()); } @@ -226,7 +228,8 @@ public class boosCoolDownManager { } static void cancelCooldown(Player player, String pre) { - confusers.set("users." + player.getName().toLowerCase() + ".cooldown." + pre, null); + confusers.set("users." + player.getName().toLowerCase() + ".cooldown." + + pre, null); } static boolean checkCoolDownOK(Player player, String pre, String message) { @@ -277,17 +280,17 @@ public class boosCoolDownManager { 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); - } + 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; } @@ -297,8 +300,8 @@ public class boosCoolDownManager { 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() + ".cooldown." + pre, - currTime); + confusers.set("users." + player.getName().toLowerCase() + ".cooldown." + + pre, currTime); } static Date getCurrTime() { @@ -319,8 +322,8 @@ public class boosCoolDownManager { static Date getTime(Player player, String pre) { pre = pre.toLowerCase(); String confTime = ""; - confTime = confusers.getString("users." + player.getName().toLowerCase() - + ".cooldown." + pre, null); + confTime = confusers.getString("users." + + player.getName().toLowerCase() + ".cooldown." + pre, null); if (confTime != null && !confTime.equals("")) { SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); @@ -348,14 +351,15 @@ public class boosCoolDownManager { static void setWarmUpOK(Player player, String pre, String message) { pre = pre.toLowerCase(); - confusers.set("users." + player.getName().toLowerCase() + ".warmup." + pre, 1); + confusers.set("users." + player.getName().toLowerCase() + ".warmup." + + pre, 1); } static boolean checkWarmUpOK(Player player, String pre, String message) { pre = pre.toLowerCase(); int ok = 0; - ok = confusers.getInt("users." + player.getName().toLowerCase() + ".warmup." + pre, - ok); + ok = confusers.getInt("users." + player.getName().toLowerCase() + + ".warmup." + pre, ok); if (ok == 1) { return true; } @@ -364,32 +368,38 @@ public class boosCoolDownManager { static void removeWarmUpOK(Player player, String pre, String message) { pre = pre.toLowerCase(); - confusers.set("users." + player.getName().toLowerCase() + ".warmup." + pre, null); + confusers.set("users." + player.getName().toLowerCase() + ".warmup." + + pre, null); } static void removeWarmUp(Player player, String pre, String message) { pre = pre.toLowerCase(); - confusers.set("users." + player.getName().toLowerCase() + ".warmup." + pre, null); + confusers.set("users." + player.getName().toLowerCase() + ".warmup." + + pre, null); } static void setUses(Player player, String pre, String message) { - pre = pre.toLowerCase(); - int uses = getUses(player, pre, message); - uses = uses + 1; - try { - confusers.set("users." + player.getName().toLowerCase() + ".uses." + pre - + message, uses); - } catch (IllegalArgumentException e) { - boosCoolDown.log.warning("Player " + player.getName() - + " used empty command and caused this error!"); + if (boosConfigManager.getLimitsEnabled()) { + pre = pre.toLowerCase(); + int uses = getUses(player, pre, message); + uses = uses + 1; + try { + confusers.set("users." + player.getName().toLowerCase() + + ".uses." + pre + message, uses); + } catch (IllegalArgumentException e) { + boosCoolDown.log.warning("Player " + player.getName() + + " used empty command and caused this error!"); + } + } else { + return; } } static int getUses(Player player, String pre, String message) { pre = pre.toLowerCase(); int uses = 0; - uses = confusers.getInt("users." + player.getName().toLowerCase() + ".uses." + pre - + message, uses); + uses = confusers.getInt("users." + player.getName().toLowerCase() + + ".uses." + pre + message, uses); return uses; } diff --git a/src/cz/boosik/boosCooldown/boosPriceManager.java b/src/cz/boosik/boosCooldown/boosPriceManager.java index c8d0d57..cf0ab0f 100644 --- a/src/cz/boosik/boosCooldown/boosPriceManager.java +++ b/src/cz/boosik/boosCooldown/boosPriceManager.java @@ -9,9 +9,12 @@ import net.milkbowl.vault.economy.EconomyResponse; public class boosPriceManager { private static Economy economy = boosCoolDown.getEconomy(); - public static boolean payForCommand(Player player, String pre, int price, String name) { - if (economy == null){ - return true;} + + public static boolean payForCommand(Player player, String pre, int price, + String name) { + if (economy == null) { + return true; + } EconomyResponse r = economy.withdrawPlayer(name, price); if (r.transactionSuccess()) { String msg = String.format( diff --git a/src/cz/boosik/boosCooldown/boosWarmUpManager.java b/src/cz/boosik/boosCooldown/boosWarmUpManager.java index b60500e..134aad5 100644 --- a/src/cz/boosik/boosCooldown/boosWarmUpManager.java +++ b/src/cz/boosik/boosCooldown/boosWarmUpManager.java @@ -63,13 +63,13 @@ public class boosWarmUpManager { 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) { + // for (String key : playercommands.keySet()) { + // if (key.startsWith(player.getName() + "@")) { + // removeWarmUpProcess(key); + // } + // } + // } public static void cancelWarmUps(Player player) { Iterator iter = playercommands.keySet().iterator(); @@ -80,14 +80,15 @@ public class boosWarmUpManager { } } } + public static void killTimer(Player player) { - for (String key : playercommands.keySet()) { - if (key.startsWith(player.getName() + "@")) { - playercommands.get(key).cancel(); + 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() + "@")) { diff --git a/src/cz/boosik/boosCooldown/boosWarmUpTimer.java b/src/cz/boosik/boosCooldown/boosWarmUpTimer.java index 6320e53..ffea6c0 100644 --- a/src/cz/boosik/boosCooldown/boosWarmUpTimer.java +++ b/src/cz/boosik/boosCooldown/boosWarmUpTimer.java @@ -5,7 +5,7 @@ import java.util.TimerTask; import org.bukkit.entity.Player; public class boosWarmUpTimer extends TimerTask { - + private boosCoolDown bCoolDown; private Player player; private String pre; @@ -24,23 +24,27 @@ public class boosWarmUpTimer extends TimerTask { @Override public void run() { - bCoolDown.getServer().getScheduler().scheduleSyncDelayedTask(bCoolDown, new boosWarmUpRunnable()); + bCoolDown.getServer().getScheduler() + .scheduleSyncDelayedTask(bCoolDown, new boosWarmUpRunnable()); } - + public class boosWarmUpRunnable implements Runnable { public void run() { - if (player.isOnline() && !player.isDead() && boosWarmUpManager.hasWarmUps(player)) { + if (player.isOnline() && !player.isDead() + && boosWarmUpManager.hasWarmUps(player)) { boosCoolDownManager.setWarmUpOK(player, pre, message); boosWarmUpManager.removeWarmUpProcess(player.getName() + "@" + pre); boosCoolDownListener.clearLocWorld(player); player.chat(pre + message); - } else if (player.isOnline() && player.isDead() && boosWarmUpManager.hasWarmUps(player)){ + } else if (player.isOnline() && player.isDead() + && boosWarmUpManager.hasWarmUps(player)) { boosCoolDownManager.removeWarmUp(player, pre, message); boosWarmUpManager.removeWarmUpProcess(player.getName() + "@" + pre); boosCoolDownListener.clearLocWorld(player); - } else if (!player.isOnline() && boosWarmUpManager.hasWarmUps(player)){ + } else if (!player.isOnline() + && boosWarmUpManager.hasWarmUps(player)) { boosCoolDownManager.removeWarmUp(player, pre, message); boosWarmUpManager.removeWarmUpProcess(player.getName() + "@" + pre); diff --git a/src/org/mcstats/MetricsLite.java b/src/org/mcstats/MetricsLite.java index 824aa9a..0c6526e 100644 --- a/src/org/mcstats/MetricsLite.java +++ b/src/org/mcstats/MetricsLite.java @@ -33,6 +33,7 @@ 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; @@ -49,309 +50,388 @@ import java.util.logging.Level; public class MetricsLite { - /** - * The current revision number - */ - private final static int REVISION = 5; + /** + * The current revision number + */ + private final static int REVISION = 6; - /** - * The base url of the metrics domain - */ - private static final String BASE_URL = "http://mcstats.org"; + /** + * The base url of the metrics domain + */ + private static final String BASE_URL = "http://mcstats.org"; - /** - * The url used to report a server's status - */ - private static final String REPORT_URL = "/report/%s"; + /** + * The url used to report a server's status + */ + private static final String REPORT_URL = "/report/%s"; - /** - * Interval of time to ping (in minutes) - */ - private final static int PING_INTERVAL = 10; + /** + * Interval of time to ping (in minutes) + */ + private final static int PING_INTERVAL = 10; - /** - * The plugin this metrics submits for - */ - private final Plugin plugin; + /** + * The plugin this metrics submits for + */ + private final Plugin plugin; - /** - * The plugin configuration file - */ - private final YamlConfiguration configuration; + /** + * The plugin configuration file + */ + private final YamlConfiguration configuration; - /** - * The plugin configuration file - */ - private final File configurationFile; + /** + * The plugin configuration file + */ + private final File configurationFile; - /** - * Unique server id - */ - private final String guid; + /** + * Unique server id + */ + private final String guid; - /** - * Lock for synchronization - */ - private final Object optOutLock = new Object(); + /** + * Debug mode + */ + private final boolean debug; - /** - * Id of the scheduled task - */ - private volatile int taskId = -1; + /** + * Lock for synchronization + */ + private final Object optOutLock = new Object(); - public MetricsLite(Plugin plugin) throws IOException { - if (plugin == null) { - throw new IllegalArgumentException("Plugin cannot be null"); - } + /** + * Id of the scheduled task + */ + private volatile BukkitTask task = null; - this.plugin = plugin; + public MetricsLite(Plugin plugin) throws IOException { + if (plugin == null) { + throw new IllegalArgumentException("Plugin cannot be null"); + } - // load the config - configurationFile = getConfigFile(); - configuration = YamlConfiguration.loadConfiguration(configurationFile); + this.plugin = plugin; - // add some defaults - configuration.addDefault("opt-out", false); - configuration.addDefault("guid", UUID.randomUUID().toString()); + // load the config + configurationFile = getConfigFile(); + configuration = YamlConfiguration.loadConfiguration(configurationFile); - // Do we need to create the file? - if (configuration.get("guid", null) == null) { - configuration.options().header("http://mcstats.org").copyDefaults(true); - configuration.save(configurationFile); - } + // add some defaults + configuration.addDefault("opt-out", false); + configuration.addDefault("guid", UUID.randomUUID().toString()); + configuration.addDefault("debug", false); - // Load the guid then - guid = configuration.getString("guid"); - } + // Do we need to create the file? + if (configuration.get("guid", null) == null) { + configuration.options().header("http://mcstats.org") + .copyDefaults(true); + configuration.save(configurationFile); + } - /** - * Start measuring statistics. This will immediately create an async repeating task as the plugin and send - * the initial data to the metrics backend, and then after that it will post in increments of - * PING_INTERVAL * 1200 ticks. - * - * @return True if statistics measuring is running, otherwise false. - */ - public boolean start() { - synchronized (optOutLock) { - // Did we opt out? - if (isOptOut()) { - return false; - } + // Load the guid then + guid = configuration.getString("guid"); + debug = configuration.getBoolean("debug", false); + } - // Is metrics already running? - if (taskId >= 0) { - return true; - } + /** + * Start measuring statistics. This will immediately create an async + * repeating task as the plugin and send the initial data to the metrics + * backend, and then after that it will post in increments of PING_INTERVAL + * * 1200 ticks. + * + * @return True if statistics measuring is running, otherwise false. + */ + public boolean start() { + synchronized (optOutLock) { + // Did we opt out? + if (isOptOut()) { + return false; + } - // Begin hitting the server with glorious data - taskId = plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() { + // Is metrics already running? + if (task != null) { + return true; + } - private boolean firstPost = true; + // Begin hitting the server with glorious data + task = plugin.getServer().getScheduler() + .runTaskTimerAsynchronously(plugin, new Runnable() { - public void run() { - try { - // This has to be synchronized or it can collide with the disable method. - synchronized (optOutLock) { - // Disable Task, if it is running and the server owner decided to opt-out - if (isOptOut() && taskId > 0) { - plugin.getServer().getScheduler().cancelTask(taskId); - taskId = -1; - } - } + private boolean firstPost = true; - // We use the inverse of firstPost because if it is the first time we are posting, - // it is not a interval ping, so it evaluates to FALSE - // Each time thereafter it will evaluate to TRUE, i.e PING! - postPlugin(!firstPost); + public void run() { + try { + // This has to be synchronized or it can collide + // with the disable method. + synchronized (optOutLock) { + // Disable Task, if it is running and the + // server owner decided to opt-out + if (isOptOut() && task != null) { + task.cancel(); + task = null; + } + } - // After the first post we set firstPost to false - // Each post thereafter will be a ping - firstPost = false; - } catch (IOException e) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + e.getMessage()); - } - } - }, 0, PING_INTERVAL * 1200); + // We use the inverse of firstPost because if it + // is the first time we are posting, + // it is not a interval ping, so it evaluates to + // FALSE + // Each time thereafter it will evaluate to + // TRUE, i.e PING! + postPlugin(!firstPost); - return true; - } - } + // After the first post we set firstPost to + // false + // Each post thereafter will be a ping + firstPost = false; + } catch (IOException e) { + if (debug) { + Bukkit.getLogger().log(Level.INFO, + "[Metrics] " + e.getMessage()); + } + } + } + }, 0, PING_INTERVAL * 1200); - /** - * Has the server owner denied plugin metrics? - * - * @return true if metrics should be opted out of it - */ - public boolean isOptOut() { - synchronized(optOutLock) { - try { - // Reload the metrics file - configuration.load(getConfigFile()); - } catch (IOException ex) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); - return true; - } catch (InvalidConfigurationException ex) { - Bukkit.getLogger().log(Level.INFO, "[Metrics] " + ex.getMessage()); - return true; - } - return configuration.getBoolean("opt-out", false); - } - } + return true; + } + } - /** - * Enables metrics for the server by setting "opt-out" to false in the config file and starting the metrics task. - * - * @throws IOException - */ - public void enable() throws IOException { - // This has to be synchronized or it can collide with the check in the task. - synchronized (optOutLock) { - // Check if the server owner has already set opt-out, if not, set it. - if (isOptOut()) { - configuration.set("opt-out", false); - configuration.save(configurationFile); - } + /** + * Has the server owner denied plugin metrics? + * + * @return true if metrics should be opted out of it + */ + public boolean isOptOut() { + synchronized (optOutLock) { + try { + // Reload the metrics file + configuration.load(getConfigFile()); + } catch (IOException ex) { + if (debug) { + Bukkit.getLogger().log(Level.INFO, + "[Metrics] " + ex.getMessage()); + } + return true; + } catch (InvalidConfigurationException ex) { + if (debug) { + Bukkit.getLogger().log(Level.INFO, + "[Metrics] " + ex.getMessage()); + } + return true; + } + return configuration.getBoolean("opt-out", false); + } + } - // Enable Task, if it is not running - if (taskId < 0) { - start(); - } - } - } + /** + * Enables metrics for the server by setting "opt-out" to false in the + * config file and starting the metrics task. + * + * @throws java.io.IOException + */ + public void enable() throws IOException { + // This has to be synchronized or it can collide with the check in the + // task. + synchronized (optOutLock) { + // Check if the server owner has already set opt-out, if not, set + // it. + if (isOptOut()) { + configuration.set("opt-out", false); + configuration.save(configurationFile); + } - /** - * Disables metrics for the server by setting "opt-out" to true in the config file and canceling the metrics task. - * - * @throws IOException - */ - public void disable() throws IOException { - // This has to be synchronized or it can collide with the check in the task. - synchronized (optOutLock) { - // Check if the server owner has already set opt-out, if not, set it. - if (!isOptOut()) { - configuration.set("opt-out", true); - configuration.save(configurationFile); - } + // Enable Task, if it is not running + if (task == null) { + start(); + } + } + } - // Disable Task, if it is running - if (taskId > 0) { - this.plugin.getServer().getScheduler().cancelTask(taskId); - taskId = -1; - } - } - } + /** + * Disables metrics for the server by setting "opt-out" to true in the + * config file and canceling the metrics task. + * + * @throws java.io.IOException + */ + public void disable() throws IOException { + // This has to be synchronized or it can collide with the check in the + // task. + synchronized (optOutLock) { + // Check if the server owner has already set opt-out, if not, set + // it. + if (!isOptOut()) { + configuration.set("opt-out", true); + configuration.save(configurationFile); + } - /** - * Gets the File object of the config file that should be used to store data such as the GUID and opt-out status - * - * @return the File object for the config file - */ - public File getConfigFile() { - // I believe the easiest way to get the base folder (e.g craftbukkit set via -P) for plugins to use - // is to abuse the plugin object we already have - // plugin.getDataFolder() => base/plugins/PluginA/ - // pluginsFolder => base/plugins/ - // The base is not necessarily relative to the startup directory. - File pluginsFolder = plugin.getDataFolder().getParentFile(); + // Disable Task, if it is running + if (task != null) { + task.cancel(); + task = null; + } + } + } - // return => base/plugins/PluginMetrics/config.yml - return new File(new File(pluginsFolder, "PluginMetrics"), "config.yml"); - } + /** + * Gets the File object of the config file that should be used to store data + * such as the GUID and opt-out status + * + * @return the File object for the config file + */ + public File getConfigFile() { + // I believe the easiest way to get the base folder (e.g craftbukkit set + // via -P) for plugins to use + // is to abuse the plugin object we already have + // plugin.getDataFolder() => base/plugins/PluginA/ + // pluginsFolder => base/plugins/ + // The base is not necessarily relative to the startup directory. + File pluginsFolder = plugin.getDataFolder().getParentFile(); - /** - * Generic method that posts a plugin to the metrics website - */ - private void postPlugin(boolean isPing) throws IOException { - // The plugin's description file containg all of the plugin data such as name, version, author, etc - final PluginDescriptionFile description = plugin.getDescription(); + // return => base/plugins/PluginMetrics/config.yml + return new File(new File(pluginsFolder, "PluginMetrics"), "config.yml"); + } - // Construct the post data - final StringBuilder data = new StringBuilder(); - data.append(encode("guid")).append('=').append(encode(guid)); - encodeDataPair(data, "version", description.getVersion()); - encodeDataPair(data, "server", Bukkit.getVersion()); - encodeDataPair(data, "players", Integer.toString(Bukkit.getServer().getOnlinePlayers().length)); - encodeDataPair(data, "revision", String.valueOf(REVISION)); + /** + * Generic method that posts a plugin to the metrics website + */ + private void postPlugin(boolean isPing) throws IOException { + // Server software specific section + PluginDescriptionFile description = plugin.getDescription(); + String pluginName = description.getName(); + boolean onlineMode = Bukkit.getServer().getOnlineMode(); // TRUE if + // online + // mode is + // enabled + String pluginVersion = description.getVersion(); + String serverVersion = Bukkit.getVersion(); + int playersOnline = Bukkit.getServer().getOnlinePlayers().length; - // If we're pinging, append it - if (isPing) { - encodeDataPair(data, "ping", "true"); - } + // END server software specific section -- all code below does not use + // any code outside of this class / Java - // Create the url - URL url = new URL(BASE_URL + String.format(REPORT_URL, encode(plugin.getDescription().getName()))); + // Construct the post data + final StringBuilder data = new StringBuilder(); - // Connect to the website - URLConnection connection; + // The plugin's description file containg all of the plugin data such as + // name, version, author, etc + data.append(encode("guid")).append('=').append(encode(guid)); + encodeDataPair(data, "version", pluginVersion); + encodeDataPair(data, "server", serverVersion); + encodeDataPair(data, "players", Integer.toString(playersOnline)); + encodeDataPair(data, "revision", String.valueOf(REVISION)); - // Mineshafter creates a socks proxy, so we can safely bypass it - // It does not reroute POST requests so we need to go around it - if (isMineshafterPresent()) { - connection = url.openConnection(Proxy.NO_PROXY); - } else { - connection = url.openConnection(); - } + // New data as of R6 + String osname = System.getProperty("os.name"); + String osarch = System.getProperty("os.arch"); + String osversion = System.getProperty("os.version"); + String java_version = System.getProperty("java.version"); + int coreCount = Runtime.getRuntime().availableProcessors(); - connection.setDoOutput(true); + // normalize os arch .. amd64 -> x86_64 + if (osarch.equals("amd64")) { + osarch = "x86_64"; + } - // Write the data - final OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); - writer.write(data.toString()); - writer.flush(); + encodeDataPair(data, "osname", osname); + encodeDataPair(data, "osarch", osarch); + encodeDataPair(data, "osversion", osversion); + encodeDataPair(data, "cores", Integer.toString(coreCount)); + encodeDataPair(data, "online-mode", Boolean.toString(onlineMode)); + encodeDataPair(data, "java_version", java_version); - // Now read the response - final BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); - final String response = reader.readLine(); + // If we're pinging, append it + if (isPing) { + encodeDataPair(data, "ping", "true"); + } - // close resources - writer.close(); - reader.close(); + // Create the url + URL url = new URL(BASE_URL + + String.format(REPORT_URL, encode(pluginName))); - if (response == null || response.startsWith("ERR")) { - throw new IOException(response); //Throw the exception - } - //if (response.startsWith("OK")) - We should get "OK" followed by an optional description if everything goes right - } + // Connect to the website + URLConnection connection; - /** - * Check if mineshafter is present. If it is, we need to bypass it to send POST requests - * - * @return true if mineshafter is installed on the server - */ - private boolean isMineshafterPresent() { - try { - Class.forName("mineshafter.MineServer"); - return true; - } catch (Exception e) { - return false; - } - } + // Mineshafter creates a socks proxy, so we can safely bypass it + // It does not reroute POST requests so we need to go around it + if (isMineshafterPresent()) { + connection = url.openConnection(Proxy.NO_PROXY); + } else { + connection = url.openConnection(); + } - /** - *

Encode a key/value data pair to be used in a HTTP post request. This INCLUDES a & so the first - * key/value pair MUST be included manually, e.g:

- * - * StringBuffer data = new StringBuffer(); - * data.append(encode("guid")).append('=').append(encode(guid)); - * encodeDataPair(data, "version", description.getVersion()); - * - * - * @param buffer the stringbuilder to append the data pair onto - * @param key the key value - * @param value the value - */ - private static void encodeDataPair(final StringBuilder buffer, final String key, final String value) throws UnsupportedEncodingException { - buffer.append('&').append(encode(key)).append('=').append(encode(value)); - } + connection.setDoOutput(true); - /** - * Encode text as UTF-8 - * - * @param text the text to encode - * @return the encoded text, as UTF-8 - */ - private static String encode(final String text) throws UnsupportedEncodingException { - return URLEncoder.encode(text, "UTF-8"); - } + // Write the data + final OutputStreamWriter writer = new OutputStreamWriter( + connection.getOutputStream()); + writer.write(data.toString()); + writer.flush(); + + // Now read the response + final BufferedReader reader = new BufferedReader(new InputStreamReader( + connection.getInputStream())); + final String response = reader.readLine(); + + // close resources + writer.close(); + reader.close(); + + if (response == null || response.startsWith("ERR")) { + throw new IOException(response); // Throw the exception + } + } + + /** + * Check if mineshafter is present. If it is, we need to bypass it to send + * POST requests + * + * @return true if mineshafter is installed on the server + */ + private boolean isMineshafterPresent() { + try { + Class.forName("mineshafter.MineServer"); + return true; + } catch (Exception e) { + return false; + } + } + + /** + *

+ * Encode a key/value data pair to be used in a HTTP post request. This + * INCLUDES a & so the first key/value pair MUST be included manually, e.g: + *

+ * + * StringBuffer data = new StringBuffer(); + * data.append(encode("guid")).append('=').append(encode(guid)); + * encodeDataPair(data, "version", description.getVersion()); + * + * + * @param buffer + * the stringbuilder to append the data pair onto + * @param key + * the key value + * @param value + * the value + */ + private static void encodeDataPair(final StringBuilder buffer, + final String key, final String value) + throws UnsupportedEncodingException { + buffer.append('&').append(encode(key)).append('=') + .append(encode(value)); + } + + /** + * Encode text as UTF-8 + * + * @param text + * the text to encode + * @return the encoded text, as UTF-8 + */ + private static String encode(final String text) + throws UnsupportedEncodingException { + return URLEncoder.encode(text, "UTF-8"); + } } \ No newline at end of file diff --git a/src/plugin.yml b/src/plugin.yml index 9ebf828..b010baf 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,6 @@ name: boosCooldowns main: cz.boosik.boosCooldown.boosCoolDown -version: 3.1.1 +version: 3.1.2 authors: [LordBoos (ingame name boosik)] softdepend: [Vault] description: > diff --git a/src/util/boosChat.java b/src/util/boosChat.java index 96cff68..8eab3c7 100644 --- a/src/util/boosChat.java +++ b/src/util/boosChat.java @@ -9,69 +9,95 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; public class boosChat { - - static Logger log = Logger.getLogger("Minecraft"); - static List Colors = new LinkedList(); - static Server server; - - public boosChat(Server server) { - Colors.add("&black&"); Colors.add("&darkblue&"); Colors.add("&darkgreen&"); - Colors.add("&darkaqua&"); Colors.add("&darkred&"); Colors.add("&purple&"); - Colors.add("&gold&"); Colors.add("&gray&"); Colors.add("&darkgray&"); - Colors.add("&blue&"); Colors.add("&green&"); Colors.add("&aqua&"); - Colors.add("&red&"); Colors.add("&pink&"); Colors.add("&yellow&"); - Colors.add("&white&"); - Colors.add("&0"); Colors.add("&1"); Colors.add("&2"); Colors.add("&3"); Colors.add("&4"); - Colors.add("&5"); Colors.add("&6"); Colors.add("&7"); Colors.add("&8"); Colors.add("&9"); - Colors.add("&a"); Colors.add("&b"); Colors.add("&c"); Colors.add("&d"); Colors.add("&e"); - Colors.add("&f"); - boosChat.server = server; - } - - static String replaceColorCodes(String line) { - line = replaceTags(line); - line = line.replaceAll("(&([a-f0-9]))", "\u00A7$2"); - return line; - } - static String replaceTags(String line) { - line = line.replaceAll("&black&", "&0"); - line = line.replaceAll("&darkblue&", "&1"); - line = line.replaceAll("&darkgreen&", "&2"); - line = line.replaceAll("&darkaqua&", "&3"); - line = line.replaceAll("&darkred&", "&4"); - line = line.replaceAll("&purple&", "&5"); - line = line.replaceAll("&gold&", "&6"); - line = line.replaceAll("&gray&", "&7"); - line = line.replaceAll("&darkgray&", "&8"); - line = line.replaceAll("&blue&", "&9"); - line = line.replaceAll("&green&", "&a"); - line = line.replaceAll("&aqua&", "&b"); - line = line.replaceAll("&red&", "&c"); - line = line.replaceAll("&pink&", "&d"); - line = line.replaceAll("&yellow&", "&e"); - line = line.replaceAll("&white&", "&f"); - return line; - } - - public static void broadcastMessage(String message) { - message = boosChat.replaceColorCodes(message); - log.info( "[bColoredChat] " + message); - server.broadcastMessage(message); - } - public static void sendMessageToPlayer(Player player, String message) { - message = boosChat.replaceColorCodes(message); - player.sendMessage(message); - } - public static void sendMessageToServer(String message) { - message = boosChat.replaceColorCodes(message); - log.info(message); - } - public static void sendMessageToCommandSender(CommandSender sender, String message) { - if(sender instanceof Player) { - boosChat.sendMessageToPlayer((Player) sender, message); - } - else { - boosChat.sendMessageToServer(message); - } - } + + static Logger log = Logger.getLogger("Minecraft"); + static List Colors = new LinkedList(); + static Server server; + + public boosChat(Server server) { + Colors.add("&black&"); + Colors.add("&darkblue&"); + Colors.add("&darkgreen&"); + Colors.add("&darkaqua&"); + Colors.add("&darkred&"); + Colors.add("&purple&"); + Colors.add("&gold&"); + Colors.add("&gray&"); + Colors.add("&darkgray&"); + Colors.add("&blue&"); + Colors.add("&green&"); + Colors.add("&aqua&"); + Colors.add("&red&"); + Colors.add("&pink&"); + Colors.add("&yellow&"); + Colors.add("&white&"); + Colors.add("&0"); + Colors.add("&1"); + Colors.add("&2"); + Colors.add("&3"); + Colors.add("&4"); + Colors.add("&5"); + Colors.add("&6"); + Colors.add("&7"); + Colors.add("&8"); + Colors.add("&9"); + Colors.add("&a"); + Colors.add("&b"); + Colors.add("&c"); + Colors.add("&d"); + Colors.add("&e"); + Colors.add("&f"); + boosChat.server = server; + } + + static String replaceColorCodes(String line) { + line = replaceTags(line); + line = line.replaceAll("(&([a-f0-9]))", "\u00A7$2"); + return line; + } + + static String replaceTags(String line) { + line = line.replaceAll("&black&", "&0"); + line = line.replaceAll("&darkblue&", "&1"); + line = line.replaceAll("&darkgreen&", "&2"); + line = line.replaceAll("&darkaqua&", "&3"); + line = line.replaceAll("&darkred&", "&4"); + line = line.replaceAll("&purple&", "&5"); + line = line.replaceAll("&gold&", "&6"); + line = line.replaceAll("&gray&", "&7"); + line = line.replaceAll("&darkgray&", "&8"); + line = line.replaceAll("&blue&", "&9"); + line = line.replaceAll("&green&", "&a"); + line = line.replaceAll("&aqua&", "&b"); + line = line.replaceAll("&red&", "&c"); + line = line.replaceAll("&pink&", "&d"); + line = line.replaceAll("&yellow&", "&e"); + line = line.replaceAll("&white&", "&f"); + return line; + } + + public static void broadcastMessage(String message) { + message = boosChat.replaceColorCodes(message); + log.info("[bColoredChat] " + message); + server.broadcastMessage(message); + } + + public static void sendMessageToPlayer(Player player, String message) { + message = boosChat.replaceColorCodes(message); + player.sendMessage(message); + } + + public static void sendMessageToServer(String message) { + message = boosChat.replaceColorCodes(message); + log.info(message); + } + + public static void sendMessageToCommandSender(CommandSender sender, + String message) { + if (sender instanceof Player) { + boosChat.sendMessageToPlayer((Player) sender, message); + } else { + boosChat.sendMessageToServer(message); + } + } }