From 21a45f8145c21e831e82545563d438f5c20b8f7f Mon Sep 17 00:00:00 2001 From: Boosik Date: Tue, 2 Apr 2013 20:56:56 +0200 Subject: [PATCH] Improved configuration file structure and regex handling --- .../Listeners/boosPlayerDeathListener.class | Bin 1763 -> 1789 bytes .../Listeners/boosPlayerMoveListener.class | Bin 2479 -> 2430 bytes .../boosCooldown/boosConfigManager.class | Bin 17322 -> 17608 bytes bin/cz/boosik/boosCooldown/boosCoolDown.class | Bin 11474 -> 11250 bytes .../boosCooldown/boosCoolDownListener.class | Bin 9932 -> 6761 bytes .../boosCooldown/boosCoolDownManager.class | Bin 11688 -> 6434 bytes .../boosCooldown/boosPriceManager.class | Bin 1858 -> 3742 bytes .../boosCooldown/boosWarmUpManager.class | Bin 5204 -> 6746 bytes .../boosWarmUpTimer$boosWarmUpRunnable.class | Bin 2070 -> 1994 bytes .../boosik/boosCooldown/boosWarmUpTimer.class | Bin 1597 -> 1742 bytes .../Listeners/boosPlayerDeathListener.java | 6 +- .../Listeners/boosPlayerMoveListener.java | 7 +- .../boosCooldown/boosConfigManager.java | 308 ++++++++++-------- src/cz/boosik/boosCooldown/boosCoolDown.java | 119 +++---- .../boosCooldown/boosCoolDownListener.java | 225 ++++--------- .../boosCooldown/boosCoolDownManager.java | 262 +++------------ .../boosik/boosCooldown/boosLimitManager.java | 86 +++++ .../boosik/boosCooldown/boosPriceManager.java | 68 +++- .../boosCooldown/boosWarmUpManager.java | 91 ++++-- .../boosik/boosCooldown/boosWarmUpTimer.java | 30 +- 20 files changed, 547 insertions(+), 655 deletions(-) create mode 100644 src/cz/boosik/boosCooldown/boosLimitManager.java diff --git a/bin/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.class b/bin/cz/boosik/boosCooldown/Listeners/boosPlayerDeathListener.class index 02cc674ad95e079d663e5f15fbca1191710b0e89..a46580fd887e568bf2e7aaf057ae2368b35767ae 100644 GIT binary patch delta 359 zcmX|+%}N4c7=_R0jA?@=3Zexr3KB8Lp@_1~%Cvtif67(`6AhC&%)rc82;Id8#au=k z(H4Ol7wx)%Hr<6_^hMC}ocEmP@P7Hne&PN5^$oxhE?$Hx=Z$04hYZ#z<#HrTKe%~5 z=ffr)aWmO%0={i2mVh{Rd?+AE5LFesZp)@!FbwU+c+jm=y{O3ctrxol5U`I!4-Tlz zNqa{)CJ0);>Aa@>7YL+8$uL#vy4`9uZAsDXrrnV$n%q&$Z0SzEmnBWsRjF>9OLP-q}b8tmJ-Rb0dAG0nvi1e`GAQ;*b`w$7b zSnOd%93s#|-od08D$?bN%UTNw_!%tuhr|>DOffi0D1*Qa6(=}llVLPaK@}Wo>>dC& TM#h7>2eG*klLY6?cA@bDR z4Y4N%S~Pv2pg*^qmdO(N5QiibW^Ns?>eZjToa;W`xG&9CshM}`-knLBqY%fOh_XJd z#^Pe6M@3t2D;1Fpyw6UeqRab-WQRy0)u)mABIa`?egez!?H=G8<%u1VNMv5T7BENB;$P!!lAh}I|aR^IZ`)!Mg=4+6LSfshI$ zqIL8y`VZ{_>#N1gJ2T8YGxOlnS{i<#r5bk z-I?Q24s@~v6zm0~v1ioFyS0WLg}jcRfSo8sokNbqwOsj5^I{vadHO0JmC7!@O* zt?Sf;VVw-sX{t079Ia-tG`C-^Hqr&7sng;_+*`M7QO8Z%!-p*d6?8y?p>VZVh~b8Tlh3cfX0|;=K@K%0%sg@)#b_fdsm7=>*JlbDBa03Xc7CnRm46$cXV_$x?=X8fd zg9CLFmkGU79LXs?9rZXdI2Lpqd(~QY%W>R7rRZ6lawZS;Wq*kai%UiL)Spe8He#6A z^44f1gIIJCAw-;RGAc1gm}z>MRnr1}GUk6TSMCXozp|^U{)(&Gc}9D|ZmOp>f=cK9 zHHpC>eo~4#Oq4YJjF4nhxeQZ`k!M`(PAKvu3#u=XWmRRaF)j0EL~C#*H_ZX#S}}dx F`~l5zNOb@J diff --git a/bin/cz/boosik/boosCooldown/boosConfigManager.class b/bin/cz/boosik/boosCooldown/boosConfigManager.class index 1c36b4c4c7c7a7efd6fd0f230d7581a284b6ada3..4afe1890f55d38c32099a37d260a223c0076c05c 100644 GIT binary patch literal 17608 zcmb_j34B!5)j#J=l6eWkmH}jy2}>X$3yTB+#fGpLNdg)HL2Vo+k7Q&rlg>=Q_*wU@ zty|q%wY9a{Qms}&jVSI``CMCCm)45fTGwi=w$@$0|GD?Qmp91^;_qvIKe+e3ch9+J zyJvfE9{b|1dx>baabS=Prs=U0t2d-lnfN9()TL61*3_1yeUaQ4Z)=Puqit3?NO?@d zj*o7RRwts#w(6A|j<;f2ro31xxshpBLn_@?y`gK(8Y*!kXru2DykiJ&*H)qrFWZS|;05K1WCF03=b`euxdf6KARF`VCf)r*N zp-8duCpTHGvP%&a)5s8wqG3!02Pw!xVj3NyK@?&d+7M4#OVS^y`6C`bh+O=QYf;wYjLnjEA_Ox0ggsv(*}Q)-B5b*^z~&P6*XH~;I5?V zAXP!@y`sm15Y41nP*pr@!K_kgrcu+qu=VzRAecjQgLD9}_abnfhNy<-LBC1s1eop! z2ZP6;7Y1p5j-6{e2@>pNKZVd^J&U{IiB>CZ(!nqUrMapiT0n=0ZG3}iq@S$U$cn`w zs-qgg~DD4Wt0_hrwvcas{Jid<08 zTS84CT1l&5{22>UndU=^hZ2467nZFNK_3yKW;zloZI5P}luU7e)|-Sg6s+13O?Py4 znsgMXvM;b5)A|q{Ek|c?Cc4=YJF#t^>DUl`Q$0zfqOI-|ra`j8HR0;7X|B+>z{@f0 zt3WyYjugTFCaW7d(R72p=4>>!sWIAVAJ`%4z&58ktZX}6$5%?qmUtO7ejptmqD`Wo zLD^J8YKxVwi)Jjj-w~oDr9cKG*e-5I`Jj4H>9@p4K=%0Q^|qz=H$9jFRK_?iMhsXA zv}a_Rzjr0tr1h7F5Zg`v6QmQFhWARVKAE);1448XeH*IX98GjtE8+D=<&tJEgH(gD zR7XctEIY3=ZOsOW_23Z)zcvw%;^de5(AS^Ih2kC03{k##$Fo6^jWtsh6*N{xneVwF z`VO6r0|E4o?FT!oOa@^Kw(e|dVcX%(iB}$7{0-C8zW02igh>~|E%eiAcS{@KI{@DjQwU7@3Dbho8bM##)tQO3 z!y`mCSXMIPf<;=ptVlK$Q4nB1;^3$%-6$+wBijEN(}6x*_}F*rC>R#TEpW$V&bG;2u$>r!zq)8u|sKtovF5>v}tGFWfY{Y-O9Yu2T@BGI%J!Q)6Y zkwBzrRfk8dj391hBAepL)<|k&M8Gm79*F{GbtZTBhnOM*?T(mgZ~ZV+*??PPnci3S zQ`?Oee#P}T#YP4P4ve>(^uH)boc)|pMco!BN@vuGlhsUN2NB5b#qqdDV!1d#iWhvi z4W3?^Ji^LkqiLAXQyzwMfpO5&dKEH#fz$y`IcTfZ)z@zL0SC}M1c`V@JlhhDwa2Z^ zR;x*W0GnE1T9Xl1NOpjUM3dbeskEi!rRdbVHKf|wU^XT_>)FQH&W3GC=tWE+MW$O~ z%|W0WFkc_ANE@V(q!LR|6`~&T^RgbKRx%sUc2}=b1=_+gCcy)|>P>(-QHjDmC#gh^Pf69+AgVnQSI9 zH51v;l~wvlB@^8ma4N(;MiHb_xjt?K`7ug;JDKy4qZhZRva zjkKn;r`^&n36%C25qNyb|6pLqu#`WMG`vAP650*QGikl3TaJ};5E0TL$Qjk*Op9yc z;(ryCG({ZAauL%w2f}4Vfwm;D&SbPmjxMcHfDxFoOKGX)T5oBM(2W}kuC%nKDq^!4 z$)MMhP*xw$%8G0pn_xvmO_aGyA)wGh=mB6rU8L~fQhbnpWOIrPUfoJ=GC7Qz*%n)- z3P*C2{$I>Xu28($ONC!_mwcR;_xQ*v)E9n6!a82a zHaV58+NO)vP8unk9W0#ulUMptDoY2!A+9k(oYPq;*xuFjUI25C_VHS#4!$>x;!t2-l| z=~N7D19AL)(iL$rHZYt#WNx)8Z(ib3Q|Gi27I*6c-Q_#JueF-4)lG&opTBRlTH1

QwA4OpKDrfbs7AXw743P_ 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 DK59}~ literal 17322 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 diff --git a/bin/cz/boosik/boosCooldown/boosCoolDown.class b/bin/cz/boosik/boosCooldown/boosCoolDown.class index 712e1924f90f31d113e35a79b3a73d0ac6a7d22d..1b527822d2be961eaadd4cbb7f51faf4f29ebd48 100644 GIT binary patch literal 11250 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 Q?->76W|aSM%qJiGAE7FdEdT%j diff --git a/bin/cz/boosik/boosCooldown/boosCoolDownListener.class b/bin/cz/boosik/boosCooldown/boosCoolDownListener.class index 9a6d6791bddd7a1a49cb9ee2e9f1550b710a8e7f..3424c5a47f383d05ef970c2bf049f419d17ec6fe 100644 GIT binary patch literal 6761 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ͅa% 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 b&?_0)&=BoGCQ`ZM`SMrMgK6Ct#= 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 literal 11688 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 J9rNVA{{>|rqd5Qo diff --git a/bin/cz/boosik/boosCooldown/boosPriceManager.class b/bin/cz/boosik/boosCooldown/boosPriceManager.class index 485307a1a678119ea84963bd1a414c49ac1d93eb..8f56faf606174950911479258a3d8afed8cef092 100644 GIT binary patch literal 3742 zcmcJSNpKuj8OQ%mv-D`(mdsdoBs<_NMxN0&A@L$h#yM6IE1E#gUviaie_VM7b#bue)WBt&t-Nu*!P< z*6;g%@BhB{^v8ew=63)d$FCH$2^`R0$j>>BXD$ZCxZ_x5XW0%a)2^u-Ma|YKhN~bh zu;a3}q~$HmuH?_pT{d)IKrwX3cB(4^`wO<==c}f*IOi-|`6aDx`T3|fKN*f16^K>6 zia@4tXQ>(AHSG$!Qpa@5v`zmwM`d#*f%v#nHqzLRP6ZtTkKV^u>G%X4SFr={6G&GK zKe8#%o6T*-w{{5ZRFOb3g_M6__zR{dkSpBB`DW1Mu)U_OOgZkjQ>|)tS>R%};JB6iTzzrTBvRWq z{gwQ*rL7q5=thnkTP8L(BW$h+ct?Wz%0MyV`PSTwpA_ap{Sz zz`kI3HOKah(KNE?Q;-wrdv7<^XQ}AN0Jp$*HQUp4-*oJmx~>}@K~p)iX$;{p1$lw& zeW;H+_Pkk%^sVAUcwC^Hx|!C@@*Vs|uF3--&_xw(5N$i%Kd9mm4htl;s#CXlCd7n< zJFMa;M%X;>xK)kKyRt;na)o0mJ}g&I<}@BIosvI+F$E{@I&tAKk&B)ZINAdIGfj(! z$8)rWy%Z({+I#g-T)ooNl!_S5UHdVuQ9XDDsg&7LtwC&aB=S|(@ zVR>l2ZkIh7=SNhO@KNrF@qAsgsFhvKF|H#EPR1n_vr-RTdfjymTVFY+RgD>@sk)`P za(6$j;#oN$(>!3>s=Jyc)%To=Ps;AS)KjxFQ_`2nRRwcQF!u`LRNb`7hAaIot1zU3 zlqJoo8|UZK&`^oYd&Xk?z}QbSF} z^D>B(?}X!JWS$CNHtvj0%48FKTBCrNmIU@}p0c=Ou2C_r+|F;Ej%!v-TeEJrBx>^N zVe+(zoe^=tfi0x)_58pb8n5#rp#*1qOk}6RRuo~IM^KTR)MSdA+AvskgS9M8_mXF=#r{WfNaLpx&(Emq&G57`EHJcb%&o>V*7S^1 zcXeaRl#iA`PR*~4A(?*gFclEvqp%HW`TXHmNNbo}d*R&qq)+JI_+iPxQTwy?3T1gGM!&qJ{(Tetduf+odMi zLet_ebVNFI^G#&_fJFQ{%brAT4G+gLlI%&Y;=nabHZYj@En=5qvN!o_Jh6r&G0a?w zNA=OL-oSBs{w8*3#s^k0$?rZ^8aN%lE@z$3Tv)}$YpCQpufB#IoV$jP35+OjV0%z` zMphd5L}=?BXqR#g=x<{_W3FPcN8ztkI9o9L2D%$??@GkoBSC)Un0RE1_z{-V?H0oHQeKN-~TjbW=#1($YZN7;W91cWt6ECnWL66?W zr)V$9|1o@qZ3?YUL|>ofoG!ksZ=s|hyYCj-6`c4drn)$8A3Y2O_7BchII`HkhR+jn zvOC^!^>v)=&wOPKUu(l_IMgq3XTC|;gCXXqMFOWu;0y_zC4n;}aFzrLWK(491;$+@fpa7_Yn9wWBIQM M2>gPJwBeWk2IE!Sw*UYD delta 893 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 NGkNkY<$R7P`wt|W)9e5M literal 5204 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 delta 642 zcmZvY%Wl(P5QWd!PTV9;NYgrPdJC7)Wx>KTV|&gwXXb16qm%#g>+BPNCET-N2t2hYUax*& zo2_<3P*B^}Xz#~(@`{5DoZjypX{b=9)f;)JzDd$8I!GXyf?(W%jUio4sGs7e%D86Z zs^A8RliAH?^W}qP=aqx&{IX?u}^g@HU{ni-sA!N)Kw-OeTyFv6?>ql_BRVP}Hb)qtSVXHo5AEGSuhlrDkAsHp<0 ziz-r>M-Cww3lY5*69#m$_@0a=x|qaN3TNVtO;)c@JC9Q()*@lSoQ 2) { @@ -41,7 +40,7 @@ public class boosPlayerMoveListener implements Listener { if (player != null && !player.hasPermission("booscooldowns.nocancel.move")) { if (boosWarmUpManager.hasWarmUps(player) && hasMoved(player)) { - boosCoolDownListener.clearLocWorld(player); + boosWarmUpManager.clearLocWorld(player); boosChat.sendMessageToPlayer(player, boosConfigManager.getWarmUpCancelledByMoveMessage()); boosWarmUpManager.cancelWarmUps(player); diff --git a/src/cz/boosik/boosCooldown/boosConfigManager.java b/src/cz/boosik/boosCooldown/boosConfigManager.java index 635a556..530dd09 100644 --- a/src/cz/boosik/boosCooldown/boosConfigManager.java +++ b/src/cz/boosik/boosCooldown/boosConfigManager.java @@ -8,6 +8,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; @@ -15,9 +16,63 @@ import org.bukkit.entity.Player; public class boosConfigManager { private static YamlConfiguration conf; + private static YamlConfiguration confusers; private static File confFile; + private static File confusersFile; static List players = new LinkedList(); + 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); + } + saveConfusers(); + loadConfusers(); + } + + 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); + saveConfusers(); + loadConfusers(); + } + + static void clearSomething(String co, String player, String command) { + int pre2 = command.toLowerCase().hashCode(); + confusers.set("users." + player.toLowerCase().hashCode() + "." + co + + "." + pre2, 0); + saveConfusers(); + loadConfusers(); + } + public static String getAlias(String message) { return conf.getString("commands.aliases." + message); } @@ -104,12 +159,13 @@ public class boosConfigManager { return conf.getBoolean("options.options.command_logging", false); } + public static YamlConfiguration getConfusers() { + return confusers; + } + static int getCoolDown(String pre, Player player) { int coolDown = 0; - String group = getCoolGrp(player); - pre = pre.toLowerCase(); - coolDown = conf.getInt("commands.cooldowns." + group + "." + pre, - coolDown); + coolDown = Integer.parseInt(getCommandValues(pre, player)[1]); return coolDown; } @@ -117,12 +173,6 @@ public class boosConfigManager { return conf.getBoolean("options.options.cooldowns_enabled", true); } - private static Set getCooldownGroups() { - Set groups = conf.getConfigurationSection("commands.cooldowns") - .getKeys(false); - return groups; - } - static String getCoolDownMessage() { return conf .getString( @@ -131,20 +181,16 @@ public class boosConfigManager { } public static Set getCooldowns(Player player) { - String cool = getCoolGrp(player); + String cool = getCommandGroup(player); Set cooldowns = conf.getConfigurationSection( - "commands.cooldowns." + cool).getKeys(false); + "commands.groups." + cool).getKeys(false); return cooldowns; } - private static String getCoolGrp(Player player) { - String cool = "cooldown"; - for (String group : getCooldownGroups()) { - if (player.hasPermission("booscooldowns." + group)) { - cool = group; - } - } - return cool; + public static String getInsufficientFundsMessage() { + return conf + .getString("options.messages.insufficient_funds", + "You have insufficient funds! &command& costs %s but you only have %s"); } public static String getInteractBlockedMessage() { @@ -153,21 +199,9 @@ public class boosConfigManager { "&6You can't do this when command is warming-up!&f"); } - public static String getLimGrp(Player player) { - String lim = "limit"; - for (String group : getLimitGroups()) { - if (player.hasPermission("booscooldowns." + group)) { - lim = group; - } - } - return lim; - } - public static int getLimit(String pre, Player player) { int limit = -1; - String group = getLimGrp(player); - pre = pre.toLowerCase(); - limit = conf.getInt("commands.limits." + group + "." + pre, limit); + limit = Integer.parseInt(getCommandValues(pre, player)[3]); return limit; } @@ -175,12 +209,6 @@ public class boosConfigManager { return conf.getBoolean("options.options.limits_enabled", true); } - private static Set getLimitGroups() { - Set groups = conf.getConfigurationSection("commands.limits") - .getKeys(false); - return groups; - } - public static String getLimitListMessage() { return conf .getString( @@ -189,9 +217,9 @@ public class boosConfigManager { } public static Set getLimits(Player player) { - String lim = getLimGrp(player); + String lim = getCommandGroup(player); Set limits = conf.getConfigurationSection( - "commands.limits." + lim).getKeys(false); + "commands.groups." + lim).getKeys(false); return limits; } @@ -223,19 +251,29 @@ public class boosConfigManager { "Price of &command& was %s and you now have %s"); } - public static String getPotionEffect(String pre) { - String effect = null; + public static String getPotionEffect(String pre, Player player) { + String effect = ""; pre = pre.toLowerCase(); - effect = conf.getString("commands.warmupPotionEffects.effect." + pre, - effect); + String[] command = getCommandValues(pre, player); + if (command.length > 4) { + effect = getCommandValues(pre, player)[4]; + } + return effect; + } + + public static int getPotionEffectStrength(String pre, Player player) { + int effect = 0; + pre = pre.toLowerCase(); + String[] command = getCommandValues(pre, player); + if (command.length > 4) { + effect = Integer.valueOf(getCommandValues(pre, player)[5]); + } return effect; } public static double getPrice(String pre, Player player) { double price = 0.0; - String group = getPriceGrp(player); - pre = pre.toLowerCase(); - price = conf.getDouble("commands.prices." + group + "." + pre, price); + price = Double.parseDouble(getCommandValues(pre, player)[2]); return price; } @@ -243,29 +281,6 @@ public class boosConfigManager { return conf.getBoolean("options.options.prices_enabled", true); } - private static Set getPriceGroups() { - Set groups = conf.getConfigurationSection("commands.prices") - .getKeys(false); - return groups; - } - - private static String getPriceGrp(Player player) { - String price = "price"; - for (String group : getPriceGroups()) { - if (player.hasPermission("booscooldowns." + group)) { - price = group; - } - } - return price; - } - - public static Set getPrices(Player player) { - String price = getPriceGrp(player); - Set prices = conf.getConfigurationSection( - "commands.prices." + price).getKeys(false); - return prices; - } - public static int getSaveInterval() { return conf.getInt("options.options.save_interval_in_minutes", 15); } @@ -291,21 +306,10 @@ public class boosConfigManager { return conf.getString("options.units.seconds", "seconds"); } - public static String getWarmGrp(Player player) { - String warm = "warmup"; - for (String group : getWarmupGroups()) { - if (player.hasPermission("booscooldowns." + group)) { - warm = group; - } - } - return warm; - } - public static int getWarmUp(String pre, Player player) { int warmUp = -1; - String group = getWarmGrp(player); - pre = pre.toLowerCase(); - warmUp = conf.getInt("commands.warmups." + group + "." + pre, warmUp); + String[] values = getCommandValues(pre, player); + warmUp = Integer.parseInt(values[0]); return warmUp; } @@ -328,25 +332,12 @@ public class boosConfigManager { return conf.getBoolean("options.options.warmups_enabled", true); } - public static Set getWarmupGroups() { - Set groups = conf.getConfigurationSection("commands.warmups") - .getKeys(false); - return groups; - } - static String getWarmUpMessage() { return conf .getString("options.messages.warming_up", "&6Wait&e &seconds& seconds&6 before command&e &command& &6has warmed up.&f"); } - public static Set getWarmups(Player player) { - String warm = getWarmGrp(player); - Set warmups = conf.getConfigurationSection( - "commands.warmups." + warm).getKeys(false); - return warmups; - } - static void load() { try { conf.load(confFile); @@ -359,28 +350,37 @@ public class boosConfigManager { } } + static void loadConfusers() { + try { + confusers.load(confusersFile); + } 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) { + static void saveConfusers() { + try { + confFile.createNewFile(); + confusers.save(confusersFile); + } catch (IOException e) { + e.printStackTrace(); + } + } + + static void setAddToConfigFile(String coSetnout, String co, String 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); + conf.set("commands.groups." + coSetnout + "." + co, hodnota); try { conf.save(confFile); } catch (IOException e) { @@ -395,15 +395,7 @@ public class boosConfigManager { confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); if (confFile.exists()) { conf = new YamlConfiguration(); - try { - conf.load(confFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - } + load(); } else { this.confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); this.conf = new YamlConfiguration(); @@ -449,6 +441,9 @@ public class boosConfigManager { "&6Warm-Up process for&e &command& &6has already started.&f"); conf.addDefault("options.messages.paid_error", "&6An error has occured:&e %s"); + conf.addDefault( + "options.messages.insufficient_funds", + "&6You have insufficient funds!&e &command& &6costs &e%s &6but you only have &e%s"); conf.addDefault("options.messages.paid_for_command", "&6Price of&e &command& &6was&e %s &6and you now have&e %s"); conf.addDefault("options.messages.limit_achieved", @@ -475,29 +470,11 @@ public class boosConfigManager { } } try { - conf.addDefault("commands.cooldowns.cooldown./command", 60); - conf.addDefault("commands.cooldowns.cooldown./anotherCommand *", 30); - conf.addDefault("commands.cooldowns.VIP./home", 40); - conf.addDefault("commands.cooldowns.Premium./home", 90); - conf.addDefault("commands.cooldowns.Donator./home", 99); - conf.addDefault("commands.cooldowns.something./home", 542); - conf.addDefault("commands.warmups.warmup.'*'", 1); - conf.addDefault("commands.warmups.warmup./anotherCommand *", 0); - conf.addDefault("commands.warmups.Donor./home", 40); - conf.addDefault("commands.warmups.example./home", 90); - conf.addDefault("commands.warmupPotionEffects.effect./home", - "WEAKNESS@3"); - conf.addDefault( - "commands.warmupPotionEffects.howto1", - "#You can use CONFUSION, DAMAGE_RESISTANCE, FAST_DIGGING, FIRE_RESISTANCE, HARM, HEAL, HUNGER, INCREASE_DAMAGE, INVISIBILITY, JUMP, NIGHT_VISION, POISON, REGENERATION, SLOW, SLOW_DIGGING, SPEED, WATER_BREATHING, WEAKNESS, WITHER"); - conf.addDefault( - "commands.warmupPotionEffects.howto2", - "#After effect add @number, for example WEAKNESS@3 will apply weakness III to player for the duration of warmup."); - conf.addDefault("commands.prices.price./command *", 10.0); - conf.addDefault("commands.prices.price./anotherCommand", 20.0); - conf.addDefault("commands.prices.yourGroup./home", 40.0); - conf.addDefault("commands.limits.limit./command *", 0); - conf.addDefault("commands.limits.limit2./lol", 100); + conf.addDefault("commands.groups.default.*", "1,1,0.0,-1"); + conf.addDefault("commands.groups.default./anothercommand", "0,2,0.0,-1"); + conf.addDefault("commands.groups.default./yetanothercommand", "5,0,10.0,5,WEAKNESS,3"); + conf.addDefault("commands.groups.VIP./command *", "5,30,10.0,0"); + conf.addDefault("commands.groups.VIP./anothercommand", "2,10,5.0,20"); conf.addDefault("commands.links.link./lol", "default"); conf.addDefault("commands.links.link./example", "default"); conf.addDefault("commands.links.link./command", "default"); @@ -517,5 +494,50 @@ public class boosConfigManager { } catch (IOException e) { e.printStackTrace(); } + confusersFile = new File(boosCoolDown.getDataFolder(), "users.yml"); + confusers = new YamlConfiguration(); + if (confusersFile.exists()) { + loadConfusers(); + } else { + try { + confusersFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private static Set getCommandGroups() { + Set groups = conf.getConfigurationSection("commands.groups") + .getKeys(false); + return groups; + } + + public static String getCommandGroup(Player player) { + String cmdGroup = "default"; + for (String group : getCommandGroups()) { + if (player.hasPermission("booscooldowns." + group)) { + cmdGroup = group; + } + } + return cmdGroup; + } + + public static Set getCommands(Player player) { + String group = getCommandGroup(player); + Set commands = conf.getConfigurationSection( + "commands.groups." + group).getKeys(false); + return commands; + } + + public static String[] getCommandValues(String regexCommand, Player player) { + String[] values; + String line = ""; + String group = getCommandGroup(player); + line = conf.getString("commands.groups." + group + "." + regexCommand, + line); + boosCoolDown.log.info("LINE: " + line); + values = line.split(","); + return values; } } diff --git a/src/cz/boosik/boosCooldown/boosCoolDown.java b/src/cz/boosik/boosCooldown/boosCoolDown.java index cbd9370..3d031ab 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDown.java +++ b/src/cz/boosik/boosCooldown/boosCoolDown.java @@ -34,6 +34,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { public static PluginDescriptionFile pdfFile; private static Economy economy = null; private static boolean usingVault = false; + public static void commandLogger(String player, String command) { log.info("[" + "boosLogger" + "] " + player + " used command " + command); @@ -47,6 +48,18 @@ public class boosCoolDown extends JavaPlugin implements Runnable { return log; } + static boolean isPluginOnForPlayer(Player player) { + boolean on; + if (player.hasPermission("booscooldowns.exception")) { + on = false; + } else if (player.isOp()) { + on = false; + } else { + on = true; + } + return on; + } + public static boolean isUsingVault() { return usingVault; } @@ -94,7 +107,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { && args[0].equalsIgnoreCase("limits")) { try { Player send = (Player) sender; - boosCoolDownManager.getLimits(send); + boosConfigManager.getLimits(send); } catch (ClassCastException e) { log.warning("You cannot use this command from console!"); } @@ -106,7 +119,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { if (sender.hasPermission("booscooldowns.clearcooldowns") && args[0].equalsIgnoreCase("clearcooldowns")) { String co = "cooldown"; - boosCoolDownManager.clearSomething(co, jmeno); + boosConfigManager.clearSomething(co, jmeno); boosChat.sendMessageToCommandSender(sender, "&6[" + pdfFile.getName() + "]&e" + " cooldowns of player " + jmeno @@ -116,7 +129,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { && command.equalsIgnoreCase("booscooldowns") && args[0].equalsIgnoreCase("clearuses")) { String co = "uses"; - boosCoolDownManager.clearSomething(co, jmeno); + boosConfigManager.clearSomething(co, jmeno); boosChat.sendMessageToCommandSender(sender, "&6[" + pdfFile.getName() + "]&e" + " uses of player " + jmeno + " cleared"); @@ -125,7 +138,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { && command.equalsIgnoreCase("booscooldowns") && args[0].equalsIgnoreCase("clearwarmups")) { String co = "warmup"; - boosCoolDownManager.clearSomething(co, jmeno); + boosConfigManager.clearSomething(co, jmeno); boosChat.sendMessageToCommandSender(sender, "&6[" + pdfFile.getName() + "]&e" + " warmups of player " + jmeno @@ -139,7 +152,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { if (sender.hasPermission("booscooldowns.clearcooldowns") && args[0].equalsIgnoreCase("clearcooldowns")) { String co = "cooldown"; - boosCoolDownManager.clearSomething(co, jmeno, command2); + boosConfigManager.clearSomething(co, jmeno, command2); boosChat.sendMessageToCommandSender(sender, "&6[" + pdfFile.getName() + "]&e" + " cooldown for command " + command2 @@ -148,7 +161,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { } else if (sender.hasPermission("booscooldowns.clearuses") && args[0].equalsIgnoreCase("clearuses")) { String co = "uses"; - boosCoolDownManager.clearSomething(co, jmeno, command2); + boosConfigManager.clearSomething(co, jmeno, command2); boosChat.sendMessageToCommandSender(sender, "&6[" + pdfFile.getName() + "]&e" + " uses for command " + command2 @@ -157,12 +170,13 @@ public class boosCoolDown extends JavaPlugin implements Runnable { } else if (sender.hasPermission("booscooldowns.clearwarmups") && args[0].equalsIgnoreCase("clearwarmups")) { String co = "warmup"; - boosCoolDownManager.clearSomething(co, jmeno, command2); + boosConfigManager.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) { @@ -170,78 +184,53 @@ public class boosCoolDown extends JavaPlugin implements Runnable { && args[0].equalsIgnoreCase("set")) { String coSetnout = args[1]; String co = args[2]; - int hodnota = 0; - try { - hodnota = Integer.valueOf(args[3]); - } catch (Exception e) { + String hodnota = args[3]; + String regex1 = "(\\d+)(,)(\\d+)(,)(\\d+)(\\.)(\\d+)(,)(-?)(\\d+)(,)(CONFUSION|DAMAGE_RESISTANCE|FAST_DIGGING|FIRE_RESISTANCE|HARM|HEAL|HUNGER|INCREASE_DAMAGE|INVISIBILITY|JUMP|NIGHT_VISION|POISON|REGENERATION|SLOW|SLOW_DIGGING|SPEED|WATER_BREATHING|WEAKNESS|WITHER)(,)(\\d+)"; + String regex2 = "(\\d+)(,)(\\d+)(,)(\\d+)(\\.)(\\d+)(,)(-?)(\\d+)"; + if (!hodnota.matches(regex1) && !hodnota.matches(regex2)) { boosChat.sendMessageToCommandSender(sender, - "Added value must be number!"); + "Invalid syntax!"); 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; + if (co.startsWith("/") || co.equals("*")) { + if (co.contains("_")){ + co = co.replace("_", " "); } + boosConfigManager.setAddToConfigFile(coSetnout, co, + hodnota); + boosChat.sendMessageToCommandSender(sender, "&6[" + + pdfFile.getName() + "]&e" + " " + co + + " in group " + coSetnout + " is now set to " + + hodnota); + return true; } else { boosChat.sendMessageToCommandSender(sender, "&6[" + pdfFile.getName() + "]&e" - + " Added command have to start with \"/\"."); + + " Command has to start with \"/\"."); return true; } } - } - } else { - boosChat.sendMessageToCommandSender( - sender, - "&6[" - + pdfFile.getName() - + "]&e" - + " access denied, you lack required permission to do this!"); + } else { + boosChat.sendMessageToCommandSender( + sender, + "&6[" + + pdfFile.getName() + + "]&e" + + " access denied, you lack required permission to do this!"); + } } return false; + } @Override public void onDisable() { if (boosConfigManager.getClearOnRestart() == true) { - boosCoolDownManager.clear(); + boosConfigManager.clear(); log.info("[" + pdfFile.getName() + "]" + " cooldowns cleared!"); } else { - boosCoolDownManager.save(); + boosConfigManager.saveConfusers(); log.info("[" + pdfFile.getName() + "]" + " cooldowns saved!"); } log.info("[" + pdfFile.getName() + "]" + " version " @@ -255,11 +244,9 @@ public class boosCoolDown extends JavaPlugin implements Runnable { log.info("[" + pdfFile.getName() + "]" + " version " + pdfFile.getVersion() + " by " + pdfFile.getAuthors() + " is enabled!"); - new boosConfigManager(this); boosConfigManager.load(); - new boosCoolDownManager(this); - boosCoolDownManager.load(); + boosConfigManager.loadConfusers(); pm = getServer().getPluginManager(); registerListeners(); initializeVault(); @@ -268,7 +255,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { boosConfigManager.getSaveInterval() * 1200, boosConfigManager.getSaveInterval() * 1200); if (boosConfigManager.getClearOnRestart()) { - boosCoolDownManager.clear(); + boosConfigManager.clear(); } try { MetricsLite metrics = new MetricsLite(this); @@ -281,7 +268,7 @@ public class boosCoolDown extends JavaPlugin implements Runnable { private void registerListeners() { HandlerList.unregisterAll(this); - pm.registerEvents(new boosCoolDownListener(this), this); + pm.registerEvents(new boosCoolDownListener(this), this); if (boosConfigManager.getCancelWarmUpOnDamage()) { pm.registerEvents(new boosEntityDamageListener(), this); } @@ -318,8 +305,8 @@ public class boosCoolDown extends JavaPlugin implements Runnable { @Override public void run() { - boosCoolDownManager.save(); - boosCoolDownManager.load(); + boosConfigManager.saveConfusers(); + boosConfigManager.loadConfusers(); log.info("[boosCooldowns] Config saved!"); } diff --git a/src/cz/boosik/boosCooldown/boosCoolDownListener.java b/src/cz/boosik/boosCooldown/boosCoolDownListener.java index f092673..f166a50 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDownListener.java +++ b/src/cz/boosik/boosCooldown/boosCoolDownListener.java @@ -1,9 +1,6 @@ package cz.boosik.boosCooldown; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -12,53 +9,35 @@ import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import util.boosChat; -public class boosCoolDownListener implements Listener { - private final boosCoolDown plugin; - private boolean blocked = false; - 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 class boosCoolDownListener implements Listener { + private static boosCoolDown plugin; public boosCoolDownListener(boosCoolDown instance) { plugin = instance; } - private boolean blocked(Player player, String pre, int limit) { - int uses = boosCoolDownManager.getUses(player, pre); - if (player.hasPermission("booscooldowns.nolimit") - || player.hasPermission("booscooldowns.nolimit." + pre)) { - } else { - 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 cooldownTime, double price) { + private void checkRestrictions(PlayerCommandPreprocessEvent event, + Player player, String regexCommad, String originalCommand, + int warmupTime, int cooldownTime, double price, int limit) { + boolean blocked = boosLimitManager.blocked(player, regexCommad, + originalCommand, limit); if (!blocked) { - if (warmUpSeconds > 0) { + if (warmupTime > 0) { if (!player.hasPermission("booscooldowns.nowarmup") && !player.hasPermission("booscooldowns.nowarmup." - + message)) { - start(event, player, message, warmUpSeconds, cooldownTime); + + originalCommand)) { + start(event, player, regexCommad, originalCommand, + warmupTime, cooldownTime); } } else { - if (boosCoolDownManager.coolDown(player, message, cooldownTime)) { + if (boosCoolDownManager.coolDown(player, regexCommad, + originalCommand, cooldownTime)) { event.setCancelled(true); } } if (!event.isCancelled()) { - payForCommand(event, player, message, price); + boosPriceManager.payForCommand(event, player, regexCommad, + originalCommand, price); } } else { event.setCancelled(true); @@ -67,52 +46,34 @@ public class boosCoolDownListener implements Listener { boosChat.sendMessageToPlayer(player, msg); } if (!event.isCancelled()) { - boosCoolDownManager.setUses(player, pre, message); + boosLimitManager.setUses(player, regexCommad, originalCommand); if (boosConfigManager.getCommandLogging()) { - boosCoolDown.commandLogger(player.getName(), message); + boosCoolDown.commandLogger(player.getName(), originalCommand); } } } - 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.LOWEST) private void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { if (event.isCancelled()) { return; } Player player = event.getPlayer(); - String message = event.getMessage().trim().replaceAll(" +", " "); - String confCmd = ""; + String originalCommand = event.getMessage().trim() + .replaceAll(" +", " ").toLowerCase(); + String regexCommad = ""; Set aliases = boosConfigManager.getAliases(); - Set warmups = boosConfigManager.getWarmups(player); - Set cooldowns = boosConfigManager.getCooldowns(player); - Set limits = boosConfigManager.getLimits(player); - Set prices = boosConfigManager.getPrices(player); + Set commands = boosConfigManager.getCommands(player); boolean on = true; - boolean used = false; int warmupTime = 0; double price = 0; int limit = -1; int cooldownTime = 0; - on = isPluginOnForPlayer(player); + on = boosCoolDown.isPluginOnForPlayer(player); try { - if (aliases.contains(message)) { - message = boosConfigManager.getAlias(message); - event.setMessage(message); + if (aliases.contains(originalCommand)) { + originalCommand = boosConfigManager.getAlias(originalCommand); + event.setMessage(originalCommand); } } catch (NullPointerException e) { boosCoolDown @@ -121,68 +82,28 @@ public class boosCoolDownListener implements Listener { "Aliases section in config.yml is missing! Please delete your config.yml, restart server and set it again!"); } if (on) { - if (boosConfigManager.getWarmupEnabled()) { - for (String warmup : warmups) { - String warmup2 = warmup.replace("*", ".+"); - if (message.matches(warmup2)) { - warmupTime = boosConfigManager - .getWarmUp(warmup, player); - boosCoolDown.log.info("Regex: " + warmup + "Command: " - + message); - if (warmupTime > 0) { - confCmd = warmup; - playerloc.put(player, player.getLocation()); - playerworld - .put(player, player.getWorld().getName()); - } - } - } - } - if (boosConfigManager.getCooldownEnabled()) { - for (String cooldown : cooldowns) { - String cooldown2 = cooldown.replace("*", ".+"); - if (message.matches(cooldown2)) { - cooldownTime = boosConfigManager.getCoolDown(cooldown, + for (String group : commands) { + String group2 = group.replace("*", ".+"); + if (originalCommand.matches(group2)) { + regexCommad = group; + if (boosConfigManager.getWarmupEnabled()){ + warmupTime = boosConfigManager.getWarmUp(regexCommad, player); - if (cooldownTime > 0 && confCmd.equals("")) { - confCmd = cooldown; - } + } + if (boosConfigManager.getCooldownEnabled()){ + cooldownTime = boosConfigManager.getCoolDown(regexCommad, + player); + } + if (boosConfigManager.getPriceEnabled()){ + price = boosConfigManager.getPrice(regexCommad, player); + } + if (boosConfigManager.getLimitEnabled()){ + limit = boosConfigManager.getLimit(regexCommad, player); } } } - if (boosConfigManager.getPriceEnabled()) { - for (String pric : prices) { - String pric2 = pric.replace("*", ".+"); - if (message.matches(pric2)) { - price = boosConfigManager.getPrice(pric, player); - if (price > 0 && confCmd.equals("")) { - confCmd = pric; - } - } - } - } - if (boosConfigManager.getLimitEnabled()) { - for (String lim : limits) { - String lim2 = lim.replace("*", ".+"); - if (message.matches(lim2)) { - limit = boosConfigManager.getLimit(lim, player); - if (limit > -1 && confCmd.equals("")) { - confCmd = lim; - } - } - } - } - blocked = blocked(player, message, limit); - this.checkCooldown(event, player, confCmd, message, warmupTime, - cooldownTime, price); - used = true; - } - - if (!used) { - blocked = blocked(player, message, limit); - this.checkCooldown(event, player, confCmd, message, warmupTime, - cooldownTime, price); - used = false; + this.checkRestrictions(event, player, regexCommad, originalCommand, + warmupTime, cooldownTime, price, limit); } } @@ -194,61 +115,30 @@ public class boosCoolDownListener implements Listener { Player player = event.getPlayer(); int cooldownTime = boosConfigManager.getCoolDown(temp, player); if (chatMessage.startsWith("!")) { - if (!boosCoolDownManager - .checkCoolDownOK(player, temp, cooldownTime)) { + if (!boosCoolDownManager.checkCoolDownOK(player, temp, temp, + cooldownTime)) { event.setCancelled(true); return; } else { - if (boosCoolDownManager.coolDown(player, temp, cooldownTime)) { + if (boosCoolDownManager.coolDown(player, temp, temp, + cooldownTime)) { event.setCancelled(true); return; } } price = boosConfigManager.getPrice(temp, player); - payForCommand2(event, player, temp, price); - } - } - - private void payForCommand(PlayerCommandPreprocessEvent event, - Player player, String pre, double price) { - String name = player.getName(); - if (price > 0) { - if (!player.hasPermission("booscooldowns.noprice") - && !player.hasPermission("booscooldowns.noprice." + pre)) { - if (boosPriceManager.payForCommand(player, pre, price, name)) { - return; - } else { - boosCoolDownManager.cancelCooldown(player, pre); - event.setCancelled(true); - return; - } - } - } - } - - private void payForCommand2(AsyncPlayerChatEvent event, Player player, - String pre, double price) { - String name = player.getName(); - if (price > 0) { - if (!player.hasPermission("booscooldowns.noprice") - && !player.hasPermission("booscooldowns.noprice." + pre)) { - if (boosPriceManager.payForCommand(player, pre, price, name)) { - return; - } else { - boosCoolDownManager.cancelCooldown(player, pre); - event.setCancelled(true); - return; - } - } + boosPriceManager.payForCommand2(event, player, temp, temp, price); } } private void start(PlayerCommandPreprocessEvent event, Player player, - String pre, int warmUpSeconds, int cooldownTime) { - if (!boosCoolDownManager.checkWarmUpOK(player, pre)) { - if (boosCoolDownManager.checkCoolDownOK(player, pre, cooldownTime)) { - boosWarmUpManager.startWarmUp(this.plugin, player, pre, - warmUpSeconds); + String regexCommad, String originalCommand, int warmupTime, + int cooldownTime) { + if (!boosWarmUpManager.checkWarmUpOK(player, regexCommad)) { + if (boosCoolDownManager.checkCoolDownOK(player, regexCommad, + originalCommand, cooldownTime)) { + boosWarmUpManager.startWarmUp(plugin, player, regexCommad, + originalCommand, warmupTime); event.setCancelled(true); return; } else { @@ -256,11 +146,12 @@ public class boosCoolDownListener implements Listener { return; } } else { - if (boosCoolDownManager.coolDown(player, pre, cooldownTime)) { + if (boosCoolDownManager.coolDown(player, regexCommad, + originalCommand, cooldownTime)) { event.setCancelled(true); return; } else { - boosCoolDownManager.removeWarmUpOK(player, pre); + boosWarmUpManager.removeWarmUpOK(player, regexCommad); return; } } diff --git a/src/cz/boosik/boosCooldown/boosCoolDownManager.java b/src/cz/boosik/boosCooldown/boosCoolDownManager.java index 5d65b5f..28595c1 100644 --- a/src/cz/boosik/boosCooldown/boosCoolDownManager.java +++ b/src/cz/boosik/boosCooldown/boosCoolDownManager.java @@ -1,39 +1,28 @@ package cz.boosik.boosCooldown; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; -import java.util.Set; - -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.InvalidConfigurationException; -import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; - import util.boosChat; public class boosCoolDownManager { - - private static YamlConfiguration confusers; - private static File confFile; - - static void cancelCooldown(Player player, String pre) { - int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() - + ".cooldown." + pre2, null); + static void cancelCooldown(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + boosConfigManager.getConfusers().set( + "users." + player.getName().toLowerCase().hashCode() + + ".cooldown." + pre2, null); } - private static boolean cd(Player player, String pre, int coolDownSeconds) { - Date lastTime = getTime(player, pre); - String link = boosConfigManager.getLink(pre); + private static boolean cd(Player player, String regexCommand, + String originalCommand, int coolDownSeconds) { + Date lastTime = getTime(player, regexCommand); + String link = boosConfigManager.getLink(regexCommand); if (lastTime == null) { if (link == null) { - setTime(player, pre); + setTime(player, regexCommand); } else { List linkGroup = boosConfigManager.getLinkList(link); for (String a : linkGroup) { @@ -52,7 +41,7 @@ public class boosCoolDownManager { long waitHours = Math.round(waitMinutes / 60) + 1; if (secondsBetween > coolDownSeconds) { if (link == null) { - setTime(player, pre); + setTime(player, regexCommand); } else { List linkGroup = boosConfigManager .getLinkList(link); @@ -63,7 +52,7 @@ public class boosCoolDownManager { return false; } else { String msg = boosConfigManager.getCoolDownMessage(); - msg = msg.replaceAll("&command&", pre); + msg = msg.replaceAll("&command&", originalCommand); if (waitSeconds >= 60 && 3600 >= waitSeconds) { msg = msg.replaceAll("&seconds&", Long.toString(waitMinutes)); @@ -88,63 +77,14 @@ public class boosCoolDownManager { } } - 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, int time) { - pre = pre.toLowerCase(); - if (time > 0 && !player.hasPermission("booscooldowns.nocooldown") - && !player.hasPermission("booscooldowns.nocooldown." + pre)) { - return cd(player, pre, time); + static boolean coolDown(Player player, String regexCommand, + String originalCommand, int time) { + regexCommand = regexCommand.toLowerCase(); + if (time > 0 + && !player.hasPermission("booscooldowns.nocooldown") + && !player.hasPermission("booscooldowns.nocooldown." + + originalCommand)) { + return cd(player, regexCommand, originalCommand, time); } return false; } @@ -164,38 +104,12 @@ public class boosCoolDownManager { } } - static void getLimits(Player player) { - int usesNum = 0; - int limitNum = 0; - int num; - String message; - Set uses = boosConfigManager.getLimits(player); - if (uses != null) { - for (String key : uses) { - usesNum = confusers.getInt("users." - + player.getName().toLowerCase().hashCode() + ".uses." - + key, usesNum); - limitNum = boosConfigManager.getLimit(key, player); - 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(); + static Date getTime(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); String confTime = ""; - confTime = confusers.getString("users." - + player.getName().toLowerCase().hashCode() + ".cooldown." - + pre2, null); + confTime = boosConfigManager.getConfusers().getString( + "users." + player.getName().toLowerCase().hashCode() + + ".cooldown." + pre2, null); if (confTime != null && !confTime.equals("")) { SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); @@ -211,19 +125,11 @@ public class boosCoolDownManager { return null; } - static int getUses(Player player, String message) { - int message2 = message.toLowerCase().hashCode(); - int uses = 0; - uses = confusers.getInt("users." - + player.getName().toLowerCase().hashCode() + ".uses." - + message2, uses); - return uses; - } - - static boolean checkCoolDownOK(Player player, String pre, int time) { - pre = pre.toLowerCase(); + static boolean checkCoolDownOK(Player player, String regexCommand, + String originalCommand, int time) { + regexCommand = regexCommand.toLowerCase(); if (time > 0) { - Date lastTime = getTime(player, pre); + Date lastTime = getTime(player, regexCommand); if (lastTime == null) { return true; } else { @@ -239,7 +145,7 @@ public class boosCoolDownManager { return true; } else { String msg = boosConfigManager.getCoolDownMessage(); - msg = msg.replaceAll("&command&", pre); + msg = msg.replaceAll("&command&", originalCommand); if (waitSeconds >= 60 && 3600 >= waitSeconds) { msg = msg.replaceAll("&seconds&", Long.toString(waitMinutes)); @@ -264,51 +170,6 @@ public class boosCoolDownManager { return true; } - static boolean checkWarmUpOK(Player player, String pre) { - 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 load() { - try { - confusers.load(confFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - } - } - - static void removeWarmUp(Player player, String pre) { - int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() - + ".warmup." + pre2, null); - } - - static void removeWarmUpOK(Player player, String pre) { - int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() - + ".warmup." + pre2, null); - } - - static void save() { - try { - confFile.createNewFile(); - confusers.save(confFile); - } catch (IOException e) { - e.printStackTrace(); - } - } - public static long secondsBetween(Calendar startDate, Calendar endDate) { long secondsBetween = 0; @@ -319,72 +180,23 @@ public class boosCoolDownManager { return secondsBetween; } - static void setTime(Player player, String pre) { - int pre2 = pre.toLowerCase().hashCode(); + static void setTime(Player player, String regexCommand) { + int pre2 = regexCommand.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); + boosConfigManager.getConfusers().set( + "users." + player.getName().toLowerCase().hashCode() + + ".cooldown." + pre2, currTime); } - static void setUses(Player player, String pre, String message) { - if (boosConfigManager.getLimitsEnabled()) { - if (boosConfigManager.getLimits(player).contains(pre)) { - int message2 = message.toLowerCase().hashCode(); - int uses = getUses(player, message); - uses = uses + 1; - try { - confusers.set("users." - + player.getName().toLowerCase().hashCode() - + ".uses." + message2, uses); - } catch (IllegalArgumentException e) { - boosCoolDown.log.warning("Player " + player.getName() - + " used empty command and caused this error!"); - } - } else { - return; - } - } - } - - static void setWarmUpOK(Player player, String pre) { - int pre2 = pre.toLowerCase().hashCode(); - confusers.set("users." + player.getName().toLowerCase().hashCode() - + ".warmup." + pre2, 1); - } - - public static void startAllCooldowns(Player player) { + public static void startAllCooldowns(Player player, String message) { for (String a : boosConfigManager.getCooldowns(player)) { int cooldownTime = boosConfigManager.getCoolDown(a, player); - coolDown(player, a, cooldownTime); + coolDown(player, a, message, cooldownTime); } } - 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/boosLimitManager.java b/src/cz/boosik/boosCooldown/boosLimitManager.java new file mode 100644 index 0000000..75d9a6f --- /dev/null +++ b/src/cz/boosik/boosCooldown/boosLimitManager.java @@ -0,0 +1,86 @@ +package cz.boosik.boosCooldown; + +import java.util.Set; + +import org.bukkit.entity.Player; + +import util.boosChat; + +public class boosLimitManager { + static boolean blocked(Player player, String regexCommand, + String originalCommand, int limit) { + int uses = getUses(player, regexCommand); + if (player.hasPermission("booscooldowns.nolimit") + || player.hasPermission("booscooldowns.nolimit." + + originalCommand)) { + } else { + if (limit == -1) { + return false; + } else if (limit <= uses) { + return true; + } + } + return false; + } + + static void getLimits(Player player) { + int usesNum = 0; + int limitNum = 0; + int num; + String message; + Set uses = boosConfigManager.getLimits(player); + if (uses != null) { + for (String key : uses) { + usesNum = boosConfigManager.getConfusers().getInt( + "users." + player.getName().toLowerCase().hashCode() + + ".uses." + key, usesNum); + limitNum = boosConfigManager.getLimit(key, player); + 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 int getUses(Player player, String regexCommand) { + int regexCommand2 = regexCommand.toLowerCase().hashCode(); + int uses = 0; + uses = boosConfigManager.getConfusers().getInt( + "users." + player.getName().toLowerCase().hashCode() + ".uses." + + regexCommand2, uses); + return uses; + } + + static void setUses(Player player, String regexCommand, + String originalCommand) { + if (boosConfigManager.getLimitsEnabled()) { + if (boosConfigManager.getLimits(player).contains(regexCommand)) { + boosCoolDown.log.info("regexCommand: " + regexCommand + + " originalCommand: " + originalCommand); + int regexCommand2 = regexCommand.toLowerCase().hashCode(); + int uses = getUses(player, regexCommand); + boosCoolDown.log.info("Uses: " + uses); + uses = uses + 1; + try { + boosConfigManager.getConfusers().set( + "users." + + player.getName().toLowerCase().hashCode() + + ".uses." + regexCommand2, uses); + } catch (IllegalArgumentException e) { + boosCoolDown.log.warning("Player " + player.getName() + + " used empty command and caused this error!"); + } + } else { + return; + } + } + } + +} diff --git a/src/cz/boosik/boosCooldown/boosPriceManager.java b/src/cz/boosik/boosCooldown/boosPriceManager.java index d498391..10e680b 100644 --- a/src/cz/boosik/boosCooldown/boosPriceManager.java +++ b/src/cz/boosik/boosCooldown/boosPriceManager.java @@ -4,30 +4,84 @@ import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.EconomyResponse; import org.bukkit.entity.Player; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; import util.boosChat; public class boosPriceManager { private static Economy economy = boosCoolDown.getEconomy(); + static String msg = ""; - public static boolean payForCommand(Player player, String pre, - double price, String name) { + public static boolean payForCommand(Player player, String regexCommand, + String originalCommand, double price, String name) { if (economy == null) { return true; } EconomyResponse r = economy.withdrawPlayer(name, price); if (r.transactionSuccess()) { - String msg = String.format( - boosConfigManager.getPaidForCommandMessage(), + msg = String.format(boosConfigManager.getPaidForCommandMessage(), economy.format(r.amount), economy.format(r.balance)); - msg = msg.replaceAll("&command&", pre); + msg = msg.replaceAll("&command&", originalCommand); boosChat.sendMessageToPlayer(player, msg); return true; } else { - String msg = String.format(boosConfigManager.getPaidErrorMessage(), - r.errorMessage); + if (r.errorMessage.equals("Insufficient funds")) { + String unit; + if (price == 1) { + unit = economy.currencyNameSingular(); + } else { + unit = economy.currencyNamePlural(); + } + msg = String.format( + boosConfigManager.getInsufficientFundsMessage(), (price + + " " + unit), economy.format(r.balance)); + msg = msg.replaceAll("&command&", originalCommand); + } else { + msg = String.format(boosConfigManager.getPaidErrorMessage(), + r.errorMessage); + } boosChat.sendMessageToPlayer(player, msg); return false; } } + + static void payForCommand(PlayerCommandPreprocessEvent event, + Player player, String regexCommand, String originalCommand, + double price) { + String name = player.getName(); + if (price > 0) { + if (!player.hasPermission("booscooldowns.noprice") + && !player.hasPermission("booscooldowns.noprice." + + originalCommand)) { + if (payForCommand(player, regexCommand, originalCommand, price, + name)) { + return; + } else { + boosCoolDownManager.cancelCooldown(player, regexCommand); + event.setCancelled(true); + return; + } + } + } + } + + static void payForCommand2(AsyncPlayerChatEvent event, Player player, + String regexCommand, String originalCommand, double price) { + String name = player.getName(); + if (price > 0) { + if (!player.hasPermission("booscooldowns.noprice") + && !player.hasPermission("booscooldowns.noprice." + + originalCommand)) { + if (boosPriceManager.payForCommand(player, regexCommand, + originalCommand, price, name)) { + return; + } else { + boosCoolDownManager.cancelCooldown(player, regexCommand); + event.setCancelled(true); + return; + } + } + } + } } diff --git a/src/cz/boosik/boosCooldown/boosWarmUpManager.java b/src/cz/boosik/boosCooldown/boosWarmUpManager.java index 70ef792..1be7c0d 100644 --- a/src/cz/boosik/boosCooldown/boosWarmUpManager.java +++ b/src/cz/boosik/boosCooldown/boosWarmUpManager.java @@ -4,6 +4,7 @@ import java.util.Iterator; import java.util.Timer; import java.util.concurrent.ConcurrentHashMap; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffectType; @@ -12,19 +13,26 @@ import util.boosChat; public class boosWarmUpManager { private static ConcurrentHashMap playercommands = new ConcurrentHashMap(); + public static ConcurrentHashMap playerloc = new ConcurrentHashMap(); + public static ConcurrentHashMap playerworld = new ConcurrentHashMap(); static Timer scheduler; - public static void applyPotionEffect(Player player, String pre, + public static void applyPotionEffect(Player player, String regexCommand, int warmUpSeconds) { - String potionTemp = boosConfigManager.getPotionEffect(pre); - if (potionTemp == null) + String potion = boosConfigManager.getPotionEffect(regexCommand, player); + if (potion.equals("")) { return; - String[] potion = potionTemp.split("@"); - PotionEffectType effect = PotionEffectType.getByName(potion[0]); + } + int potionStrength = boosConfigManager.getPotionEffectStrength( + regexCommand, player); + if (potionStrength == 0) { + return; + } + PotionEffectType effect = PotionEffectType.getByName(potion); player.addPotionEffect( - effect.createEffect(warmUpSeconds * 40, - Integer.parseInt(potion[1]) - 1), true); + effect.createEffect(warmUpSeconds * 40, potionStrength - 1), + true); } public static void cancelWarmUps(Player player) { @@ -37,6 +45,11 @@ public class boosWarmUpManager { } } + public static void clearLocWorld(Player player) { + boosWarmUpManager.playerloc.remove(player); + boosWarmUpManager.playerworld.remove(player); + } + public static boolean hasWarmUps(Player player) { for (String key : playercommands.keySet()) { if (key.startsWith(player.getName() + "@")) { @@ -46,17 +59,21 @@ public class boosWarmUpManager { return false; } - // public static void cancelWarmUps(Player player) { - // for (String key : playercommands.keySet()) { - // if (key.startsWith(player.getName() + "@")) { - // removeWarmUpProcess(key); - // } - // } - // } + static boolean checkWarmUpOK(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + int ok = 0; + ok = boosConfigManager.getConfusers().getInt( + "users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, ok); + if (ok == 1) { + return true; + } + return false; + } - public static boolean isWarmUpProcess(Player player, String pre) { - pre = pre.toLowerCase(); - if (playercommands.containsKey(player.getName() + "@" + pre)) { + public static boolean isWarmUpProcess(Player player, String regexCommand) { + regexCommand = regexCommand.toLowerCase(); + if (playercommands.containsKey(player.getName() + "@" + regexCommand)) { return true; } return false; @@ -70,19 +87,40 @@ public class boosWarmUpManager { } } + static void removeWarmUp(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + boosConfigManager.getConfusers().set( + "users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, null); + } + + static void removeWarmUpOK(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + boosConfigManager.getConfusers().set( + "users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, null); + } + public static void removeWarmUpProcess(String tag) { boosWarmUpManager.playercommands.remove(tag); } + static void setWarmUpOK(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + boosConfigManager.getConfusers().set( + "users." + player.getName().toLowerCase().hashCode() + + ".warmup." + pre2, 1); + } + public static void startWarmUp(boosCoolDown bCoolDown, Player player, - String pre, int warmUpSeconds) { - pre = pre.toLowerCase(); + String regexCommand, String originalCommand, int warmUpSeconds) { + regexCommand = regexCommand.toLowerCase(); long warmUpMinutes = Math.round(warmUpSeconds / 60); long warmUpHours = Math.round(warmUpMinutes / 60); - if (!isWarmUpProcess(player, pre)) { - boosCoolDownManager.removeWarmUpOK(player, pre); + if (!isWarmUpProcess(player, regexCommand)) { + boosWarmUpManager.removeWarmUpOK(player, regexCommand); String msg = boosConfigManager.getWarmUpMessage(); - msg = msg.replaceAll("&command&", pre); + msg = msg.replaceAll("&command&", originalCommand); if (warmUpSeconds >= 60 && 3600 >= warmUpSeconds) { msg = msg.replaceAll("&seconds&", Long.toString(warmUpMinutes)); msg = msg.replaceAll("&unit&", @@ -100,13 +138,14 @@ public class boosWarmUpManager { scheduler = new Timer(); boosWarmUpTimer scheduleMe = new boosWarmUpTimer(bCoolDown, - scheduler, player, pre); - playercommands.put(player.getName() + "@" + pre, scheduleMe); + scheduler, player, regexCommand, originalCommand); + playercommands.put(player.getName() + "@" + regexCommand, + scheduleMe); scheduler.schedule(scheduleMe, warmUpSeconds * 1000); - applyPotionEffect(player, pre, warmUpSeconds); + applyPotionEffect(player, regexCommand, warmUpSeconds); } else { String msg = boosConfigManager.getWarmUpAlreadyStartedMessage(); - msg = msg.replaceAll("&command&", pre); + msg = msg.replaceAll("&command&", originalCommand); boosChat.sendMessageToPlayer(player, msg); } } diff --git a/src/cz/boosik/boosCooldown/boosWarmUpTimer.java b/src/cz/boosik/boosCooldown/boosWarmUpTimer.java index af46210..f5b0c85 100644 --- a/src/cz/boosik/boosCooldown/boosWarmUpTimer.java +++ b/src/cz/boosik/boosCooldown/boosWarmUpTimer.java @@ -12,39 +12,41 @@ public class boosWarmUpTimer extends TimerTask { public void run() { if (player.isOnline() && !player.isDead() && boosWarmUpManager.hasWarmUps(player)) { - boosCoolDownManager.setWarmUpOK(player, pre); + boosWarmUpManager.setWarmUpOK(player, regexCommand); boosWarmUpManager.removeWarmUpProcess(player.getName() + "@" - + pre); - boosCoolDownListener.clearLocWorld(player); - player.chat(pre); + + regexCommand); + boosWarmUpManager.clearLocWorld(player); + player.chat(originalCommand); } else if (player.isOnline() && player.isDead() && boosWarmUpManager.hasWarmUps(player)) { - boosCoolDownManager.removeWarmUp(player, pre); + boosWarmUpManager.removeWarmUp(player, regexCommand); boosWarmUpManager.removeWarmUpProcess(player.getName() + "@" - + pre); - boosCoolDownListener.clearLocWorld(player); + + regexCommand); + boosWarmUpManager.clearLocWorld(player); } else if (!player.isOnline() && boosWarmUpManager.hasWarmUps(player)) { - boosCoolDownManager.removeWarmUp(player, pre); + boosWarmUpManager.removeWarmUp(player, regexCommand); boosWarmUpManager.removeWarmUpProcess(player.getName() + "@" - + pre); - boosCoolDownListener.clearLocWorld(player); + + regexCommand); + boosWarmUpManager.clearLocWorld(player); } } } + private boosCoolDown bCoolDown; private Player player; - - private String pre; + private String originalCommand; + private String regexCommand; public boosWarmUpTimer() { } public boosWarmUpTimer(boosCoolDown bCoolDown, Timer timer, Player player, - String pre) { + String regexCommand, String originalCommand) { this.bCoolDown = bCoolDown; this.player = player; - this.pre = pre; + this.regexCommand = regexCommand; + this.originalCommand = originalCommand; } @Override