From 046df72e38563eaa3f785eede40c8a8579dc6f2e Mon Sep 17 00:00:00 2001 From: Boosik Date: Sat, 24 Jan 2015 15:22:02 +0100 Subject: [PATCH] optimisation --- .../boosCooldown/BoosConfigManager.java | 42 ++-- .../boosCooldown/BoosCoolDownListener.java | 35 +-- .../boosCooldown/BoosItemCostManager.java | 231 ++++++++--------- .../boosik/boosCooldown/BoosPriceManager.java | 234 +++++++++--------- .../boosCooldown/BoosWarmUpManager.java | 10 +- .../boosCooldown/BoosXpCostManager.java | 115 ++++----- src/main/resources/plugin.yml | 2 +- 7 files changed, 342 insertions(+), 327 deletions(-) diff --git a/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java b/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java index 46b72fc..b706f4a 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java @@ -111,8 +111,13 @@ public class BoosConfigManager { * @return */ static Set getAliases() { - Set aliases = conf.getConfigurationSection("commands.aliases") - .getKeys(false); + Set aliases = null; + ConfigurationSection aliasesSection = conf + .getConfigurationSection("commands.aliases"); + if (aliasesSection != null) { + aliases = conf.getConfigurationSection("commands.aliases").getKeys( + false); + } return aliases; } @@ -248,9 +253,12 @@ public class BoosConfigManager { */ static String getCommandGroup(Player player) { String cmdGroup = "default"; - for (String group : getCommandGroups()) { - if (player.hasPermission("booscooldowns." + group)) { - cmdGroup = group; + Set groups = getCommandGroups(); + if (groups != null) { + for (String group : groups) { + if (player.hasPermission("booscooldowns." + group)) { + cmdGroup = group; + } } } return cmdGroup; @@ -260,8 +268,12 @@ public class BoosConfigManager { * @return */ static Set getCommandGroups() { - Set groups = conf.getConfigurationSection("commands.groups") - .getKeys(false); + ConfigurationSection groupsSection = conf + .getConfigurationSection("commands.groups"); + Set groups = null; + if (groupsSection != null) { + groups = groupsSection.getKeys(false); + } return groups; } @@ -278,8 +290,12 @@ public class BoosConfigManager { */ static Set getCommands(Player player) { String group = getCommandGroup(player); - Set commands = conf.getConfigurationSection( - "commands.groups." + group).getKeys(false); + Set commands = null; + ConfigurationSection commandsSection = conf + .getConfigurationSection("commands.groups." + group); + if (commandsSection != null) { + commands = commandsSection.getKeys(false); + } return commands; } @@ -861,7 +877,7 @@ public class BoosConfigManager { static int parseTime(String time) { String[] timeString = time.split(" ", 2); - if (timeString[0].equals("cancel")){ + if (timeString[0].equals("cancel")) { return -65535; } int timeNumber = Integer.valueOf(timeString[0]); @@ -886,9 +902,7 @@ public class BoosConfigManager { } public static String getLimitResetNowMessage() { - return conf - .getString( - "options.messages.limit_reset_now", - "&6Reseting limits for command&e &command& &6now.&f"); + return conf.getString("options.messages.limit_reset_now", + "&6Reseting limits for command&e &command& &6now.&f"); } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java b/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java index 29906d3..e7bcf4c 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java @@ -57,8 +57,11 @@ public class BoosCoolDownListener implements Listener { Player player, String regexCommad, String originalCommand, int warmupTime, int cooldownTime, double price, String item, int count, int limit, int xpPrice) { - boolean blocked = BoosLimitManager.blocked(player, regexCommad, - originalCommand, limit); + boolean blocked = false; + if (limit != -1) { + blocked = BoosLimitManager.blocked(player, regexCommad, + originalCommand, limit); + } if (!blocked) { if (warmupTime > 0) { if (!player.hasPermission("booscooldowns.nowarmup") @@ -180,15 +183,7 @@ public class BoosCoolDownListener implements Listener { originalCommand = originalCommand.replace("$", "S"); originalCommand = originalCommand.trim().replaceAll(" +", " "); String regexCommad = ""; - Set aliases = null; - try { - aliases = BoosConfigManager.getAliases(); - } catch (Exception e1) { - BoosCoolDown - .getLog() - .warning( - "Aliases section in config.yml is missing! Please delete your config.yml, restart server and set it again!"); - } + Set aliases = BoosConfigManager.getAliases(); Set commands = BoosConfigManager.getCommands(player); boolean on = true; String item = ""; @@ -199,10 +194,12 @@ public class BoosCoolDownListener implements Listener { int cooldownTime = 0; int xpPrice = 0; on = BoosCoolDown.isPluginOnForPlayer(player); - originalCommand = BoosAliasManager.checkCommandAlias(originalCommand, - aliases, player); - event.setMessage(originalCommand); - if (on) { + if (aliases != null) { + originalCommand = BoosAliasManager.checkCommandAlias( + originalCommand, aliases, player); + event.setMessage(originalCommand); + } + if (on && commands != null) { for (String group : commands) { String group2 = group.replace("*", ".+"); if (originalCommand.matches("(?i)" + group2)) { @@ -237,14 +234,6 @@ public class BoosCoolDownListener implements Listener { this.checkRestrictions(event, player, regexCommad, originalCommand, warmupTime, cooldownTime, price, item, count, limit, xpPrice); - try { - } catch (Exception e) { - BoosCoolDown - .getLog() - .warning( - "[boosCooldowns] Looks like you have deleted some important part of config file (like default group or aliases section. To get rid of this message, you have to restore it."); - return; - } } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java b/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java index c9c6ec9..e083872 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java @@ -1,114 +1,117 @@ -package cz.boosik.boosCooldown; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -import util.boosChat; - -/** - * T��da obsahuje ve�ker� metody pot�ebn� k ��zen� poplatk� za p��kazy. - * - * @author Jakub Kol�� - * - */ -public class BoosItemCostManager { - private static String msg = ""; - - /** - * Metoda zaji��uje funkci platby za p��kaz. Vrac� hodnotu v z�vislosti na - * �sp�nosti platby. - * - * @param player - * specifikovan� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - * @param originalCommand - * origin�ln� p��kaz pou�it� hr��em - * @param item - * @param price - * cena pou�it� p��kazu - * @param name - * jm�no specifick�ho hr��e - * @return true pokud byl �sp�n� zaplacen poplatek, nebo pokud nebyl nalezen - * ekonomick� plugin; false pokud do�lo k chyb� nebo hr�� nem�l - * dostatek financ� - */ - static boolean payItemForCommand(Player player, String regexCommand, - String originalCommand, String item, int count, String name) { - Material material = Material.getMaterial(item); - Inventory inventory = player.getInventory(); - Boolean trans = false; - if (inventory.contains(material, count)) { - ItemStack itemstack = new ItemStack(material, count); - inventory.removeItem(itemstack); - trans = true; - } - if (trans) { - msg = String.format( - BoosConfigManager.getPaidItemsForCommandMessage(), count - + " " + item); - msg = msg.replaceAll("&command&", originalCommand); - boosChat.sendMessageToPlayer(player, msg); - return true; - } else { - // msg = String.format( - // BoosConfigManager.getInsufficientItemsMessage(), (count - // + " " + item)); - // msg = msg.replaceAll("&command&", originalCommand); - // boosChat.sendMessageToPlayer(player, msg); - return false; - } - } - - /** - * Metoda ukon�uje/neukon�uje ud�lost pou�it� p��kazu v z�vislosti na tom, - * jakou hodnotu vr�tila metoda payForCommand(Player player, String - * regexCommand, String originalCommand, double price, String name);. - * - * @param event - * ud�lost PlayerCommandPreprocessEvent - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - * @param originalCommand - * origin�ln� p��kaz pou�it� hr��em - * @param item - * @param price - * cena pou�it� p��kazu - */ - static void payItemForCommand(PlayerCommandPreprocessEvent event, - Player player, String regexCommand, String originalCommand, - String item, int count) { - String name = player.getName(); - if (count > 0) { - if (!player.hasPermission("booscooldowns.noitemcost") - && !player.hasPermission("booscooldowns.noitemcost." - + originalCommand)) { - if (payItemForCommand(player, regexCommand, originalCommand, - item, count, name)) { - return; - } else { - BoosCoolDownManager.cancelCooldown(player, regexCommand); - event.setCancelled(true); - return; - } - } - } - } - - public static boolean has(Player player, String item, int count) { - if (item.equals("")) { - return true; - } - Material material = Material.getMaterial(item); - Inventory inventory = player.getInventory(); - if (inventory.contains(material, count)) { - return true; - } - return false; - } -} +package cz.boosik.boosCooldown; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import util.boosChat; + +/** + * T��da obsahuje ve�ker� metody pot�ebn� k ��zen� poplatk� za p��kazy. + * + * @author Jakub Kol�� + * + */ +public class BoosItemCostManager { + private static String msg = ""; + + /** + * Metoda zaji��uje funkci platby za p��kaz. Vrac� hodnotu v z�vislosti na + * �sp�nosti platby. + * + * @param player + * specifikovan� hr�� + * @param regexCommand + * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu + * @param originalCommand + * origin�ln� p��kaz pou�it� hr��em + * @param item + * @param price + * cena pou�it� p��kazu + * @param name + * jm�no specifick�ho hr��e + * @return true pokud byl �sp�n� zaplacen poplatek, nebo pokud nebyl nalezen + * ekonomick� plugin; false pokud do�lo k chyb� nebo hr�� nem�l + * dostatek financ� + */ + static boolean payItemForCommand(Player player, String regexCommand, + String originalCommand, String item, int count, String name) { + Material material = Material.getMaterial(item); + Inventory inventory = player.getInventory(); + Boolean trans = false; + if (inventory.contains(material, count)) { + ItemStack itemstack = new ItemStack(material, count); + inventory.removeItem(itemstack); + trans = true; + } + if (trans) { + msg = String.format( + BoosConfigManager.getPaidItemsForCommandMessage(), count + + " " + item); + msg = msg.replaceAll("&command&", originalCommand); + boosChat.sendMessageToPlayer(player, msg); + return true; + } else { + // msg = String.format( + // BoosConfigManager.getInsufficientItemsMessage(), (count + // + " " + item)); + // msg = msg.replaceAll("&command&", originalCommand); + // boosChat.sendMessageToPlayer(player, msg); + return false; + } + } + + /** + * Metoda ukon�uje/neukon�uje ud�lost pou�it� p��kazu v z�vislosti na tom, + * jakou hodnotu vr�tila metoda payForCommand(Player player, String + * regexCommand, String originalCommand, double price, String name);. + * + * @param event + * ud�lost PlayerCommandPreprocessEvent + * @param player + * specifick� hr�� + * @param regexCommand + * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu + * @param originalCommand + * origin�ln� p��kaz pou�it� hr��em + * @param item + * @param price + * cena pou�it� p��kazu + */ + static void payItemForCommand(PlayerCommandPreprocessEvent event, + Player player, String regexCommand, String originalCommand, + String item, int count) { + String name = player.getName(); + if (count > 0) { + if (!player.hasPermission("booscooldowns.noitemcost") + && !player.hasPermission("booscooldowns.noitemcost." + + originalCommand)) { + if (payItemForCommand(player, regexCommand, originalCommand, + item, count, name)) { + return; + } else { + BoosCoolDownManager.cancelCooldown(player, regexCommand); + event.setCancelled(true); + return; + } + } + } + } + + public static boolean has(Player player, String item, int count) { + if (item.equals("")) { + return true; + } + if (count <= 0) { + return true; + } + Material material = Material.getMaterial(item); + Inventory inventory = player.getInventory(); + if (inventory.contains(material, count)) { + return true; + } + return false; + } +} diff --git a/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java b/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java index f909e69..1125d8e 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java @@ -1,116 +1,118 @@ -package cz.boosik.boosCooldown; - -import net.milkbowl.vault.economy.Economy; -import net.milkbowl.vault.economy.EconomyResponse; - -import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; - -import util.boosChat; - -/** - * T��da obsahuje ve�ker� metody pot�ebn� k ��zen� poplatk� pomoc� v�c� za - * p��kazy. - * - * @author Jakub Kol�� - * - */ -public class BoosPriceManager { - private static Economy economy = BoosCoolDown.getEconomy(); - private static String msg = ""; - - /** - * Metoda zaji��uje funkci platby za p��kaz. Vrac� hodnotu v z�vislosti na - * �sp�nosti platby. - * - * @param player - * specifikovan� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - * @param originalCommand - * origin�ln� p��kaz pou�it� hr��em - * @param price - * cena pou�it� p��kazu - * @param name - * jm�no specifick�ho hr��e - * @return true pokud byl �sp�n� zaplacen poplatek, nebo pokud nebyl nalezen - * ekonomick� plugin; false pokud do�lo k chyb� nebo hr�� nem�l - * dostatek financ� - */ - static boolean payForCommand(Player player, String regexCommand, - String originalCommand, double price, String name) { - if (economy == null) { - return true; - } - EconomyResponse r = economy.withdrawPlayer(player, price); - if (r.transactionSuccess()) { - msg = String.format(BoosConfigManager.getPaidForCommandMessage(), - economy.format(r.amount), economy.format(r.balance)); - msg = msg.replaceAll("&command&", originalCommand); - boosChat.sendMessageToPlayer(player, msg); - return true; - } else { - 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; - } - } - - /** - * Metoda ukon�uje/neukon�uje ud�lost pou�it� p��kazu v z�vislosti na tom, - * jakou hodnotu vr�tila metoda payForCommand(Player player, String - * regexCommand, String originalCommand, double price, String name);. - * - * @param event - * ud�lost PlayerCommandPreprocessEvent - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - * @param originalCommand - * origin�ln� p��kaz pou�it� hr��em - * @param price - * cena pou�it� p��kazu - */ - 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; - } - } - } - } - - public static boolean has(Player player, double price) { - if (economy == null) { - return true; - } else { - return economy.has(player, price); - } - } -} +package cz.boosik.boosCooldown; + +import net.milkbowl.vault.economy.Economy; +import net.milkbowl.vault.economy.EconomyResponse; + +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import util.boosChat; + +/** + * T��da obsahuje ve�ker� metody pot�ebn� k ��zen� poplatk� pomoc� v�c� za + * p��kazy. + * + * @author Jakub Kol�� + * + */ +public class BoosPriceManager { + private static Economy economy = BoosCoolDown.getEconomy(); + private static String msg = ""; + + /** + * Metoda zaji��uje funkci platby za p��kaz. Vrac� hodnotu v z�vislosti na + * �sp�nosti platby. + * + * @param player + * specifikovan� hr�� + * @param regexCommand + * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu + * @param originalCommand + * origin�ln� p��kaz pou�it� hr��em + * @param price + * cena pou�it� p��kazu + * @param name + * jm�no specifick�ho hr��e + * @return true pokud byl �sp�n� zaplacen poplatek, nebo pokud nebyl nalezen + * ekonomick� plugin; false pokud do�lo k chyb� nebo hr�� nem�l + * dostatek financ� + */ + static boolean payForCommand(Player player, String regexCommand, + String originalCommand, double price, String name) { + if (economy == null) { + return true; + } + EconomyResponse r = economy.withdrawPlayer(player, price); + if (r.transactionSuccess()) { + msg = String.format(BoosConfigManager.getPaidForCommandMessage(), + economy.format(r.amount), economy.format(r.balance)); + msg = msg.replaceAll("&command&", originalCommand); + boosChat.sendMessageToPlayer(player, msg); + return true; + } else { + 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; + } + } + + /** + * Metoda ukon�uje/neukon�uje ud�lost pou�it� p��kazu v z�vislosti na tom, + * jakou hodnotu vr�tila metoda payForCommand(Player player, String + * regexCommand, String originalCommand, double price, String name);. + * + * @param event + * ud�lost PlayerCommandPreprocessEvent + * @param player + * specifick� hr�� + * @param regexCommand + * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu + * @param originalCommand + * origin�ln� p��kaz pou�it� hr��em + * @param price + * cena pou�it� p��kazu + */ + 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; + } + } + } + } + + public static boolean has(Player player, double price) { + if (economy == null) { + return true; + } else if (price <= 0){ + return true; + } else { + return economy.has(player, price); + } + } +} diff --git a/src/main/java/cz/boosik/boosCooldown/BoosWarmUpManager.java b/src/main/java/cz/boosik/boosCooldown/BoosWarmUpManager.java index c869d0b..e7c43f3 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosWarmUpManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosWarmUpManager.java @@ -1,6 +1,7 @@ package cz.boosik.boosCooldown; import java.util.Iterator; +import java.util.Map; import java.util.Timer; import java.util.concurrent.ConcurrentHashMap; @@ -62,7 +63,8 @@ public class BoosWarmUpManager { * specifick� hr�� */ public static void cancelWarmUps(Player player) { - Iterator iter = playercommands.keySet().iterator(); + Map playercommands2 = playercommands; + Iterator iter = playercommands2.keySet().iterator(); while (iter.hasNext()) { if (iter.next().startsWith(player.getUniqueId() + "@")) { killTimer(player); @@ -91,7 +93,8 @@ public class BoosWarmUpManager { * @return true pokud hr�� m� aktivn� warmup �asova�e, jinak false */ public static boolean hasWarmUps(Player player) { - for (String key : playercommands.keySet()) { + Map playercommands2 = playercommands; + for (String key : playercommands2.keySet()) { if (key.startsWith(player.getUniqueId() + "@")) { return true; } @@ -149,7 +152,8 @@ public class BoosWarmUpManager { * specifick� hr�� */ static void killTimer(Player player) { - for (String key : playercommands.keySet()) { + Map playercommands2 = playercommands; + for (String key : playercommands2.keySet()) { if (key.startsWith(player.getUniqueId() + "@")) { playercommands.get(key).cancel(); } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java b/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java index 2557c93..b01afe6 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java @@ -1,56 +1,59 @@ -package cz.boosik.boosCooldown; - -import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; - -import util.boosChat; - -public class BoosXpCostManager { - private static String msg = ""; - - static boolean payXPForCommand(Player player, String regexCommand, - String originalCommand, int xpPrice) { - int xp = player.getLevel(); - Boolean trans = false; - if (xp >= xpPrice) { - player.setLevel(xp - xpPrice); - trans = true; - } - if (trans) { - msg = String.format(BoosConfigManager.getPaidXPForCommandMessage(), - xpPrice); - msg = msg.replaceAll("&command&", originalCommand); - boosChat.sendMessageToPlayer(player, msg); - return true; - } else { - return false; - } - } - - static void payXPForCommand(PlayerCommandPreprocessEvent event, - Player player, String regexCommand, String originalCommand, - int xpPrice) { - if (xpPrice > 0) { - if (!player.hasPermission("booscooldowns.noxpcost") - && !player.hasPermission("booscooldowns.noxpcost." - + originalCommand)) { - if (payXPForCommand(player, regexCommand, originalCommand, - xpPrice)) { - return; - } else { - BoosCoolDownManager.cancelCooldown(player, regexCommand); - event.setCancelled(true); - return; - } - } - } - } - - public static boolean has(Player player, int xpPrice) { - int xp = player.getLevel(); - if (xp >= xpPrice) { - return true; - } - return false; - } -} +package cz.boosik.boosCooldown; + +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; + +import util.boosChat; + +public class BoosXpCostManager { + private static String msg = ""; + + static boolean payXPForCommand(Player player, String regexCommand, + String originalCommand, int xpPrice) { + int xp = player.getLevel(); + Boolean trans = false; + if (xp >= xpPrice) { + player.setLevel(xp - xpPrice); + trans = true; + } + if (trans) { + msg = String.format(BoosConfigManager.getPaidXPForCommandMessage(), + xpPrice); + msg = msg.replaceAll("&command&", originalCommand); + boosChat.sendMessageToPlayer(player, msg); + return true; + } else { + return false; + } + } + + static void payXPForCommand(PlayerCommandPreprocessEvent event, + Player player, String regexCommand, String originalCommand, + int xpPrice) { + if (xpPrice > 0) { + if (!player.hasPermission("booscooldowns.noxpcost") + && !player.hasPermission("booscooldowns.noxpcost." + + originalCommand)) { + if (payXPForCommand(player, regexCommand, originalCommand, + xpPrice)) { + return; + } else { + BoosCoolDownManager.cancelCooldown(player, regexCommand); + event.setCancelled(true); + return; + } + } + } + } + + public static boolean has(Player player, int xpPrice) { + if (xpPrice <= 0){ + return true; + } + int xp = player.getLevel(); + if (xp >= xpPrice) { + return true; + } + return false; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3cf0e93..3d902e8 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: boosCooldowns main: cz.boosik.boosCooldown.BoosCoolDown -version: 3.9.5 +version: 3.9.5c authors: [LordBoos (ingame name boosik)] softdepend: [Vault] description: >