From 8d0cad1e7cf24ebd161132037d276fa9be9b5a4d Mon Sep 17 00:00:00 2001 From: Boosik Date: Mon, 2 Feb 2015 14:35:25 +0100 Subject: [PATCH] Cleaned up old comments messed up by wrong encoding Implemented shared limits functionality Fixed a bug where player was unable to look around without canceling his warmups, while cancel warmups on move was enabled --- .../boosik/boosCooldown/BoosAliasManager.java | 88 +- .../boosCooldown/BoosConfigManager.java | 1540 +++++++---------- .../cz/boosik/boosCooldown/BoosCoolDown.java | 929 +++++----- .../boosCooldown/BoosCoolDownListener.java | 478 +++-- .../boosCooldown/BoosCoolDownManager.java | 447 ++--- .../BoosGlobalLimitResetRunnable.java | 34 +- .../boosCooldown/BoosItemCostManager.java | 157 +- .../boosik/boosCooldown/BoosLimitManager.java | 576 +++--- .../boosik/boosCooldown/BoosPriceManager.java | 145 +- .../boosCooldown/BoosWarmUpManager.java | 388 ++--- .../boosik/boosCooldown/BoosWarmUpTimer.java | 118 +- .../boosCooldown/BoosXpCostManager.java | 90 +- .../Listeners/BoosEntityDamageListener.java | 57 +- .../Listeners/BoosPlayerDeathListener.java | 117 +- .../BoosPlayerGameModeChangeListener.java | 59 +- .../Listeners/BoosPlayerInteractListener.java | 118 +- .../Listeners/BoosPlayerMoveListener.java | 91 +- .../BoosPlayerToggleSneakListener.java | 51 +- .../BoosPlayerToggleSprintListener.java | 51 +- .../Listeners/BoosSignChangeListener.java | 61 +- .../Listeners/BoosSignInteractListener.java | 107 +- src/main/java/org/mcstats/MetricsLite.java | 7 +- src/main/java/util/boosChat.java | 15 +- src/main/resources/config.yml | 8 + src/main/resources/plugin.yml | 4 +- 25 files changed, 2309 insertions(+), 3427 deletions(-) diff --git a/src/main/java/cz/boosik/boosCooldown/BoosAliasManager.java b/src/main/java/cz/boosik/boosCooldown/BoosAliasManager.java index aae9ed3..d6fded9 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosAliasManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosAliasManager.java @@ -1,51 +1,51 @@ package cz.boosik.boosCooldown; -import java.util.Set; - import org.bukkit.entity.Player; -public class BoosAliasManager { +import java.util.Set; - public static String checkCommandAlias(String originalCommand, - Set aliases, Player player) { - String[] splitCommand = originalCommand.split(" ", 4); - String one = ""; - String two = ""; - String three = ""; - if (splitCommand.length > 1) { - one = splitCommand[1]; - if (splitCommand.length > 2) { - two = splitCommand[2]; - if (splitCommand.length > 3) { - three = splitCommand[3]; - } - } - } - for (String alias : aliases) { - String alias2 = alias.replace("*", ".+"); - if (originalCommand.matches("(?i)" + alias2)) { - originalCommand = BoosConfigManager.getAlias(alias); - if (originalCommand.contains("$1")) { - originalCommand = originalCommand.replace("$1", one); - } - if (originalCommand.contains("$2")) { - originalCommand = originalCommand.replace("$2", two); - } - if (originalCommand.contains("$*")) { - originalCommand = originalCommand.replace("$*", three); - } - if (originalCommand.contains("$player")) { - originalCommand = originalCommand.replace("$player", - player.getName()); - } - if (originalCommand.contains("$world")) { - originalCommand = originalCommand.replace("$world", player - .getWorld().getName()); - } - } - } - originalCommand = originalCommand.trim().replaceAll(" +", " "); - return originalCommand; - } +class BoosAliasManager { + + public static String checkCommandAlias(String originalCommand, + Set aliases, Player player) { + String[] splitCommand = originalCommand.split(" ", 4); + String one = ""; + String two = ""; + String three = ""; + if (splitCommand.length > 1) { + one = splitCommand[1]; + if (splitCommand.length > 2) { + two = splitCommand[2]; + if (splitCommand.length > 3) { + three = splitCommand[3]; + } + } + } + for (String alias : aliases) { + String alias2 = alias.replace("*", ".+"); + if (originalCommand.matches("(?i)" + alias2)) { + originalCommand = BoosConfigManager.getAlias(alias); + if (originalCommand.contains("$1")) { + originalCommand = originalCommand.replace("$1", one); + } + if (originalCommand.contains("$2")) { + originalCommand = originalCommand.replace("$2", two); + } + if (originalCommand.contains("$*")) { + originalCommand = originalCommand.replace("$*", three); + } + if (originalCommand.contains("$player")) { + originalCommand = originalCommand.replace("$player", + player.getName()); + } + if (originalCommand.contains("$world")) { + originalCommand = originalCommand.replace("$world", player + .getWorld().getName()); + } + } + } + originalCommand = originalCommand.trim().replaceAll(" +", " "); + return originalCommand; + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java b/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java index b706f4a..3f7e796 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosConfigManager.java @@ -1,5 +1,10 @@ package cz.boosik.boosCooldown; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -7,902 +12,645 @@ import java.util.List; import java.util.Set; import java.util.UUID; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.InvalidConfigurationException; -import org.bukkit.configuration.file.YamlConfiguration; -import org.bukkit.entity.Player; - -/** - * T��da zaji��uj�c� ve�ker� metody, kter� se staraj� o konfiguraci pluginu a o - * datab�zi. - * - * @author Jakub Kol�� - * - */ public class BoosConfigManager { - private static YamlConfiguration conf; - private static YamlConfiguration confusers; - private static File confFile; - private static File confusersFile; - - /** - * Metoda zaji��uj�c� smaz�n� ve�ker�ch aktivn�ch cooldown a warmup �asova�� - * v�ech hr���. - */ - 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(); - } - - /** - * Metoda vyma�e ve�ker� hodnoty specifick�ho hr��e ve specifick� sekci - * datab�ze. - * - * @param co - * sekce datab�ze (warmup, cooldown, uses) - * @param uuid - * jm�no hr��e pro kret�ho se m� vymazat ��st datab�ze - */ - public static void clearSomething(String co, UUID uuid) { - ConfigurationSection userSection = confusers - .getConfigurationSection("users." + uuid + "." + co); - if (userSection == null) - return; - confusers.set("users." + uuid + "." + co, null); - saveConfusers(); - loadConfusers(); - } - - /** - * Metoda vyma�e hodnoty specifick�ho p��kazu, specifick�ho hr��e ve - * specifick� sekci datab�ze. - * - * @param co - * sekce datab�ze (warmup, cooldown, uses) - * @param uuid - * jm�no hr��e pro kret�ho se m� vymazat ��st datab�ze - * @param command - * p��kaz pro kter� se maj� vymazat hodnoty - */ - static void clearSomething(String co, UUID uuid, String command) { - int pre2 = command.toLowerCase().hashCode(); - confusers.set("users." + uuid + "." + co + "." + pre2, 0); - saveConfusers(); - loadConfusers(); - } - - /** - * @param message - * @return - */ - static String getAlias(String message) { - return conf.getString("commands.aliases." + message); - } - - /** - * @return - */ - static Set getAliases() { - Set aliases = null; - ConfigurationSection aliasesSection = conf - .getConfigurationSection("commands.aliases"); - if (aliasesSection != null) { - aliases = conf.getConfigurationSection("commands.aliases").getKeys( - false); - } - return aliases; - } - - /** - * @return - */ - static Set getAliasesKeys() { - Set aliases = conf.getConfigurationSection("commands.aliases") - .getKeys(true); - return aliases; - } - - /** - * @return - */ - static boolean getBlockInteractDuringWarmup() { - return conf.getBoolean("options.options.block_interact_during_warmup", - false); - } - - /** - * @return - */ - public static String getCancelWarmupByGameModeChangeMessage() { - return conf.getString( - "options.messages.warmup_cancelled_by_gamemode_change", - "&6Warm-ups have been cancelled due to changing gamemode.&f"); - } - - /** - * @return - */ - static boolean getCancelWarmUpOnDamage() { - return conf - .getBoolean("options.options.cancel_warmup_on_damage", false); - } - - /** - * @return - */ - static boolean getCancelWarmUpOnGameModeChange() { - return conf.getBoolean( - "options.options.cancel_warmup_on_gamemode_change", false); - } - - /** - * @return - */ - static boolean getCancelWarmupOnMove() { - return conf.getBoolean("options.options.cancel_warmup_on_move", false); - } - - /** - * @return - */ - static boolean getCancelWarmupOnSneak() { - return conf.getBoolean("options.options.cancel_warmup_on_sneak", false); - } - - /** - * @return - */ - public static String getCancelWarmupOnSneakMessage() { - return conf.getString("options.messages.warmup_cancelled_by_sneak", - "&6Warm-ups have been cancelled due to sneaking.&f"); - } - - /** - * @return - */ - static boolean getCancelWarmupOnSprint() { - return conf - .getBoolean("options.options.cancel_warmup_on_sprint", false); - } - - /** - * @return - */ - public static String getCancelWarmupOnSprintMessage() { - return conf.getString("options.messages.warmup_cancelled_by_sprint", - "&6Warm-ups have been cancelled due to sprinting.&f"); - } - - /** - * @return - */ - public static String getCannotCreateSignMessage() { - return conf.getString("options.messages.cannot_create_sign", - "&6You are not allowed to create this kind of signs!&f"); - } - - /** - * @return - */ - public static String getCannotUseSignMessage() { - return conf.getString("options.messages.cannot_use_sign", - "&6You are not allowed to use this sign!&f"); - } - - /** - * @return - */ - public static boolean getCleanCooldownsOnDeath() { - return conf.getBoolean("options.options.clear_cooldowns_on_death", - false); - } - - /** - * @return - */ - public static boolean getCleanUsesOnDeath() { - return conf.getBoolean("options.options.clear_uses_on_death", false); - } - - /** - * @return - */ - static boolean getClearOnRestart() { - return conf.getBoolean("options.options.clear_on_restart", false); - } - - /** - * @return - */ - static String getCommandBlockedMessage() { - return conf.getString("options.messages.limit_achieved", - "&6You cannot use this command anymore!&f"); - } - - /** - * @param player - * @return - */ - static String getCommandGroup(Player player) { - String cmdGroup = "default"; - Set groups = getCommandGroups(); - if (groups != null) { - for (String group : groups) { - if (player.hasPermission("booscooldowns." + group)) { - cmdGroup = group; - } - } - } - return cmdGroup; - } - - /** - * @return - */ - static Set getCommandGroups() { - ConfigurationSection groupsSection = conf - .getConfigurationSection("commands.groups"); - Set groups = null; - if (groupsSection != null) { - groups = groupsSection.getKeys(false); - } - return groups; - } - - /** - * @return - */ - static boolean getCommandLogging() { - return conf.getBoolean("options.options.command_logging", false); - } - - /** - * @param player - * @return - */ - static Set getCommands(Player player) { - String group = getCommandGroup(player); - Set commands = null; - ConfigurationSection commandsSection = conf - .getConfigurationSection("commands.groups." + group); - if (commandsSection != null) { - commands = commandsSection.getKeys(false); - } - return commands; - } - - /** - * @param regexCommand - * @param player - * @return - */ - // static String[] getCommandValues(String regexCommand, Player player) { - // String[] values; - // String line = ""; - // String group = getCommandGroup(player); - // line = conf.getString("commands.groups." + group + "." + regexCommand, - // line); - // values = line.split(","); - // return values; - // } - - /** - * @return - */ - static YamlConfiguration getConfusers() { - return confusers; - } - - /** - * @param regexCommand - * @param player - * @return - */ - static int getCoolDown(String regexCommand, Player player) { - int coolDown; - String coolDownString = ""; - String group = getCommandGroup(player); - coolDownString = conf.getString("commands.groups." + group + "." - + regexCommand + ".cooldown", "0"); - coolDown = parseTime(coolDownString); - return coolDown; - } - - /** - * @return - */ - static boolean getCooldownEnabled() { - return conf.getBoolean("options.options.cooldowns_enabled", true); - } - - /** - * @return - */ - static String getCoolDownMessage() { - return conf - .getString( - "options.messages.cooling_down", - "&6Wait&e &seconds& seconds&6 before you can use command&e &command& &6again.&f"); - } - - /** - * @param player - * @return - */ - static Set getCooldowns(Player player) { - String cool = getCommandGroup(player); - Set cooldowns = conf.getConfigurationSection( - "commands.groups." + cool).getKeys(false); - return cooldowns; - } - - /** - * @return - */ - static String getInsufficientFundsMessage() { - return conf - .getString( - "options.messages.insufficient_funds", - "&6You have insufficient funds!&e &command& &6costs &e%s &6but you only have &e%s"); - } - - /** - * @return - */ - public static String getInteractBlockedMessage() { - return conf.getString( - "options.messages.interact_blocked_during_warmup", - "&6You can't do this when command is warming-up!&f"); - } - - /** - * @param regexCommand - * @param player - * @return - */ - static String getItemCostItem(String regexCommand, Player player) { - String item = ""; - String temp; - String[] command; - String group = getCommandGroup(player); - temp = conf.getString("commands.groups." + group + "." + regexCommand - + ".itemcost", ""); - command = temp.split(","); - if (command.length == 2) { - item = command[0]; - } - return item; - } - - /** - * @param regexCommand - * @param player - * @return - */ - static int getItemCostCount(String regexCommand, Player player) { - int count = 0; - String temp; - String[] command; - String group = getCommandGroup(player); - temp = conf.getString("commands.groups." + group + "." + regexCommand - + ".itemcost", ""); - command = temp.split(","); - if (command.length == 2) { - count = Integer.valueOf(command[1]); - } - return count; - } - - /** - * @param regexCommand - * @param player - * @return - */ - static int getLimit(String regexCommand, Player player) { - int limit; - String group = getCommandGroup(player); - limit = conf.getInt("commands.groups." + group + "." + regexCommand - + ".limit", -1); - return limit; - } - - /** - * @return - */ - static boolean getLimitEnabled() { - return conf.getBoolean("options.options.limits_enabled", true); - } - - /** - * @return - */ - 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"); - } - - /** - * @return - */ - static boolean getLimitsEnabled() { - return conf.getBoolean("options.options.limits_enabled", true); - } - - static Set getAllPlayers() { - ConfigurationSection users = confusers.getConfigurationSection("users"); - Set list = users.getKeys(false); - return list; - } - - static List getSharedCooldowns(String pre, Player player) { - List sharedCooldowns; - String group = getCommandGroup(player); - sharedCooldowns = conf.getStringList("commands.groups." + group + "." - + pre + ".shared_cooldown"); - return sharedCooldowns; - } - - /** - * @param regexCommand - * @param player - * @return - */ - static String getMessage(String regexCommand, Player player) { - String message = ""; - String group = getCommandGroup(player); - message = conf.getString("commands.groups." + group + "." - + regexCommand + ".message", ""); - return message; - } - - /** - * @return - */ - static String getPaidErrorMessage() { - return conf.getString("options.messages.paid_error", - "An error has occured: %s"); - } - - /** - * @return - */ - static String getPaidForCommandMessage() { - return conf.getString("options.messages.paid_for_command", - "Price of &command& was %s and you now have %s"); - } - - /** - * @param regexCommand - * @param player - * @return - */ - static String getPotionEffect(String regexCommand, Player player) { - String effect = ""; - String temp; - String[] command; - String group = getCommandGroup(player); - temp = conf.getString("commands.groups." + group + "." + regexCommand - + ".potion", ""); - command = temp.split(","); - if (command.length == 2) { - effect = command[0]; - } - return effect; - } - - /** - * @param regexCommand - * @param player - * @return - */ - static int getPotionEffectStrength(String regexCommand, Player player) { - int effect = 0; - String temp; - String[] command; - String group = getCommandGroup(player); - temp = conf.getString("commands.groups." + group + "." + regexCommand - + ".potion", ""); - command = temp.split(","); - if (command.length == 2) { - effect = Integer.valueOf(command[1]); - } - return effect; - } - - /** - * @param regexCommand - * @param player - * @return - */ - static double getPrice(String regexCommand, Player player) { - double price; - String group = getCommandGroup(player); - price = conf.getDouble("commands.groups." + group + "." + regexCommand - + ".price", 0.0); - return price; - } - - /** - * @return - */ - static boolean getPriceEnabled() { - return conf.getBoolean("options.options.prices_enabled", true); - } - - /** - * @return - */ - static int getSaveInterval() { - return conf.getInt("options.options.save_interval_in_minutes", 15); - } - - /** - * @return - */ - static boolean getSignCommands() { - return conf.getBoolean("options.options.command_signs", false); - } - - /** - * @return - */ - public static boolean getStartCooldownsOnDeath() { - return conf.getBoolean("options.options.start_cooldowns_on_death", - false); - } - - /** - * @return - */ - static String getUnitHoursMessage() { - return conf.getString("options.units.hours", "hours"); - } - - /** - * @return - */ - static String getUnitMinutesMessage() { - return conf.getString("options.units.minutes", "minutes"); - } - - /** - * @return - */ - static String getUnitSecondsMessage() { - return conf.getString("options.units.seconds", "seconds"); - } - - /** - * @param regexCommand - * @param player - * @return - */ - static int getWarmUp(String regexCommand, Player player) { - int warmUp; - String warmUpString = ""; - String group = getCommandGroup(player); - warmUpString = conf.getString("commands.groups." + group + "." - + regexCommand + ".warmup", "0"); - warmUp = parseTime(warmUpString); - return warmUp; - } - - /** - * @return - */ - static String getWarmUpAlreadyStartedMessage() { - return conf.getString("options.messages.warmup_already_started", - "&6Warm-Up process for&e &command& &6has already started.&f"); - } - - /** - * @return - */ - public static String getWarmUpCancelledByDamageMessage() { - return conf.getString("options.messages.warmup_cancelled_by_damage", - "&6Warm-ups have been cancelled due to receiving damage.&f"); - } - - /** - * @return - */ - public static String getWarmUpCancelledByMoveMessage() { - return conf.getString("options.messages.warmup_cancelled_by_move", - "&6Warm-ups have been cancelled due to moving.&f"); - } - - /** - * @return - */ - static boolean getWarmupEnabled() { - return conf.getBoolean("options.options.warmups_enabled", true); - } - - /** - * @return - */ - static String getWarmUpMessage() { - return conf - .getString("options.messages.warming_up", - "&6Wait&e &seconds& seconds&6 before command&e &command& &6has warmed up.&f"); - } - - /** - * Metoda na�te konfigura�n� soubor z disku do pam�ti. - */ - static void load() { - try { - conf.load(confFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Configuration file not found!"); - } catch (IOException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Could not read configuration file!"); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Configuration file is invalid!"); - } - } - - /** - * Metoda na�te soubor datab�ze z disku do pam�ti. - */ - static void loadConfusers() { - try { - confusers.load(confusersFile); - } catch (FileNotFoundException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Storage file not found!"); - } catch (IOException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Could not read storage file!"); - } catch (InvalidConfigurationException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Storage file is invalid!"); - } - } - - /** - * Metoda znovu na�te konfigura�n� soubor z disku do pam�ti. - */ - static void reload() { - conf = new YamlConfiguration(); - load(); - } - - /** - * Metoda ulo�� soubor datab�ze z pam�ti na disk. - */ - static void saveConfusers() { - try { - confFile.createNewFile(); - confusers.save(confusersFile); - } catch (IOException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Could not save storage file!"); - } - } - - /** - * Metoda p�id�v� z�znamy do konfigura�n�ho souboru, kter� pot� ulo�� na - * disk a znovu jej na�te z disku do pam�ti. - * - * @param coSetnout - * n�zev skupiny pro kterou se m� p�idat z�znam do konfigura�n�ho - * souboru - * @param co - * p��kaz, pro kter� se m� p�idat hodnota do konfigura�n�ho - * souboru - * @param hodnota - * hodnota kter� se m� p�idat pro specifikovan� p��kaz - */ - static void setAddToConfigFile(String group, String command, String what, - String value) { - group = group.toLowerCase(); - command = command.toLowerCase(); - int value2; - try { - value2 = Integer.parseInt(value); - reload(); - conf.set("commands.groups." + group + "." + command + "." + what, - value2); - } catch (NumberFormatException e1) { - reload(); - conf.set("commands.groups." + group + "." + command + "." + what, - value); - } - try { - conf.save(confFile); - } catch (IOException e) { - BoosCoolDown.getLog().severe( - "[boosCooldowns] Could not save configuration file!"); - - } - reload(); - } - - /** - * Metoda vytv��ej�ci konfigura�n� a datab�zov� sobour, pokud tyto soubory - * ji� neexistuj�. Pokud soubory ji� existuj�, jsou na�teny z disku do - * pam�ti. - * - * @param boosCoolDown - */ - @SuppressWarnings("static-access") - BoosConfigManager(BoosCoolDown boosCoolDown) { - confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); - if (confFile.exists()) { - conf = new YamlConfiguration(); - load(); - } else { - this.confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); - this.conf = new YamlConfiguration(); - } - if (confFile.exists()) { - load(); - } - confusersFile = new File(boosCoolDown.getDataFolder(), "users.yml"); - confusers = new YamlConfiguration(); - if (confusersFile.exists()) { - loadConfusers(); - } else { - try { - confusersFile.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - BoosCoolDown.getLog().severe( - "[boosCooldowns] Could not save storage file!"); - } - } - } - - static boolean getAutoSave() { - return conf.getBoolean( - "options.options.auto_save_enabled_CAN_CAUSE_BIG_LAGS", false); - } - - static String getPaidItemsForCommandMessage() { - return conf.getString("options.messages.paid_items_for_command", - "&6Price of&e &command& &6was &e%s"); - } - - static String getInsufficientItemsMessage() { - return conf.getString("options.messages.insufficient_items", - "&6You have not enough items!&e &command& &6needs &e%s"); - } - - static boolean getItemCostEnabled() { - return conf.getBoolean("options.options.item_cost_enabled", true); - } - - static String getPaidXPForCommandMessage() { - return conf.getString("options.messages.paid_xp_for_command", - "&6Price of&e &command& &6was &e%s"); - } - - static int getXpPrice(String regexCommand, Player player) { - int price; - String group = getCommandGroup(player); - price = conf.getInt("commands.groups." + group + "." + regexCommand - + ".xpcost", 0); - return price; - } - - static boolean getXpPriceEnabled() { - return conf.getBoolean("options.options.xp_cost_enabled", true); - } - - static String getInsufficientXpMessage() { - return conf.getString("options.messages.insufficient_xp", - "&6You have not enough XP!&e &command& &6needs &e%s"); - } - - static String getInvalidCommandSyntaxMessage(Player player) { - return conf - .getString("options.messages.invalid_command_syntax", - "&6You are not allowed to use command syntax /:!"); - } - - static long getLimitResetDelay(String regexCommand, Player player) { - long limitreset; - String limitResetString = ""; - String group = getCommandGroup(player); - limitResetString = conf.getString("commands.groups." + group + "." - + regexCommand + ".limit_reset_delay", "0"); - limitreset = parseTime(limitResetString); - return limitreset; - } - - static String getLimitResetMessage() { - return conf - .getString( - "options.messages.limit_reset", - "&6Wait&e &seconds& &unit&&6 before your limit for command&e &command& &6is reset.&f"); - } - - static void clearSomething2(String co, String uuid, int hashedCommand) { - confusers.set("users." + uuid + "." + co + "." + hashedCommand, 0); - } - - static long getLimitResetDelayGlobal(String command) { - long delay = 0; - String delayString = ""; - delayString = conf.getString( - "global." + command + ".limit_reset_delay", "0"); - delay = parseTime(delayString); - return delay; - } - - static Set getLimitResetCommandsGlobal() { - return conf.getConfigurationSection("global").getKeys(false); - } - - static int parseTime(String time) { - String[] timeString = time.split(" ", 2); - if (timeString[0].equals("cancel")) { - return -65535; - } - int timeNumber = Integer.valueOf(timeString[0]); - int timeMultiplier = 1; - if (timeString.length > 1) { - String timeUnit = timeString[1]; - if (timeUnit.equals("minute") || timeUnit.equals("minutes")) { - timeMultiplier = 60; - } else if (timeUnit.equals("hour") || timeUnit.equals("hours")) { - timeMultiplier = 60 * 60; - } else if (timeUnit.equals("day") || timeUnit.equals("days")) { - timeMultiplier = 60 * 60 * 24; - } else if (timeUnit.equals("week") || timeUnit.equals("weeks")) { - timeMultiplier = 60 * 60 * 24 * 7; - } else if (timeUnit.equals("month") || timeUnit.equals("months")) { - timeMultiplier = 60 * 60 * 24 * 30; - } else { - timeMultiplier = 1; - } - } - return timeNumber * timeMultiplier; - } - - public static String getLimitResetNowMessage() { - return conf.getString("options.messages.limit_reset_now", - "&6Reseting limits for command&e &command& &6now.&f"); - } + private static YamlConfiguration conf; + private static YamlConfiguration confusers; + private static File confFile; + private static File confusersFile; + + @SuppressWarnings("static-access") + BoosConfigManager(BoosCoolDown boosCoolDown) { + confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); + if (confFile.exists()) { + conf = new YamlConfiguration(); + load(); + } else { + this.confFile = new File(boosCoolDown.getDataFolder(), "config.yml"); + this.conf = new YamlConfiguration(); + } + if (confFile.exists()) { + load(); + } + confusersFile = new File(boosCoolDown.getDataFolder(), "users.yml"); + confusers = new YamlConfiguration(); + if (confusersFile.exists()) { + loadConfusers(); + } else { + try { + confusersFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Could not save storage file!"); + } + } + } + + static void clear() { + ConfigurationSection userSection = confusers + .getConfigurationSection("users"); + if (userSection == null) + return; + for (String user : userSection.getKeys(false)) { + 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); + + 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, UUID uuid) { + ConfigurationSection userSection = confusers + .getConfigurationSection("users." + uuid + "." + co); + if (userSection == null) + return; + confusers.set("users." + uuid + "." + co, null); + saveConfusers(); + loadConfusers(); + } + + static void clearSomething(String co, UUID uuid, String command) { + int pre2 = command.toLowerCase().hashCode(); + confusers.set("users." + uuid + "." + co + "." + pre2, 0); + saveConfusers(); + loadConfusers(); + } + + static String getAlias(String message) { + return conf.getString("commands.aliases." + message); + } + + static Set getAliases() { + Set aliases = null; + ConfigurationSection aliasesSection = conf + .getConfigurationSection("commands.aliases"); + if (aliasesSection != null) { + aliases = conf.getConfigurationSection("commands.aliases").getKeys( + false); + } + return aliases; + } + + static boolean getBlockInteractDuringWarmup() { + return conf.getBoolean("options.options.block_interact_during_warmup", + false); + } + + public static String getCancelWarmupByGameModeChangeMessage() { + return conf.getString( + "options.messages.warmup_cancelled_by_gamemode_change", + "&6Warm-ups have been cancelled due to changing gamemode.&f"); + } + + static boolean getCancelWarmUpOnDamage() { + return conf + .getBoolean("options.options.cancel_warmup_on_damage", false); + } + + static boolean getCancelWarmUpOnGameModeChange() { + return conf.getBoolean( + "options.options.cancel_warmup_on_gamemode_change", false); + } + + static boolean getCancelWarmupOnMove() { + return conf.getBoolean("options.options.cancel_warmup_on_move", false); + } + + static boolean getCancelWarmupOnSneak() { + return conf.getBoolean("options.options.cancel_warmup_on_sneak", false); + } + + public static String getCancelWarmupOnSneakMessage() { + return conf.getString("options.messages.warmup_cancelled_by_sneak", + "&6Warm-ups have been cancelled due to sneaking.&f"); + } + + static boolean getCancelWarmupOnSprint() { + return conf + .getBoolean("options.options.cancel_warmup_on_sprint", false); + } + + public static String getCancelWarmupOnSprintMessage() { + return conf.getString("options.messages.warmup_cancelled_by_sprint", + "&6Warm-ups have been cancelled due to sprinting.&f"); + } + + public static String getCannotCreateSignMessage() { + return conf.getString("options.messages.cannot_create_sign", + "&6You are not allowed to create this kind of signs!&f"); + } + + public static String getCannotUseSignMessage() { + return conf.getString("options.messages.cannot_use_sign", + "&6You are not allowed to use this sign!&f"); + } + + public static boolean getCleanCooldownsOnDeath() { + return conf.getBoolean("options.options.clear_cooldowns_on_death", + false); + } + + public static boolean getCleanUsesOnDeath() { + return conf.getBoolean("options.options.clear_uses_on_death", false); + } + + static boolean getClearOnRestart() { + return conf.getBoolean("options.options.clear_on_restart", false); + } + + static String getCommandBlockedMessage() { + return conf.getString("options.messages.limit_achieved", + "&6You cannot use this command anymore!&f"); + } + + private static String getCommandGroup(Player player) { + String cmdGroup = "default"; + Set groups = getCommandGroups(); + if (groups != null) { + for (String group : groups) { + if (player.hasPermission("booscooldowns." + group)) { + cmdGroup = group; + } + } + } + return cmdGroup; + } + + private static Set getCommandGroups() { + ConfigurationSection groupsSection = conf + .getConfigurationSection("commands.groups"); + Set groups = null; + if (groupsSection != null) { + groups = groupsSection.getKeys(false); + } + return groups; + } + + static boolean getCommandLogging() { + return conf.getBoolean("options.options.command_logging", false); + } + + static Set getCommands(Player player) { + String group = getCommandGroup(player); + Set commands = null; + ConfigurationSection commandsSection = conf + .getConfigurationSection("commands.groups." + group); + if (commandsSection != null) { + commands = commandsSection.getKeys(false); + } + return commands; + } + + static YamlConfiguration getConfusers() { + return confusers; + } + + static int getCoolDown(String regexCommand, Player player) { + int coolDown; + String coolDownString = ""; + String group = getCommandGroup(player); + coolDownString = conf.getString("commands.groups." + group + "." + + regexCommand + ".cooldown", "0"); + coolDown = parseTime(coolDownString); + return coolDown; + } + + static boolean getCooldownEnabled() { + return conf.getBoolean("options.options.cooldowns_enabled", true); + } + + static String getCoolDownMessage() { + return conf + .getString( + "options.messages.cooling_down", + "&6Wait&e &seconds& seconds&6 before you can use command&e &command& &6again.&f"); + } + + static Set getCooldowns(Player player) { + String cool = getCommandGroup(player); + return conf.getConfigurationSection( + "commands.groups." + cool).getKeys(false); + } + + static String getInsufficientFundsMessage() { + return conf + .getString( + "options.messages.insufficient_funds", + "&6You have insufficient funds!&e &command& &6costs &e%s &6but you only have &e%s"); + } + + public static String getInteractBlockedMessage() { + return conf.getString( + "options.messages.interact_blocked_during_warmup", + "&6You can't do this when command is warming-up!&f"); + } + + static String getItemCostItem(String regexCommand, Player player) { + String item = ""; + String temp; + String[] command; + String group = getCommandGroup(player); + temp = conf.getString("commands.groups." + group + "." + regexCommand + + ".itemcost", ""); + command = temp.split(","); + if (command.length == 2) { + item = command[0]; + } + return item; + } + + static int getItemCostCount(String regexCommand, Player player) { + int count = 0; + String temp; + String[] command; + String group = getCommandGroup(player); + temp = conf.getString("commands.groups." + group + "." + regexCommand + + ".itemcost", ""); + command = temp.split(","); + if (command.length == 2) { + count = Integer.valueOf(command[1]); + } + return count; + } + + static int getLimit(String regexCommand, Player player) { + int limit; + String group = getCommandGroup(player); + limit = conf.getInt("commands.groups." + group + "." + regexCommand + + ".limit", -1); + return limit; + } + + static boolean getLimitEnabled() { + return conf.getBoolean("options.options.limits_enabled", true); + } + + 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"); + } + + static boolean getLimitsEnabled() { + return conf.getBoolean("options.options.limits_enabled", true); + } + + static Set getAllPlayers() { + ConfigurationSection users = confusers.getConfigurationSection("users"); + return users.getKeys(false); + } + + static List getSharedCooldowns(String pre, Player player) { + List sharedCooldowns; + String group = getCommandGroup(player); + sharedCooldowns = conf.getStringList("commands.groups." + group + "." + + pre + ".shared_cooldown"); + return sharedCooldowns; + } + + static List getSharedLimits(String pre, Player player) { + List sharedLimits; + String group = getCommandGroup(player); + sharedLimits = conf.getStringList("commands.groups." + group + "." + + pre + ".shared_limit"); + return sharedLimits; + } + + static String getMessage(String regexCommand, Player player) { + String message = ""; + String group = getCommandGroup(player); + message = conf.getString("commands.groups." + group + "." + + regexCommand + ".message", ""); + return message; + } + + static String getPaidErrorMessage() { + return conf.getString("options.messages.paid_error", + "An error has occured: %s"); + } + + static String getPaidForCommandMessage() { + return conf.getString("options.messages.paid_for_command", + "Price of &command& was %s and you now have %s"); + } + + static String getPotionEffect(String regexCommand, Player player) { + String effect = ""; + String temp; + String[] command; + String group = getCommandGroup(player); + temp = conf.getString("commands.groups." + group + "." + regexCommand + + ".potion", ""); + command = temp.split(","); + if (command.length == 2) { + effect = command[0]; + } + return effect; + } + + static int getPotionEffectStrength(String regexCommand, Player player) { + int effect = 0; + String temp; + String[] command; + String group = getCommandGroup(player); + temp = conf.getString("commands.groups." + group + "." + regexCommand + + ".potion", ""); + command = temp.split(","); + if (command.length == 2) { + effect = Integer.valueOf(command[1]); + } + return effect; + } + + static double getPrice(String regexCommand, Player player) { + double price; + String group = getCommandGroup(player); + price = conf.getDouble("commands.groups." + group + "." + regexCommand + + ".price", 0.0); + return price; + } + + static boolean getPriceEnabled() { + return conf.getBoolean("options.options.prices_enabled", true); + } + + static int getSaveInterval() { + return conf.getInt("options.options.save_interval_in_minutes", 15); + } + + static boolean getSignCommands() { + return conf.getBoolean("options.options.command_signs", false); + } + + public static boolean getStartCooldownsOnDeath() { + return conf.getBoolean("options.options.start_cooldowns_on_death", + false); + } + + static String getUnitHoursMessage() { + return conf.getString("options.units.hours", "hours"); + } + + static String getUnitMinutesMessage() { + return conf.getString("options.units.minutes", "minutes"); + } + + static String getUnitSecondsMessage() { + return conf.getString("options.units.seconds", "seconds"); + } + + static int getWarmUp(String regexCommand, Player player) { + int warmUp; + String warmUpString = ""; + String group = getCommandGroup(player); + warmUpString = conf.getString("commands.groups." + group + "." + + regexCommand + ".warmup", "0"); + warmUp = parseTime(warmUpString); + return warmUp; + } + + static String getWarmUpAlreadyStartedMessage() { + return conf.getString("options.messages.warmup_already_started", + "&6Warm-Up process for&e &command& &6has already started.&f"); + } + + public static String getWarmUpCancelledByDamageMessage() { + return conf.getString("options.messages.warmup_cancelled_by_damage", + "&6Warm-ups have been cancelled due to receiving damage.&f"); + } + + public static String getWarmUpCancelledByMoveMessage() { + return conf.getString("options.messages.warmup_cancelled_by_move", + "&6Warm-ups have been cancelled due to moving.&f"); + } + + static boolean getWarmupEnabled() { + return conf.getBoolean("options.options.warmups_enabled", true); + } + + static String getWarmUpMessage() { + return conf + .getString("options.messages.warming_up", + "&6Wait&e &seconds& seconds&6 before command&e &command& &6has warmed up.&f"); + } + + static void load() { + try { + conf.load(confFile); + } catch (FileNotFoundException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Configuration file not found!"); + } catch (IOException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Could not read configuration file!"); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Configuration file is invalid!"); + } + } + + static void loadConfusers() { + try { + confusers.load(confusersFile); + } catch (FileNotFoundException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Storage file not found!"); + } catch (IOException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Could not read storage file!"); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Storage file is invalid!"); + } + } + + static void reload() { + conf = new YamlConfiguration(); + load(); + } + + static void saveConfusers() { + try { + confFile.createNewFile(); + confusers.save(confusersFile); + } catch (IOException e) { + e.printStackTrace(); + BoosCoolDown.getLog().severe( + "[boosCooldowns] Could not save storage file!"); + } + } + + static void setAddToConfigFile(String group, String command, String what, + String value) { + group = group.toLowerCase(); + command = command.toLowerCase(); + int value2; + try { + value2 = Integer.parseInt(value); + reload(); + conf.set("commands.groups." + group + "." + command + "." + what, + value2); + } catch (NumberFormatException e1) { + reload(); + conf.set("commands.groups." + group + "." + command + "." + what, + value); + } + try { + conf.save(confFile); + } catch (IOException e) { + BoosCoolDown.getLog().severe( + "[boosCooldowns] Could not save configuration file!"); + + } + reload(); + } + + static boolean getAutoSave() { + return conf.getBoolean( + "options.options.auto_save_enabled_CAN_CAUSE_BIG_LAGS", false); + } + + static String getPaidItemsForCommandMessage() { + return conf.getString("options.messages.paid_items_for_command", + "&6Price of&e &command& &6was &e%s"); + } + + static String getInsufficientItemsMessage() { + return conf.getString("options.messages.insufficient_items", + "&6You have not enough items!&e &command& &6needs &e%s"); + } + + static boolean getItemCostEnabled() { + return conf.getBoolean("options.options.item_cost_enabled", true); + } + + static String getPaidXPForCommandMessage() { + return conf.getString("options.messages.paid_xp_for_command", + "&6Price of&e &command& &6was &e%s"); + } + + static int getXpPrice(String regexCommand, Player player) { + int price; + String group = getCommandGroup(player); + price = conf.getInt("commands.groups." + group + "." + regexCommand + + ".xpcost", 0); + return price; + } + + static boolean getXpPriceEnabled() { + return conf.getBoolean("options.options.xp_cost_enabled", true); + } + + static String getInsufficientXpMessage() { + return conf.getString("options.messages.insufficient_xp", + "&6You have not enough XP!&e &command& &6needs &e%s"); + } + + static String getInvalidCommandSyntaxMessage() { + return conf + .getString("options.messages.invalid_command_syntax", + "&6You are not allowed to use command syntax /:!"); + } + + static long getLimitResetDelay(String regexCommand, Player player) { + long limitreset; + String limitResetString = ""; + String group = getCommandGroup(player); + limitResetString = conf.getString("commands.groups." + group + "." + + regexCommand + ".limit_reset_delay", "0"); + limitreset = parseTime(limitResetString); + return limitreset; + } + + static String getLimitResetMessage() { + return conf + .getString( + "options.messages.limit_reset", + "&6Wait&e &seconds& &unit&&6 before your limit for command&e &command& &6is reset.&f"); + } + + static void clearSomething2(String co, String uuid, int hashedCommand) { + confusers.set("users." + uuid + "." + co + "." + hashedCommand, 0); + } + + static long getLimitResetDelayGlobal(String command) { + long delay = 0; + String delayString = ""; + delayString = conf.getString( + "global." + command + ".limit_reset_delay", "0"); + delay = parseTime(delayString); + return delay; + } + + static Set getLimitResetCommandsGlobal() { + return conf.getConfigurationSection("global").getKeys(false); + } + + private static int parseTime(String time) { + String[] timeString = time.split(" ", 2); + if (timeString[0].equals("cancel")) { + return -65535; + } + int timeNumber = Integer.valueOf(timeString[0]); + int timeMultiplier = 1; + if (timeString.length > 1) { + String timeUnit = timeString[1]; + switch (timeUnit) { + case "minute": + case "minutes": + timeMultiplier = 60; + break; + case "hour": + case "hours": + timeMultiplier = 60 * 60; + break; + case "day": + case "days": + timeMultiplier = 60 * 60 * 24; + break; + case "week": + case "weeks": + timeMultiplier = 60 * 60 * 24 * 7; + break; + case "month": + case "months": + timeMultiplier = 60 * 60 * 24 * 30; + break; + default: + timeMultiplier = 1; + break; + } + } + return timeNumber * timeMultiplier; + } + + public static String getLimitResetNowMessage() { + 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/BoosCoolDown.java b/src/main/java/cz/boosik/boosCooldown/BoosCoolDown.java index d93af5f..4d69ebf 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosCoolDown.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosCoolDown.java @@ -1,17 +1,8 @@ package cz.boosik.boosCooldown; -import java.io.IOException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Set; -import java.util.UUID; -import java.util.logging.Logger; - +import cz.boosik.boosCooldown.Listeners.*; import net.milkbowl.vault.Vault; import net.milkbowl.vault.economy.Economy; - import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -26,535 +17,439 @@ import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitScheduler; import org.mcstats.MetricsLite; - import util.boosChat; -import cz.boosik.boosCooldown.Listeners.BoosEntityDamageListener; -import cz.boosik.boosCooldown.Listeners.BoosPlayerDeathListener; -import cz.boosik.boosCooldown.Listeners.BoosPlayerGameModeChangeListener; -import cz.boosik.boosCooldown.Listeners.BoosPlayerInteractListener; -import cz.boosik.boosCooldown.Listeners.BoosPlayerMoveListener; -import cz.boosik.boosCooldown.Listeners.BoosPlayerToggleSneakListener; -import cz.boosik.boosCooldown.Listeners.BoosPlayerToggleSprintListener; -import cz.boosik.boosCooldown.Listeners.BoosSignChangeListener; -import cz.boosik.boosCooldown.Listeners.BoosSignInteractListener; -/** - * Hlavn� t��da pluginu. T��da je potomkem JavaPlugin a implementuje Runnable. - * Tato t��da se star� o ve�ker� inicializace p�i spu�t�n� a ukon�en� pluginu. - * Toto zahrnuje zji�t�n�, zda je k dispozici plugin Vault a ekonomick� plugin, - * registraci poslucha�� a tak� se star� o funkce v�ech kontroln�ch a - * konfigura�n�ch p��kaz�. Periodicky tak� ukl�d� soubor datab�ze v intervalu - * nastaven�m v konfiguraci. - * - * @author Jakub Kol�� - * - */ +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Set; +import java.util.UUID; +import java.util.logging.Logger; + public class BoosCoolDown extends JavaPlugin implements Runnable { - private static final Logger log = Logger.getLogger("Minecraft"); - private static PluginDescriptionFile pdfFile; - private static Economy economy = null; - private static boolean usingVault = false; - private PluginManager pm; - private static BoosCoolDown instance = null; + private static final Logger log = Logger.getLogger("Minecraft"); + private static PluginDescriptionFile pdfFile; + private static Economy economy = null; + private static boolean usingVault = false; + private PluginManager pm; - /** - * Metoda odes�l� zpr�vy o pou�it� p��kaz� do konzole serveru. - * - * @param player - * jm�no hr��e kter� vykonal p��kaz - * @param command - * vykonan� p��kaz - */ - public static void commandLogger(String player, String command) { - log.info("[" + "boosLogger" + "] " + player + " used command " - + command); - } + public static void commandLogger(String player, String command) { + log.info("[" + "boosLogger" + "] " + player + " used command " + + command); + } - /** - * @return - */ - public static Economy getEconomy() { - return economy; - } + public static Economy getEconomy() { + return economy; + } - /** - * @return - */ - public static Logger getLog() { - return log; - } + public static Logger getLog() { + return log; + } - /** - * Metoda zji��uje na z�klad� opr�vn�n� jestli je plugin aktivn� pro dan�ho - * hr��e nebo ne. - * - * @param player - * specifikovan� hr�� - * @return - */ - 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; - } + static boolean isPluginOnForPlayer(Player player) { + boolean on; + on = !player.hasPermission("booscooldowns.exception") && !player.isOp(); + return on; + } - /** - * Metoda zji��uje jestli je dostupn� plugin Vault a na z�klad� toho vol� - * metodu pro nastaven� ekonomick�ho pluginu a informuje o tom u�ivatele - * pomoc� konzole serveru. - */ - private void initializeVault() { - Plugin x = pm.getPlugin("Vault"); - if (x != null & x instanceof Vault) { - log.info("[" + pdfFile.getName() + "]" - + " found [Vault] searching for economy plugin."); - usingVault = true; - if (setupEconomy()) { - log.info("[" + pdfFile.getName() + "]" + " found [" - + economy.getName() - + "] plugin, enabling prices support."); - } else { - log.info("[" - + pdfFile.getName() - + "]" - + " economy plugin not found, disabling prices support."); - } - } else { - log.info("[" + pdfFile.getName() + "]" - + " [Vault] not found disabling economy support."); - usingVault = false; - } - } + private static void startLimitResetTimersGlobal() { + YamlConfiguration confusers = BoosConfigManager.getConfusers(); + ConfigurationSection global = confusers + .getConfigurationSection("global"); + if (global != null) { + Set globalKeys = global.getKeys(false); + BukkitScheduler scheduler = Bukkit.getScheduler(); + for (String key : globalKeys) { + String confTime = confusers.getString("global." + key + + ".reset"); + long limitResetDelay = BoosConfigManager + .getLimitResetDelayGlobal(key); + Date endDate = getTime(confTime); + Date startDate = getCurrTime(); + Calendar calcurrTime = Calendar.getInstance(); + calcurrTime.setTime(startDate); + Calendar callastTime = Calendar.getInstance(); + callastTime.setTime(endDate); + long time = secondsBetween(calcurrTime, callastTime, + limitResetDelay); + if (limitResetDelay != -65535) { + if (time <= 0) { + time = 1; + } + BoosCoolDown.getLog().info( + "[boosCooldowns] Starting timer for " + time + + " seconds to reset limits for command " + + key); + scheduler.scheduleSyncDelayedTask(Bukkit.getPluginManager() + .getPlugin("boosCooldowns"), + new BoosGlobalLimitResetRunnable(key), time * 20); + } else { + BoosCoolDown.getLog().info( + "[boosCooldowns] Stoping timer to reset limits for command " + + key); + } + } + } + } - /* - * (non-Javadoc) - * - * @see - * org.bukkit.plugin.java.JavaPlugin#onCommand(org.bukkit.command.CommandSender - * , org.bukkit.command.Command, java.lang.String, java.lang.String[]) - */ - @SuppressWarnings("deprecation") - @Override - 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")) { - 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; - Set commands = BoosConfigManager - .getCommands(send); - for (String comm : commands) { - int lim = BoosConfigManager.getLimit(comm, send); - BoosLimitManager.getLimitListMessages(send, comm, - lim); - } - } catch (ClassCastException e) { - log.warning("You cannot use this command from console!"); - } - return true; - } - else if (sender.hasPermission("booscooldowns.globalreset") - && args[0].equalsIgnoreCase("startglobalreset")) { - BoosLimitManager.setGlobalLimitResetDate(); - startLimitResetTimersGlobal(); - return true; - } - } - else if (args.length == 2) { - String jmeno = args[1]; - Player player = Bukkit.getPlayerExact(jmeno); - UUID uuid = player.getUniqueId(); - if (sender.hasPermission("booscooldowns.clearcooldowns") - && args[0].equalsIgnoreCase("clearcooldowns")) { - String co = "cooldown"; - BoosConfigManager.clearSomething(co, uuid); - 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"; - BoosConfigManager.clearSomething(co, uuid); - 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"; - BoosConfigManager.clearSomething(co, uuid); - boosChat.sendMessageToCommandSender(sender, - "&6[" + pdfFile.getName() + "]&e" - + " warmups of player " + jmeno - + " cleared"); - return true; - } - } - else if (args.length == 3) { - String jmeno = args[1]; - Player player = Bukkit.getPlayerExact(jmeno); - UUID uuid = player.getUniqueId(); - String command2 = args[2].trim(); - if (sender.hasPermission("booscooldowns.clearcooldowns") - && args[0].equalsIgnoreCase("clearcooldowns")) { - String co = "cooldown"; - BoosConfigManager.clearSomething(co, uuid, command2); - boosChat.sendMessageToCommandSender(sender, - "&6[" + pdfFile.getName() + "]&e" - + " cooldown for command " + command2 - + " of player " + uuid + " cleared"); - return true; - } else if (sender.hasPermission("booscooldowns.clearuses") - && args[0].equalsIgnoreCase("clearuses")) { - String co = "uses"; - BoosConfigManager.clearSomething(co, uuid, 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"; - BoosConfigManager.clearSomething(co, uuid, command2); - boosChat.sendMessageToCommandSender(sender, - "&6[" + pdfFile.getName() + "]&e" - + " warmups for command " + command2 - + " of player " + jmeno + " cleared"); - return true; + static void startLimitResetTimerGlobal(String key) { + YamlConfiguration confusers = BoosConfigManager.getConfusers(); + BukkitScheduler scheduler = Bukkit.getScheduler(); + String confTime = confusers.getString("global." + key + ".reset"); + long limitResetDelay = BoosConfigManager.getLimitResetDelayGlobal(key); + Date endDate = getTime(confTime); + Date startDate = getCurrTime(); + Calendar calcurrTime = Calendar.getInstance(); + calcurrTime.setTime(startDate); + Calendar callastTime = Calendar.getInstance(); + callastTime.setTime(endDate); + long time = secondsBetween(calcurrTime, callastTime, limitResetDelay); + if (limitResetDelay != -65535) { + if (time <= 0) { + time = 1; + } + BoosCoolDown.getLog().info( + "[boosCooldowns] Starting timer for " + time + + " seconds to reset limits for command " + key); + scheduler.scheduleSyncDelayedTask(Bukkit.getPluginManager() + .getPlugin("boosCooldowns"), + new BoosGlobalLimitResetRunnable(key), time * 20); + } else { + BoosCoolDown.getLog().info( + "[boosCooldowns] Stoping timer to reset limits for command " + + key); + } + } - } - } - else if (args.length == 4) { - if (sender.hasPermission("booscooldowns.set") - && args[0].equalsIgnoreCase("set")) { - String what = args[1]; - String comm = args[2]; - String value = args[3]; - String group = "default"; - if (comm.startsWith("/") || comm.equals("*")) { - if (comm.contains("_")) { - comm = comm.replace("_", " "); - } - BoosConfigManager.setAddToConfigFile(group, comm, what, - value); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e " + what - + " for command" + comm + " in group " + group - + " is now set to " + value); - return true; - } else { - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " Command has to start with \"/\"."); - return true; - } - } + private static long secondsBetween(Calendar startDate, Calendar endDate, + long limitResetDelay) { + long secondsBetween = 0; + secondsBetween = ((endDate.getTimeInMillis() - startDate + .getTimeInMillis()) / 1000) + limitResetDelay; + return secondsBetween; + } - } - else if (args.length == 5) { - if (sender.hasPermission("booscooldowns.set") - && args[0].equalsIgnoreCase("set")) { - String what = args[1]; - String comm = args[2]; - String value = args[3]; - String group = args[4]; - if (comm.startsWith("/") || comm.equals("*")) { - if (comm.contains("_")) { - comm = comm.replace("_", " "); - } - BoosConfigManager.setAddToConfigFile(group, comm, what, - value); - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e " + what - + " for command" + comm + " in group " + group - + " is now set to " + value); - return true; - } else { - boosChat.sendMessageToCommandSender(sender, "&6[" - + pdfFile.getName() + "]&e" - + " Command has to start with \"/\"."); - return true; - } - } + private static Date getCurrTime() { + String currTime = ""; + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + currTime = sdf.format(cal.getTime()); + Date time; + try { + time = sdf.parse(currTime); + return time; + } catch (ParseException e) { + return null; + } + } - } else { + private static Date getTime(String confTime) { + if (confTime != null && !confTime.equals("")) { + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + Date lastDate; + + try { + lastDate = sdf.parse(confTime); + return lastDate; + } catch (ParseException e) { + return null; + } + } + return null; + } + + private void initializeVault() { + Plugin x = pm.getPlugin("Vault"); + if (x != null & x instanceof Vault) { + log.info("[" + pdfFile.getName() + "]" + + " found [Vault] searching for economy plugin."); + usingVault = true; + if (setupEconomy()) { + log.info("[" + pdfFile.getName() + "]" + " found [" + + economy.getName() + + "] plugin, enabling prices support."); + } else { + log.info("[" + + pdfFile.getName() + + "]" + + " economy plugin not found, disabling prices support."); + } + } else { + log.info("[" + pdfFile.getName() + "]" + + " [Vault] not found disabling economy support."); + usingVault = false; + } + } + + @SuppressWarnings("deprecation") + @Override + 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")) { + 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; + Set commands = BoosConfigManager + .getCommands(send); + for (String comm : commands) { + int lim = BoosConfigManager.getLimit(comm, send); + BoosLimitManager.getLimitListMessages(send, comm, + lim); + } + } catch (ClassCastException e) { + log.warning("You cannot use this command from console!"); + } + return true; + } else if (sender.hasPermission("booscooldowns.globalreset") + && args[0].equalsIgnoreCase("startglobalreset")) { + BoosLimitManager.setGlobalLimitResetDate(); + startLimitResetTimersGlobal(); + return true; + } + } else if (args.length == 2) { + String jmeno = args[1]; + Player player = Bukkit.getPlayerExact(jmeno); + UUID uuid = player.getUniqueId(); + if (sender.hasPermission("booscooldowns.clearcooldowns") + && args[0].equalsIgnoreCase("clearcooldowns")) { + String co = "cooldown"; + BoosConfigManager.clearSomething(co, uuid); + 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"; + BoosConfigManager.clearSomething(co, uuid); + 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"; + BoosConfigManager.clearSomething(co, uuid); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " warmups of player " + jmeno + + " cleared"); + return true; + } + } else if (args.length == 3) { + String jmeno = args[1]; + Player player = Bukkit.getPlayerExact(jmeno); + UUID uuid = player.getUniqueId(); + String command2 = args[2].trim(); + if (sender.hasPermission("booscooldowns.clearcooldowns") + && args[0].equalsIgnoreCase("clearcooldowns")) { + String co = "cooldown"; + BoosConfigManager.clearSomething(co, uuid, command2); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " cooldown for command " + command2 + + " of player " + uuid + " cleared"); + return true; + } else if (sender.hasPermission("booscooldowns.clearuses") + && args[0].equalsIgnoreCase("clearuses")) { + String co = "uses"; + BoosConfigManager.clearSomething(co, uuid, 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"; + BoosConfigManager.clearSomething(co, uuid, command2); + boosChat.sendMessageToCommandSender(sender, + "&6[" + pdfFile.getName() + "]&e" + + " warmups for command " + command2 + + " of player " + jmeno + " cleared"); + return true; + + } + } else if (args.length == 4) { + if (sender.hasPermission("booscooldowns.set") + && args[0].equalsIgnoreCase("set")) { + String what = args[1]; + String comm = args[2]; + String value = args[3]; + String group = "default"; + if (comm.startsWith("/") || comm.equals("*")) { + if (comm.contains("_")) { + comm = comm.replace("_", " "); + } + BoosConfigManager.setAddToConfigFile(group, comm, what, + value); + boosChat.sendMessageToCommandSender(sender, "&6[" + + pdfFile.getName() + "]&e " + what + + " for command" + comm + " in group " + group + + " is now set to " + value); + return true; + } else { + boosChat.sendMessageToCommandSender(sender, "&6[" + + pdfFile.getName() + "]&e" + + " Command has to start with \"/\"."); + return true; + } + } + + } else if (args.length == 5) { + if (sender.hasPermission("booscooldowns.set") + && args[0].equalsIgnoreCase("set")) { + String what = args[1]; + String comm = args[2]; + String value = args[3]; + String group = args[4]; + if (comm.startsWith("/") || comm.equals("*")) { + if (comm.contains("_")) { + comm = comm.replace("_", " "); + } + BoosConfigManager.setAddToConfigFile(group, comm, what, + value); + boosChat.sendMessageToCommandSender(sender, "&6[" + + pdfFile.getName() + "]&e " + what + + " for command" + comm + " in group " + group + + " is now set to " + value); + return true; + } else { + boosChat.sendMessageToCommandSender(sender, "&6[" + + pdfFile.getName() + "]&e" + + " Command has to start with \"/\"."); + return true; + } + } + + } else { // boosChat.sendMessageToCommandSender(sender, // "&6[" + pdfFile.getName() + "]&e" // + " Invalid command or access denied!"); - return false; - } - } - return false; + return false; + } + } + return false; - } + } - /* - * (non-Javadoc) - * - * @see org.bukkit.plugin.java.JavaPlugin#onDisable() - */ - @Override - public void onDisable() { - if (BoosConfigManager.getClearOnRestart()) { - BoosConfigManager.clear(); - log.info("[" + pdfFile.getName() + "]" + " cooldowns cleared!"); - } else { - BoosConfigManager.saveConfusers(); - log.info("[" + pdfFile.getName() + "]" + " cooldowns saved!"); - } - log.info("[" + pdfFile.getName() + "]" + " version " - + pdfFile.getVersion() + " disabled!"); - } + @Override + public void onDisable() { + if (BoosConfigManager.getClearOnRestart()) { + BoosConfigManager.clear(); + log.info("[" + pdfFile.getName() + "]" + " cooldowns cleared!"); + } else { + BoosConfigManager.saveConfusers(); + log.info("[" + pdfFile.getName() + "]" + " cooldowns saved!"); + } + log.info("[" + pdfFile.getName() + "]" + " version " + + pdfFile.getVersion() + " disabled!"); + } - /* - * (non-Javadoc) - * - * @see org.bukkit.plugin.java.JavaPlugin#onEnable() - */ - @Override - public void onEnable() { - pdfFile = this.getDescription(); - PluginDescriptionFile pdfFile = this.getDescription(); - log.info("[" + pdfFile.getName() + "]" + " version " - + pdfFile.getVersion() + " by " + pdfFile.getAuthors() - + " is enabled!"); - this.saveDefaultConfig(); - new BoosConfigManager(this); - BoosConfigManager.load(); - BoosConfigManager.loadConfusers(); - pm = getServer().getPluginManager(); - registerListeners(); - initializeVault(); - BukkitScheduler scheduler = this.getServer().getScheduler(); - startLimitResetTimersGlobal(); - if (BoosConfigManager.getAutoSave()) { - scheduler.scheduleSyncRepeatingTask(this, this, - BoosConfigManager.getSaveInterval() * 1200, - BoosConfigManager.getSaveInterval() * 1200); - } + @Override + public void onEnable() { + pdfFile = this.getDescription(); + PluginDescriptionFile pdfFile = this.getDescription(); + log.info("[" + pdfFile.getName() + "]" + " version " + + pdfFile.getVersion() + " by " + pdfFile.getAuthors() + + " is enabled!"); + this.saveDefaultConfig(); + new BoosConfigManager(this); + BoosConfigManager.load(); + BoosConfigManager.loadConfusers(); + pm = getServer().getPluginManager(); + registerListeners(); + initializeVault(); + BukkitScheduler scheduler = this.getServer().getScheduler(); + startLimitResetTimersGlobal(); + if (BoosConfigManager.getAutoSave()) { + scheduler.scheduleSyncRepeatingTask(this, this, + BoosConfigManager.getSaveInterval() * 1200, + BoosConfigManager.getSaveInterval() * 1200); + } - if (BoosConfigManager.getClearOnRestart()) { - BoosConfigManager.clear(); - } - try { - MetricsLite metrics = new MetricsLite(this); - metrics.start(); - } catch (IOException e) { - // Failed to submit the stats :-( - } + if (BoosConfigManager.getClearOnRestart()) { + BoosConfigManager.clear(); + } + try { + MetricsLite metrics = new MetricsLite(this); + metrics.start(); + } catch (IOException e) { + // Failed to submit the stats :-( + } - } + } - static void startLimitResetTimersGlobal() { - YamlConfiguration confusers = BoosConfigManager.getConfusers(); - ConfigurationSection global = confusers - .getConfigurationSection("global"); - if (global != null) { - Set globalKeys = global.getKeys(false); - BukkitScheduler scheduler = Bukkit.getScheduler(); - for (String key : globalKeys) { - String confTime = confusers.getString("global." + key - + ".reset"); - long limitResetDelay = BoosConfigManager - .getLimitResetDelayGlobal(key); - Date endDate = getTime(confTime); - Date startDate = getCurrTime(); - Calendar calcurrTime = Calendar.getInstance(); - calcurrTime.setTime(startDate); - Calendar callastTime = Calendar.getInstance(); - callastTime.setTime(endDate); - long time = secondsBetween(calcurrTime, callastTime, - limitResetDelay); - if (limitResetDelay != -65535) { - if (time <= 0) { - time = 1; - } - BoosCoolDown.getLog().info( - "[boosCooldowns] Starting timer for " + time - + " seconds to reset limits for command " - + key); - scheduler.scheduleSyncDelayedTask(Bukkit.getPluginManager() - .getPlugin("boosCooldowns"), - new BoosGlobalLimitResetRunnable(key), time * 20); - } else { - BoosCoolDown.getLog().info( - "[boosCooldowns] Stoping timer to reset limits for command " - + key); - } - } - } - } + private void registerListeners() { + HandlerList.unregisterAll(this); + pm.registerEvents(new BoosCoolDownListener(this), this); + if (BoosConfigManager.getCancelWarmUpOnDamage()) { + pm.registerEvents(new BoosEntityDamageListener(), this); + } + if (BoosConfigManager.getCleanCooldownsOnDeath() + || BoosConfigManager.getCleanUsesOnDeath() + || BoosConfigManager.getStartCooldownsOnDeath()) { + pm.registerEvents(new BoosPlayerDeathListener(), this); + } + if (BoosConfigManager.getCancelWarmUpOnGameModeChange()) { + pm.registerEvents(new BoosPlayerGameModeChangeListener(), this); + } + if (BoosConfigManager.getBlockInteractDuringWarmup()) { + pm.registerEvents(new BoosPlayerInteractListener(), this); + } + if (BoosConfigManager.getCancelWarmupOnMove()) { + pm.registerEvents(new BoosPlayerMoveListener(), this); + } + if (BoosConfigManager.getCancelWarmupOnSneak()) { + pm.registerEvents(new BoosPlayerToggleSneakListener(), this); + } + if (BoosConfigManager.getCancelWarmupOnSprint()) { + pm.registerEvents(new BoosPlayerToggleSprintListener(), this); + } + if (BoosConfigManager.getSignCommands()) { + pm.registerEvents(new BoosSignChangeListener(), this); + pm.registerEvents(new BoosSignInteractListener(this), this); + } + } - static void startLimitResetTimerGlobal(String key) { - YamlConfiguration confusers = BoosConfigManager.getConfusers(); - BukkitScheduler scheduler = Bukkit.getScheduler(); - String confTime = confusers.getString("global." + key + ".reset"); - long limitResetDelay = BoosConfigManager.getLimitResetDelayGlobal(key); - Date endDate = getTime(confTime); - Date startDate = getCurrTime(); - Calendar calcurrTime = Calendar.getInstance(); - calcurrTime.setTime(startDate); - Calendar callastTime = Calendar.getInstance(); - callastTime.setTime(endDate); - long time = secondsBetween(calcurrTime, callastTime, limitResetDelay); - if (limitResetDelay != -65535) { - if (time <= 0) { - time = 1; - } - BoosCoolDown.getLog().info( - "[boosCooldowns] Starting timer for " + time - + " seconds to reset limits for command " + key); - scheduler.scheduleSyncDelayedTask(Bukkit.getPluginManager() - .getPlugin("boosCooldowns"), - new BoosGlobalLimitResetRunnable(key), time * 20); - } else { - BoosCoolDown.getLog().info( - "[boosCooldowns] Stoping timer to reset limits for command " - + key); - } - } + private void reload() { + BoosConfigManager.reload(); + registerListeners(); + } - static long secondsBetween(Calendar startDate, Calendar endDate, - long limitResetDelay) { - long secondsBetween = 0; - secondsBetween = ((endDate.getTimeInMillis() - startDate - .getTimeInMillis()) / 1000) + limitResetDelay; - return secondsBetween; - } + @Override + public void run() { + BoosConfigManager.saveConfusers(); + BoosConfigManager.loadConfusers(); + log.info("[boosCooldowns] Config saved!"); + } - static Date getCurrTime() { - String currTime = ""; - Calendar cal = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - currTime = sdf.format(cal.getTime()); - Date time = null; - try { - time = sdf.parse(currTime); - return time; - } catch (ParseException e) { - return null; - } - } - - static Date getTime(String confTime) { - if (confTime != null && !confTime.equals("")) { - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - Date lastDate = null; - - try { - lastDate = sdf.parse(confTime); - return lastDate; - } catch (ParseException e) { - return null; - } - } - return null; - } - - /** - * Metoda registruje poslucha�e v PluginManageru na z�klad� konfigurace - * pluginu. Registroj� se v�dy jen nezbytn� poslucha�i. Poslucha�i pro - * vypnut� funkce nejsou registrov�ni. - */ - private void registerListeners() { - HandlerList.unregisterAll(this); - pm.registerEvents(new BoosCoolDownListener(this), this); - if (BoosConfigManager.getCancelWarmUpOnDamage()) { - pm.registerEvents(new BoosEntityDamageListener(), this); - } - if (BoosConfigManager.getCleanCooldownsOnDeath() - || BoosConfigManager.getCleanUsesOnDeath() - || BoosConfigManager.getStartCooldownsOnDeath()) { - pm.registerEvents(new BoosPlayerDeathListener(), this); - } - if (BoosConfigManager.getCancelWarmUpOnGameModeChange()) { - pm.registerEvents(new BoosPlayerGameModeChangeListener(), this); - } - if (BoosConfigManager.getBlockInteractDuringWarmup()) { - pm.registerEvents(new BoosPlayerInteractListener(), this); - } - if (BoosConfigManager.getCancelWarmupOnMove()) { - pm.registerEvents(new BoosPlayerMoveListener(), this); - } - if (BoosConfigManager.getCancelWarmupOnSneak()) { - pm.registerEvents(new BoosPlayerToggleSneakListener(), this); - } - if (BoosConfigManager.getCancelWarmupOnSprint()) { - pm.registerEvents(new BoosPlayerToggleSprintListener(), this); - } - if (BoosConfigManager.getSignCommands()) { - pm.registerEvents(new BoosSignChangeListener(), this); - pm.registerEvents(new BoosSignInteractListener(this), this); - } - } - - /** - * Metoda vol� metodu pro znovuna�ten� konfigura�n�ho souboru a metodu pro - * registraci poslucha��. - */ - private void reload() { - BoosConfigManager.reload(); - registerListeners(); - } - - /* - * (non-Javadoc) - * - * @see java.lang.Runnable#run() - */ - @Override - public void run() { - BoosConfigManager.saveConfusers(); - BoosConfigManager.loadConfusers(); - log.info("[boosCooldowns] Config saved!"); - } - - /** - * Metoda vrac� hodnotu true, pokud je na serveru dostupn� Ekonomick� plugin - * kompatibiln� s pluginem Vault. - * - * @return true pokud je dostupn� ekonomick� plugin kompatibiln� s pluginem - * Vault, jinak vrac� hodnotu false - */ - private boolean setupEconomy() { - if (usingVault) { - RegisteredServiceProvider economyProvider = getServer() - .getServicesManager().getRegistration( - net.milkbowl.vault.economy.Economy.class); - if (economyProvider != null) { - economy = economyProvider.getProvider(); - } - return (economy != null); - } - return false; - } - - public static BoosCoolDown getInstance() { - if (instance == null) { - instance = new BoosCoolDown(); - } - return instance; - } + private boolean setupEconomy() { + if (usingVault) { + RegisteredServiceProvider economyProvider = getServer() + .getServicesManager().getRegistration( + net.milkbowl.vault.economy.Economy.class); + if (economyProvider != null) { + economy = economyProvider.getProvider(); + } + return (economy != null); + } + return false; + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java b/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java index e7bcf4c..0a3040a 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosCoolDownListener.java @@ -1,283 +1,223 @@ package cz.boosik.boosCooldown; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; - import util.boosChat; -/** - * Hlavn� poslucha�, kter� naslouch� ud�losti pou�it� p��kazu hr��em. - * Kontroluje, jestli jsou pro p��kaz nastaveny omezen� a na z�klad� tohoto - * spou�t� �asova�e a vol� metody spojen� s poplatky a limity. - * - * @author Jakub Kol�� - * - */ -public class BoosCoolDownListener implements Listener { - private static BoosCoolDown plugin; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; - /** - * @param instance - */ - public BoosCoolDownListener(BoosCoolDown instance) { - plugin = instance; - } +class BoosCoolDownListener implements Listener { + private static BoosCoolDown plugin; - /** - * Metoda zkontroluje pomoc� vol�n� dal��ch metod, jestli p�ikaz kter� hr�� - * pou�il je n�jak�m zp�sobem omezen� a na z�klad� toho je bu� ud�lost - * pou�it� p��kazu stornov�na, nebo ne. - * - * @param event - * ud�lost PlayerCommandPreprocessEvent - * @param player - * hr�� kter� spustil tuto ud�lost - * @param regexCommad - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @param originalCommand - * origin�ln� p��kaz kter� hr�� pou�il - * @param warmupTime - * warmup doba nastaven� pro regexCommand - * @param cooldownTime - * cooldown doba nastaven� pro regexCommand - * @param price - * cena nastaven� pro regexCommand - * @param limit - * limit nastaven� pro regexCommand - */ - private void checkRestrictions(PlayerCommandPreprocessEvent event, - Player player, String regexCommad, String originalCommand, - int warmupTime, int cooldownTime, double price, String item, - int count, int limit, int xpPrice) { - boolean blocked = false; - if (limit != -1) { - blocked = BoosLimitManager.blocked(player, regexCommad, - originalCommand, limit); - } - if (!blocked) { - if (warmupTime > 0) { - if (!player.hasPermission("booscooldowns.nowarmup") - && !player.hasPermission("booscooldowns.nowarmup." - + originalCommand)) { - start(event, player, regexCommad, originalCommand, - warmupTime, cooldownTime); - } - } else if (BoosPriceManager.has(player, price) - & BoosItemCostManager.has(player, item, count) - & BoosXpCostManager.has(player, xpPrice)) { - if (BoosCoolDownManager.coolDown(player, regexCommad, - originalCommand, cooldownTime)) { - event.setCancelled(true); - } - } - if (BoosPriceManager.has(player, price) - & BoosItemCostManager.has(player, item, count) - & BoosXpCostManager.has(player, xpPrice)) { - if (!event.isCancelled()) { - BoosPriceManager.payForCommand(event, player, regexCommad, - originalCommand, price); - } - if (!event.isCancelled()) { - BoosItemCostManager.payItemForCommand(event, player, - regexCommad, originalCommand, item, count); - } - if (!event.isCancelled()) { - BoosXpCostManager.payXPForCommand(event, player, - regexCommad, originalCommand, xpPrice); - } - } else { - if (!BoosPriceManager.has(player, price) - & !BoosWarmUpManager.isWarmUpProcess(player, - regexCommad)) { - String unit; - String msg = ""; - if (price == 1) { - unit = BoosCoolDown.getEconomy().currencyNameSingular(); - } else { - unit = BoosCoolDown.getEconomy().currencyNamePlural(); - } - msg = String.format( - BoosConfigManager.getInsufficientFundsMessage(), - (price + " " + unit), - BoosCoolDown.getEconomy().format( - BoosCoolDown.getEconomy() - .getBalance(player))); - msg = msg.replaceAll("&command&", originalCommand); - boosChat.sendMessageToPlayer(player, msg); - } - if (!BoosItemCostManager.has(player, item, count) - & !BoosWarmUpManager.isWarmUpProcess(player, - regexCommad)) { - String msg = ""; - msg = String.format( - BoosConfigManager.getInsufficientItemsMessage(), - (count + " " + item)); - msg = msg.replaceAll("&command&", originalCommand); - boosChat.sendMessageToPlayer(player, msg); - } - if (!BoosXpCostManager.has(player, xpPrice) - & !BoosWarmUpManager.isWarmUpProcess(player, - regexCommad)) { - String msg = ""; - msg = String.format( - BoosConfigManager.getInsufficientXpMessage(), - (xpPrice)); - msg = msg.replaceAll("&command&", originalCommand); - boosChat.sendMessageToPlayer(player, msg); - } - event.setCancelled(true); - } - if (!event.isCancelled()) { - String msg = String.format(BoosConfigManager.getMessage( - regexCommad, player)); - if (!msg.equals("")) { - boosChat.sendMessageToPlayer(player, msg); - } - } - } else { - event.setCancelled(true); - } - if (!event.isCancelled()) { - BoosLimitManager.setUses(player, regexCommad); - if (BoosConfigManager.getCommandLogging()) { - BoosCoolDown.commandLogger(player.getName(), originalCommand); - } - } - } + public BoosCoolDownListener(BoosCoolDown instance) { + plugin = instance; + } - /** - * Poslucha�, kter� naslouch� ud�losti pou�it� p��kazu a spou�t� se je�t� - * p�ed t�m, ne� je vykon�n efekt tohto p��kazu. Metoda zji��uje, jestli - * p��kaz nen� alias jin�ho p��kazu a tak� jestli se p��kaz kter� hr�� - * pou�il shoduje s p��kazem nastaven�m v konfiguraci. Pokud se shoduje, pak - * jsou na�teny informace o warmup dob�, cooldown dob�, poplatku a limitu. - * Tyto hodnoty jsou pot� p�ed�ny metod� checkRestrictions();. - * - * @param event - * ud�lost PlayerCommandPreprocessEvent - */ - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) - private void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { - Player player = event.getPlayer(); - if (event.getMessage().contains(":")) { - Pattern p = Pattern.compile("^/([a-zA-Z0-9_]+):"); - Matcher m = p.matcher(event.getMessage()); - if (m.find()) { - { - boosChat.sendMessageToPlayer(player, BoosConfigManager - .getInvalidCommandSyntaxMessage(player)); - event.setCancelled(true); - return; - } - } - } - String originalCommand = event.getMessage().replace("\\", "\\\\"); - originalCommand = originalCommand.replace("$", "S"); - originalCommand = originalCommand.trim().replaceAll(" +", " "); - String regexCommad = ""; - Set aliases = BoosConfigManager.getAliases(); - Set commands = BoosConfigManager.getCommands(player); - boolean on = true; - String item = ""; - int count = 0; - int warmupTime = 0; - double price = 0; - int limit = -1; - int cooldownTime = 0; - int xpPrice = 0; - on = BoosCoolDown.isPluginOnForPlayer(player); - 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)) { - regexCommad = group; - if (BoosConfigManager.getWarmupEnabled()) { - warmupTime = BoosConfigManager.getWarmUp(regexCommad, - player); - } - if (BoosConfigManager.getCooldownEnabled()) { - cooldownTime = BoosConfigManager.getCoolDown( - regexCommad, player); - } - if (BoosConfigManager.getPriceEnabled()) { - price = BoosConfigManager.getPrice(regexCommad, player); - } - if (BoosConfigManager.getXpPriceEnabled()) { - xpPrice = BoosConfigManager.getXpPrice(regexCommad, - player); - } - if (BoosConfigManager.getItemCostEnabled()) { - item = BoosConfigManager.getItemCostItem(regexCommad, - player); - count = BoosConfigManager.getItemCostCount(regexCommad, - player); - } - if (BoosConfigManager.getLimitEnabled()) { - limit = BoosConfigManager.getLimit(regexCommad, player); - } - break; - } - } - this.checkRestrictions(event, player, regexCommad, originalCommand, - warmupTime, cooldownTime, price, item, count, limit, - xpPrice); - } - } + private void checkRestrictions(PlayerCommandPreprocessEvent event, + Player player, String regexCommad, String originalCommand, + int warmupTime, int cooldownTime, double price, String item, + int count, int limit, int xpPrice) { + boolean blocked = false; + if (limit != -1) { + blocked = BoosLimitManager.blocked(player, regexCommad, + originalCommand, limit); + } + if (!blocked) { + if (warmupTime > 0) { + if (!player.hasPermission("booscooldowns.nowarmup") + && !player.hasPermission("booscooldowns.nowarmup." + + originalCommand)) { + start(event, player, regexCommad, originalCommand, + warmupTime, cooldownTime); + } + } else if (BoosPriceManager.has(player, price) + & BoosItemCostManager.has(player, item, count) + & BoosXpCostManager.has(player, xpPrice)) { + if (BoosCoolDownManager.coolDown(player, regexCommad, + originalCommand, cooldownTime)) { + event.setCancelled(true); + } + } + if (BoosPriceManager.has(player, price) + & BoosItemCostManager.has(player, item, count) + & BoosXpCostManager.has(player, xpPrice)) { + if (!event.isCancelled()) { + BoosPriceManager.payForCommand(event, player, regexCommad, + originalCommand, price); + } + if (!event.isCancelled()) { + BoosItemCostManager.payItemForCommand(event, player, + regexCommad, originalCommand, item, count); + } + if (!event.isCancelled()) { + BoosXpCostManager.payXPForCommand(event, player, + regexCommad, originalCommand, xpPrice); + } + } else { + if (!BoosPriceManager.has(player, price) + & !BoosWarmUpManager.isWarmUpProcess(player, + regexCommad)) { + String unit; + String msg = ""; + if (price == 1) { + unit = BoosCoolDown.getEconomy().currencyNameSingular(); + } else { + unit = BoosCoolDown.getEconomy().currencyNamePlural(); + } + msg = String.format( + BoosConfigManager.getInsufficientFundsMessage(), + (price + " " + unit), + BoosCoolDown.getEconomy().format( + BoosCoolDown.getEconomy() + .getBalance(player))); + msg = msg.replaceAll("&command&", originalCommand); + boosChat.sendMessageToPlayer(player, msg); + } + if (!BoosItemCostManager.has(player, item, count) + & !BoosWarmUpManager.isWarmUpProcess(player, + regexCommad)) { + String msg = ""; + msg = String.format( + BoosConfigManager.getInsufficientItemsMessage(), + (count + " " + item)); + msg = msg.replaceAll("&command&", originalCommand); + boosChat.sendMessageToPlayer(player, msg); + } + if (!BoosXpCostManager.has(player, xpPrice) + & !BoosWarmUpManager.isWarmUpProcess(player, + regexCommad)) { + String msg = ""; + msg = String.format( + BoosConfigManager.getInsufficientXpMessage(), + (xpPrice)); + msg = msg.replaceAll("&command&", originalCommand); + boosChat.sendMessageToPlayer(player, msg); + } + event.setCancelled(true); + } + if (!event.isCancelled()) { + String msg = String.format(BoosConfigManager.getMessage( + regexCommad, player)); + if (!msg.equals("")) { + boosChat.sendMessageToPlayer(player, msg); + } + } + } else { + event.setCancelled(true); + } + if (!event.isCancelled()) { + List linkGroup = BoosConfigManager.getSharedLimits( + regexCommad, player); + if (linkGroup.isEmpty()) { + BoosLimitManager.setUses(player, regexCommad); + } else { + BoosLimitManager.setUses(player, regexCommad); + for (String a : linkGroup) { + BoosLimitManager.setUses(player, a); + } + } + if (BoosConfigManager.getCommandLogging()) { + BoosCoolDown.commandLogger(player.getName(), originalCommand); + } + } + } - /** - * Metoda spou�t� warmup a cooldown �asova�e, p��padn� je ukon�uje, pokud - * ji� tyto �asova�e skon�ili. - * - * @param event - * ud�lost PlayerCommandPreprocessEvent - * @param player - * hr�� kter� spustil tuto ud�lost - * @param regexCommad - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @param originalCommand - * origin�ln� p��kaz kter� hr�� pou�il - * @param warmupTime - * warmup doba nastaven� pro regexCommand - * @param cooldownTime - * cooldown doba nastaven� pro regexCommand - */ - private void start(PlayerCommandPreprocessEvent event, Player player, - 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 { - event.setCancelled(true); - return; - } - } else { - if (BoosCoolDownManager.coolDown(player, regexCommad, - originalCommand, cooldownTime)) { - event.setCancelled(true); - return; - } else { - BoosWarmUpManager.removeWarmUpOK(player, regexCommad); - return; - } - } - } + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + private void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { + Player player = event.getPlayer(); + if (event.getMessage().contains(":")) { + Pattern p = Pattern.compile("^/([a-zA-Z0-9_]+):"); + Matcher m = p.matcher(event.getMessage()); + if (m.find()) { + { + boosChat.sendMessageToPlayer(player, BoosConfigManager + .getInvalidCommandSyntaxMessage()); + event.setCancelled(true); + return; + } + } + } + String originalCommand = event.getMessage().replace("\\", "\\\\"); + originalCommand = originalCommand.replace("$", "S"); + originalCommand = originalCommand.trim().replaceAll(" +", " "); + String regexCommad = ""; + Set aliases = BoosConfigManager.getAliases(); + Set commands = BoosConfigManager.getCommands(player); + boolean on; + String item = ""; + int count = 0; + int warmupTime = 0; + double price = 0; + int limit = -1; + int cooldownTime = 0; + int xpPrice = 0; + on = BoosCoolDown.isPluginOnForPlayer(player); + 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)) { + regexCommad = group; + if (BoosConfigManager.getWarmupEnabled()) { + warmupTime = BoosConfigManager.getWarmUp(regexCommad, + player); + } + if (BoosConfigManager.getCooldownEnabled()) { + cooldownTime = BoosConfigManager.getCoolDown( + regexCommad, player); + } + if (BoosConfigManager.getPriceEnabled()) { + price = BoosConfigManager.getPrice(regexCommad, player); + } + if (BoosConfigManager.getXpPriceEnabled()) { + xpPrice = BoosConfigManager.getXpPrice(regexCommad, + player); + } + if (BoosConfigManager.getItemCostEnabled()) { + item = BoosConfigManager.getItemCostItem(regexCommad, + player); + count = BoosConfigManager.getItemCostCount(regexCommad, + player); + } + if (BoosConfigManager.getLimitEnabled()) { + limit = BoosConfigManager.getLimit(regexCommad, player); + } + break; + } + } + this.checkRestrictions(event, player, regexCommad, originalCommand, + warmupTime, cooldownTime, price, item, count, limit, + xpPrice); + } + } + + private void start(PlayerCommandPreprocessEvent event, Player player, + 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); + } else { + event.setCancelled(true); + } + } else if (BoosCoolDownManager.coolDown(player, regexCommad, + originalCommand, cooldownTime)) { + event.setCancelled(true); + } else { + BoosWarmUpManager.removeWarmUpOK(player, regexCommad); + } + } } \ No newline at end of file diff --git a/src/main/java/cz/boosik/boosCooldown/BoosCoolDownManager.java b/src/main/java/cz/boosik/boosCooldown/BoosCoolDownManager.java index 96f6558..5fc151c 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosCoolDownManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosCoolDownManager.java @@ -1,300 +1,193 @@ package cz.boosik.boosCooldown; +import org.bukkit.entity.Player; +import util.boosChat; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; -import org.bukkit.entity.Player; - -import util.boosChat; - -/** - * T��da obsahuje ve�ker� metody pot�ebn� k ��zen� cooldown �asova��. Spou�t�n�, - * ukon�ov�n�, zji��ov�n� zda je cooldown �asova� ji� aktivn�. - * - * @author Jakub Kol�� - * - */ public class BoosCoolDownManager { - /** - * Metoda ukon�uje specifikovan� cooldown �asova� pro specifikovan�ho hr��e. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - */ - static void cancelCooldown(Player player, String regexCommand) { - int pre2 = regexCommand.toLowerCase().hashCode(); - BoosConfigManager.getConfusers().set( - "users." + player.getUniqueId() + ".cooldown." + pre2, null); - } - /** - * Metoda vrac� hodnotu boolean na z�klad� toho, jestli m� specifikovan� - * p��kaz aktivn� cooldown �asova�. - * - * @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 coolDownSeconds - * cooldown doba v sekund�ch, nastaven� pro regexCommand v - * konfiguraci - * @return true pokud je p��kaz na cooldown �asova�i, jinak false - */ - static boolean cd(Player player, String regexCommand, - String originalCommand, int coolDownSeconds) { - Date lastTime = getTime(player, regexCommand); - List linkGroup = BoosConfigManager.getSharedCooldowns( - regexCommand, player); - if (lastTime == null) { - if (linkGroup.isEmpty()) { - setTime(player, regexCommand); - } else { - setTime(player, regexCommand); - for (String a : linkGroup) { - setTime(player, a); - } - } - return false; - } else { - Calendar calcurrTime = Calendar.getInstance(); - calcurrTime.setTime(getCurrTime()); - Calendar callastTime = Calendar.getInstance(); - callastTime.setTime(lastTime); - long secondsBetween = secondsBetween(callastTime, calcurrTime); - long waitSeconds = coolDownSeconds - secondsBetween; - long waitMinutes = (long) Math.ceil(waitSeconds / 60.0); - long waitHours = (long) Math.ceil(waitMinutes / 60.0); - if (secondsBetween > coolDownSeconds) { - if (linkGroup.isEmpty()) { - setTime(player, regexCommand); - } else { - setTime(player, regexCommand); - for (String a : linkGroup) { - setTime(player, a); - } - } - return false; - } else { - String msg = BoosConfigManager.getCoolDownMessage(); - msg = msg.replaceAll("&command&", originalCommand); - if (waitSeconds >= 60 && 3600 >= waitSeconds) { - msg = msg.replaceAll("&seconds&", - Long.toString(waitMinutes)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitMinutesMessage()); - } else if (waitMinutes >= 60) { - msg = msg.replaceAll("&seconds&", Long.toString(waitHours)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitHoursMessage()); - } else { - String secs = Long.toString(waitSeconds); - if (secs.equals("0")) { - secs = "1"; - } - msg = msg.replaceAll("&seconds&", secs); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitSecondsMessage()); - } - boosChat.sendMessageToPlayer(player, msg); - return true; - } - } - } + static void cancelCooldown(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + BoosConfigManager.getConfusers().set( + "users." + player.getUniqueId() + ".cooldown." + pre2, null); + } - /** - * Metoda kontroluje, jestli hr�� nedisponuje opr�vn�n�mi, kter� obch�zej� - * cooldown �asova�e. Pokud t�mito opr�vn�n�mi hr�� disponuje, pak metoda - * vrac� false. Pokud hr�� nedisponuje t�mito opr�vn�n�mi, vrac� hodnotu - * vr�cenou metodou cd();. - * - * @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 time - * cooldown doba v sekund�ch, nastaven� pro regexCommand v - * konfiguraci - * @return false pokud hr�� disponuje opr�vn�n�mi, jinak hodnotu vr�cenou - * metodou cd();. - */ - 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; - } + private static boolean cd(Player player, String regexCommand, + String originalCommand, int coolDownSeconds) { + Date lastTime = getTime(player, regexCommand); + List linkGroup = BoosConfigManager.getSharedCooldowns( + regexCommand, player); + if (lastTime == null) { + if (linkGroup.isEmpty()) { + setTime(player, regexCommand); + } else { + setTime(player, regexCommand); + for (String a : linkGroup) { + setTime(player, a); + } + } + return false; + } else { + Calendar calcurrTime = Calendar.getInstance(); + calcurrTime.setTime(getCurrTime()); + Calendar callastTime = Calendar.getInstance(); + callastTime.setTime(lastTime); + long secondsBetween = secondsBetween(callastTime, calcurrTime); + long waitSeconds = coolDownSeconds - secondsBetween; + long waitMinutes = (long) Math.ceil(waitSeconds / 60.0); + long waitHours = (long) Math.ceil(waitMinutes / 60.0); + if (secondsBetween > coolDownSeconds) { + if (linkGroup.isEmpty()) { + setTime(player, regexCommand); + } else { + setTime(player, regexCommand); + for (String a : linkGroup) { + setTime(player, a); + } + } + return false; + } else { + String msg = BoosConfigManager.getCoolDownMessage(); + msg = msg.replaceAll("&command&", originalCommand); + if (waitSeconds >= 60 && 3600 >= waitSeconds) { + msg = msg.replaceAll("&seconds&", + Long.toString(waitMinutes)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitMinutesMessage()); + } else if (waitMinutes >= 60) { + msg = msg.replaceAll("&seconds&", Long.toString(waitHours)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitHoursMessage()); + } else { + String secs = Long.toString(waitSeconds); + if (secs.equals("0")) { + secs = "1"; + } + msg = msg.replaceAll("&seconds&", secs); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitSecondsMessage()); + } + boosChat.sendMessageToPlayer(player, msg); + return true; + } + } + } - /** - * Metoda vrac� sou�asn� p�esn� datum a �as. - * - * @return sou�asn� �as a datum - */ - static Date getCurrTime() { - String currTime = ""; - Calendar cal = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - currTime = sdf.format(cal.getTime()); - Date time = null; + static boolean coolDown(Player player, String regexCommand, + String originalCommand, int time) { + regexCommand = regexCommand.toLowerCase(); + return time > 0 && !player.hasPermission("booscooldowns.nocooldown") && !player.hasPermission("booscooldowns.nocooldown." + originalCommand) && cd(player, regexCommand, originalCommand, time); + } - try { - time = sdf.parse(currTime); - return time; - } catch (ParseException e) { - return null; - } - } + private static Date getCurrTime() { + String currTime = ""; + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + currTime = sdf.format(cal.getTime()); + Date time = null; - /** - * Metoda vrac� datum a �as, kdy hr�� naposledy pou�il dan� p��kaz. - * - * @param player - * specifikovan� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - * @return datum a �as kdy hr�� naposledy pou�il dan� p��kaz - */ - static Date getTime(Player player, String regexCommand) { - int pre2 = regexCommand.toLowerCase().hashCode(); - String confTime = ""; - confTime = BoosConfigManager.getConfusers().getString( - "users." + player.getUniqueId() + ".cooldown." + pre2, null); + try { + time = sdf.parse(currTime); + return time; + } catch (ParseException e) { + return null; + } + } - if (confTime != null && !confTime.equals("")) { - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - Date lastDate = null; + private static Date getTime(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + String confTime = ""; + confTime = BoosConfigManager.getConfusers().getString( + "users." + player.getUniqueId() + ".cooldown." + pre2, null); - try { - lastDate = sdf.parse(confTime); - return lastDate; - } catch (ParseException e) { - return null; - } - } - return null; - } + if (confTime != null && !confTime.equals("")) { + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + Date lastDate = null; - /** - * Metoda vrac� hodnotu boolean na z�klad� toho, jestli m� specifikovan� - * p��kaz aktivn� cooldown �asova�. - * - * @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 time - * cooldown doba v sekund�ch, nastaven� pro regexCommand v - * konfiguraci - * @return false pokud m� p��kaz aktivn� cooldown �asova�, jinak false - */ - static boolean checkCoolDownOK(Player player, String regexCommand, - String originalCommand, int time) { - regexCommand = regexCommand.toLowerCase(); - if (time > 0) { - Date lastTime = getTime(player, regexCommand); - if (lastTime == null) { - return true; - } else { - Calendar calcurrTime = Calendar.getInstance(); - calcurrTime.setTime(getCurrTime()); - Calendar callastTime = Calendar.getInstance(); - callastTime.setTime(lastTime); - long secondsBetween = secondsBetween(callastTime, calcurrTime); - long waitSeconds = time - secondsBetween; - long waitMinutes = (long) Math.ceil(waitSeconds / 60.0); - long waitHours = (long) Math.ceil(waitMinutes / 60.0); - if (secondsBetween > time) { - return true; - } else { - String msg = BoosConfigManager.getCoolDownMessage(); - msg = msg.replaceAll("&command&", originalCommand); - if (waitSeconds >= 60 && 3600 >= waitSeconds) { - msg = msg.replaceAll("&seconds&", - Long.toString(waitMinutes)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitMinutesMessage()); - } else if (waitMinutes >= 60) { - msg = msg.replaceAll("&seconds&", - Long.toString(waitHours)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitHoursMessage()); - } else { - msg = msg.replaceAll("&seconds&", - Long.toString(waitSeconds)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitSecondsMessage()); - } - boosChat.sendMessageToPlayer(player, msg); - return false; - } - } - } - return true; - } + try { + lastDate = sdf.parse(confTime); + return lastDate; + } catch (ParseException e) { + return null; + } + } + return null; + } - /** - * Metoda vrac� hodnotu rozd�lu v sekund�ch mezi dv�mi hodnotami datumu a - * �asu. - * - * @param startDate - * @param endDate - * @return rozd�l v sekund�ch mezi startDate a endDate - */ - static long secondsBetween(Calendar startDate, Calendar endDate) { - long secondsBetween = 0; - secondsBetween = (endDate.getTimeInMillis() - startDate - .getTimeInMillis()) / 1000; - return secondsBetween; - } + static boolean checkCoolDownOK(Player player, String regexCommand, + String originalCommand, int time) { + regexCommand = regexCommand.toLowerCase(); + if (time > 0) { + Date lastTime = getTime(player, regexCommand); + if (lastTime == null) { + return true; + } else { + Calendar calcurrTime = Calendar.getInstance(); + calcurrTime.setTime(getCurrTime()); + Calendar callastTime = Calendar.getInstance(); + callastTime.setTime(lastTime); + long secondsBetween = secondsBetween(callastTime, calcurrTime); + long waitSeconds = time - secondsBetween; + long waitMinutes = (long) Math.ceil(waitSeconds / 60.0); + long waitHours = (long) Math.ceil(waitMinutes / 60.0); + if (secondsBetween > time) { + return true; + } else { + String msg = BoosConfigManager.getCoolDownMessage(); + msg = msg.replaceAll("&command&", originalCommand); + if (waitSeconds >= 60 && 3600 >= waitSeconds) { + msg = msg.replaceAll("&seconds&", + Long.toString(waitMinutes)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitMinutesMessage()); + } else if (waitMinutes >= 60) { + msg = msg.replaceAll("&seconds&", + Long.toString(waitHours)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitHoursMessage()); + } else { + msg = msg.replaceAll("&seconds&", + Long.toString(waitSeconds)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitSecondsMessage()); + } + boosChat.sendMessageToPlayer(player, msg); + return false; + } + } + } + return true; + } - /** - * Metoda ukl�d� do datab�ze datum a �as kdy hr�� naposledy pou�il dan� - * p��kaz. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - */ - 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()); - BoosConfigManager.getConfusers() - .set("users." + player.getUniqueId() + ".cooldown." + pre2, - currTime); - } + private static long secondsBetween(Calendar startDate, Calendar endDate) { + long secondsBetween = 0; + secondsBetween = (endDate.getTimeInMillis() - startDate + .getTimeInMillis()) / 1000; + return secondsBetween; + } - /** - * Metoda spou�t� ve�ker� cooldown �asova�e pro specifick�ho hr��e. - * - * @param player - * specifick� hr�� - * @param message - */ - public static void startAllCooldowns(Player player, String message) { - for (String a : BoosConfigManager.getCooldowns(player)) { - int cooldownTime = BoosConfigManager.getCoolDown(a, player); - coolDown(player, a, message, cooldownTime); - } + private 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()); + BoosConfigManager.getConfusers() + .set("users." + player.getUniqueId() + ".cooldown." + pre2, + currTime); + } - } + public static void startAllCooldowns(Player player, String message) { + for (String a : BoosConfigManager.getCooldowns(player)) { + int cooldownTime = BoosConfigManager.getCoolDown(a, player); + coolDown(player, a, message, cooldownTime); + } + + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosGlobalLimitResetRunnable.java b/src/main/java/cz/boosik/boosCooldown/BoosGlobalLimitResetRunnable.java index 7c8d822..b4ece9f 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosGlobalLimitResetRunnable.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosGlobalLimitResetRunnable.java @@ -2,25 +2,25 @@ package cz.boosik.boosCooldown; import org.bukkit.Bukkit; -public class BoosGlobalLimitResetRunnable implements Runnable { +class BoosGlobalLimitResetRunnable implements Runnable { - private String command; + private final String command; - public BoosGlobalLimitResetRunnable(String key) { - this.command = key; - } + public BoosGlobalLimitResetRunnable(String key) { + this.command = key; + } - @Override - public void run() { - BoosCoolDown.getLog().info( - "[boosCooldowns] Reseting limits for command " + command); - BoosLimitManager.clearAllLimits(command.hashCode()); - BoosLimitManager.setGlobalLimitResetDate(command); - String msg = BoosConfigManager.getLimitResetNowMessage(); - msg = msg.replaceAll("&command&", command); - msg = msg.replaceAll("&", "§"); - Bukkit.broadcastMessage(msg); - BoosCoolDown.startLimitResetTimerGlobal(command); - } + @Override + public void run() { + BoosCoolDown.getLog().info( + "[boosCooldowns] Reseting limits for command " + command); + BoosLimitManager.clearAllLimits(command.hashCode()); + BoosLimitManager.setGlobalLimitResetDate(command); + String msg = BoosConfigManager.getLimitResetNowMessage(); + msg = msg.replaceAll("&command&", command); + msg = msg.replaceAll("&", "§"); + Bukkit.broadcastMessage(msg); + BoosCoolDown.startLimitResetTimerGlobal(command); + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java b/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java index e083872..43ce875 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosItemCostManager.java @@ -5,113 +5,62 @@ 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 = ""; +class BoosItemCostManager { - /** - * 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; - } - } + private static boolean payItemForCommand(Player player, + String originalCommand, String item, int count) { + 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) { + String 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; - } - } - } - } + static void payItemForCommand(PlayerCommandPreprocessEvent event, + Player player, String regexCommand, String originalCommand, + String item, int count) { + if (count > 0) { + if (!player.hasPermission("booscooldowns.noitemcost") + && !player.hasPermission("booscooldowns.noitemcost." + + originalCommand)) { + if (!payItemForCommand(player, originalCommand, + item, count)) { + BoosCoolDownManager.cancelCooldown(player, regexCommand); + event.setCancelled(true); + } + } + } + } - 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; - } + 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(); + return inventory.contains(material, count); + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosLimitManager.java b/src/main/java/cz/boosik/boosCooldown/BoosLimitManager.java index 30db179..02aae90 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosLimitManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosLimitManager.java @@ -1,362 +1,270 @@ package cz.boosik.boosCooldown; +import org.bukkit.entity.Player; +import util.boosChat; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Set; -import org.bukkit.entity.Player; -import util.boosChat; +class BoosLimitManager { -/** - * T��da obsahuje ve�ker� metody pot�ebn� k ��zen� limit�. - * - * @author Jakub Kol�� - * - */ -public class BoosLimitManager { - /** - * Metoda kontroluje zda je mo�n� pou��t p��kaz, nebo zda je p��kaz ji� - * zablokovan�. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @param originalCommand - * origin�ln� p��kaz pou�it� hr��em - * @param limit - * limit nastaven� pro regexCommand - * @return false pokud p��kaz je mo�n� pou��t, true pokud p��kaz nen� mo�n� - * pou��t - */ - static boolean blocked(Player player, String regexCommand, - String originalCommand, int limit) { - Date time = getTime(player, regexCommand); - Date confTime = getTime(regexCommand); - Calendar calcurrTime = Calendar.getInstance(); - calcurrTime.setTime(getCurrTime()); - Calendar callastTime = Calendar.getInstance(); - Calendar callastTimeGlobal = Calendar.getInstance(); - int uses = getUses(player, regexCommand); - long limitResetDelay = BoosConfigManager.getLimitResetDelay( - regexCommand, player); - long limitResetDelayGlobal = BoosConfigManager - .getLimitResetDelayGlobal(regexCommand); - if (time != null) { - callastTime.setTime(time); - } else { - setTime(player, regexCommand); - } - if (limit - uses == 1) { - setTime(player, regexCommand); - time = getTime(player, regexCommand); - callastTime.setTime(time); - } - if (limitResetDelay > 0) { - if (secondsBetween(callastTime, calcurrTime, limitResetDelay) <= 0) { - if (uses != 0) { - BoosConfigManager.clearSomething("uses", - player.getUniqueId(), regexCommand); - uses = getUses(player, regexCommand); - } - } - } + static boolean blocked(Player player, String regexCommand, + String originalCommand, int limit) { + Date time = getTime(player, regexCommand); + Date confTime = getTime(regexCommand); + Calendar calcurrTime = Calendar.getInstance(); + calcurrTime.setTime(getCurrTime()); + Calendar callastTime = Calendar.getInstance(); + Calendar callastTimeGlobal = Calendar.getInstance(); + int uses = getUses(player, regexCommand); + long limitResetDelay = BoosConfigManager.getLimitResetDelay( + regexCommand, player); + long limitResetDelayGlobal = BoosConfigManager + .getLimitResetDelayGlobal(regexCommand); + if (time != null) { + callastTime.setTime(time); + } else { + setTime(player, regexCommand); + } + if (limit - uses == 1) { + setTime(player, regexCommand); + time = getTime(player, regexCommand); + callastTime.setTime(time); + } + if (limitResetDelay > 0) { + if (secondsBetween(callastTime, calcurrTime, limitResetDelay) <= 0) { + if (uses != 0) { + BoosConfigManager.clearSomething("uses", + player.getUniqueId(), regexCommand); + uses = getUses(player, regexCommand); + } + } + } - if (player.hasPermission("booscooldowns.nolimit") - || player.hasPermission("booscooldowns.nolimit." - + originalCommand)) { - } else { - if (limit == -1) { - return false; - } else if (limit <= uses) { - if (limitResetDelay > 0) { - long secondsBetween = secondsBetween(callastTime, - calcurrTime, limitResetDelay); - long waitSeconds = secondsBetween; - long waitMinutes = Math.round(waitSeconds / 60) + 1; - long waitHours = Math.round(waitMinutes / 60) + 1; - String msg = BoosConfigManager.getLimitResetMessage(); - msg = msg.replaceAll("&command&", originalCommand); - if (waitSeconds >= 60 && 3600 >= waitSeconds) { - msg = msg.replaceAll("&seconds&", - Long.toString(waitMinutes)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitMinutesMessage()); - } else if (waitMinutes >= 60) { - msg = msg.replaceAll("&seconds&", - Long.toString(waitHours)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitHoursMessage()); - } else { - msg = msg.replaceAll("&seconds&", - Long.toString(waitSeconds)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitSecondsMessage()); - } - boosChat.sendMessageToPlayer(player, msg); - } else if (limitResetDelayGlobal > 0) { - if (confTime != null) { - callastTimeGlobal.setTime(confTime); - long secondsBetween = secondsBetween(callastTimeGlobal, - calcurrTime, limitResetDelayGlobal); - long waitSeconds = secondsBetween; - long waitMinutes = (long) Math.ceil(waitSeconds / 60.0); - long waitHours = (long) Math.ceil(waitMinutes / 60.0); - String msg = BoosConfigManager.getLimitResetMessage(); - msg = msg.replaceAll("&command&", originalCommand); - if (waitSeconds >= 60 && 3600 >= waitSeconds) { - msg = msg.replaceAll("&seconds&", - Long.toString(waitMinutes)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitMinutesMessage()); - } else if (waitMinutes >= 60) { - msg = msg.replaceAll("&seconds&", - Long.toString(waitHours)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitHoursMessage()); - } else { - msg = msg.replaceAll("&seconds&", - Long.toString(waitSeconds)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitSecondsMessage()); - } - boosChat.sendMessageToPlayer(player, msg); - } - } else { - String msg = String.format(BoosConfigManager - .getCommandBlockedMessage()); - boosChat.sendMessageToPlayer(player, msg); - } - return true; - } - } - return false; - } + if (!player.hasPermission("booscooldowns.nolimit") + || player.hasPermission("booscooldowns.nolimit." + + originalCommand)) { + if (limit == -1) { + return false; + } else if (limit <= uses) { + if (limitResetDelay > 0) { + long waitSeconds = secondsBetween(callastTime, + calcurrTime, limitResetDelay); + long waitMinutes = Math.round(waitSeconds / 60) + 1; + long waitHours = Math.round(waitMinutes / 60) + 1; + String msg = BoosConfigManager.getLimitResetMessage(); + msg = msg.replaceAll("&command&", originalCommand); + if (waitSeconds >= 60 && 3600 >= waitSeconds) { + msg = msg.replaceAll("&seconds&", + Long.toString(waitMinutes)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitMinutesMessage()); + } else if (waitMinutes >= 60) { + msg = msg.replaceAll("&seconds&", + Long.toString(waitHours)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitHoursMessage()); + } else { + msg = msg.replaceAll("&seconds&", + Long.toString(waitSeconds)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitSecondsMessage()); + } + boosChat.sendMessageToPlayer(player, msg); + } else if (limitResetDelayGlobal > 0) { + if (confTime != null) { + callastTimeGlobal.setTime(confTime); + long waitSeconds = secondsBetween(callastTimeGlobal, + calcurrTime, limitResetDelayGlobal); + long waitMinutes = (long) Math.ceil(waitSeconds / 60.0); + long waitHours = (long) Math.ceil(waitMinutes / 60.0); + String msg = BoosConfigManager.getLimitResetMessage(); + msg = msg.replaceAll("&command&", originalCommand); + if (waitSeconds >= 60 && 3600 >= waitSeconds) { + msg = msg.replaceAll("&seconds&", + Long.toString(waitMinutes)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitMinutesMessage()); + } else if (waitMinutes >= 60) { + msg = msg.replaceAll("&seconds&", + Long.toString(waitHours)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitHoursMessage()); + } else { + msg = msg.replaceAll("&seconds&", + Long.toString(waitSeconds)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitSecondsMessage()); + } + boosChat.sendMessageToPlayer(player, msg); + } + } else { + String msg = String.format(BoosConfigManager + .getCommandBlockedMessage()); + boosChat.sendMessageToPlayer(player, msg); + } + return true; + } + } + return false; + } - /** - * Metoda vrac� hodnotu, kter� je ur�ena t�m, kolikr�t ji� hr�� pou�il - * specifikovan� p��kaz. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @return hodnota p�edstavuj�ci po�et pou�it� specifikovan�ho p��kazu - */ - static int getUses(Player player, String regexCommand) { - int regexCommand2 = regexCommand.toLowerCase().hashCode(); - int uses = 0; - uses = BoosConfigManager.getConfusers().getInt( - "users." + player.getUniqueId() + ".uses." + regexCommand2, - uses); - return uses; - } + private static int getUses(Player player, String regexCommand) { + int regexCommand2 = regexCommand.toLowerCase().hashCode(); + int uses = 0; + uses = BoosConfigManager.getConfusers().getInt( + "users." + player.getUniqueId() + ".uses." + regexCommand2, + uses); + return uses; + } - /** - * Metoda nastavuje po�et pou�it� p��kazu o jedna v�t�� po ka�d�m pou�it� - * p��kazu hr��em. Nasteven� hodnoty prob�h� jen pro p��kazy, kter� jsou - * definov�ny v konfiguraci. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @param originalCommand - * origin�ln� p��kaz pou�it� hr��em - */ - static void setUses(Player player, String regexCommand) { - if (BoosConfigManager.getLimitsEnabled()) { - if (BoosConfigManager.getCommands(player).contains(regexCommand)) { - int regexCommand2 = regexCommand.toLowerCase().hashCode(); - int uses = getUses(player, regexCommand); - uses = uses + 1; - try { - BoosConfigManager.getConfusers().set( - "users." + player.getUniqueId() + ".uses." - + regexCommand2, uses); - } catch (IllegalArgumentException e) { - BoosCoolDown - .getLog() - .warning( - "Player " - + player.getName() - + " used empty command and caused this error!"); - } - } else { - return; - } - } - } + static void setUses(Player player, String regexCommand) { + if (BoosConfigManager.getLimitsEnabled()) { + if (BoosConfigManager.getCommands(player).contains(regexCommand)) { + int regexCommand2 = regexCommand.toLowerCase().hashCode(); + int uses = getUses(player, regexCommand); + uses = uses + 1; + try { + BoosConfigManager.getConfusers().set( + "users." + player.getUniqueId() + ".uses." + + regexCommand2, uses); + } catch (IllegalArgumentException e) { + BoosCoolDown + .getLog() + .warning( + "Player " + + player.getName() + + " used empty command and caused this error!"); + } + } + } + } - /** - * Metoda odes�l� hr��i zpr�vu o limitovan�m p��kazu, hodnotu tohoto limitu - * a kolikr�t je je�t� mo�n� limitovan� p��kaz pou��t. - * - * @param send - * hr�� kter�mu bude odesl�n seznam - * @param comm - * p��kaz o kter�m si hr�� vy��dal informace - * @param lim - * hodnota limitu na p��kazu - */ - static void getLimitListMessages(Player send, String comm, int lim) { - if (lim != -1) { - int uses = getUses(send, comm); - String message = BoosConfigManager.getLimitListMessage(); - int num = lim - uses; - if (num < 0) { - num = 0; - } - message = BoosConfigManager.getLimitListMessage(); - message = message.replaceAll("&command&", comm); - message = message.replaceAll("&limit&", String.valueOf(lim)); - message = message.replaceAll("×&", String.valueOf(num)); - boosChat.sendMessageToPlayer(send, message); - } - } + static void getLimitListMessages(Player send, String comm, int lim) { + if (lim != -1) { + int uses = getUses(send, comm); + String message = BoosConfigManager.getLimitListMessage(); + int num = lim - uses; + if (num < 0) { + num = 0; + } + message = BoosConfigManager.getLimitListMessage(); + message = message.replaceAll("&command&", comm); + message = message.replaceAll("&limit&", String.valueOf(lim)); + message = message.replaceAll("×&", String.valueOf(num)); + boosChat.sendMessageToPlayer(send, message); + } + } - /** - * Metoda vrac� sou�asn� p�esn� datum a �as. - * - * @return sou�asn� �as a datum - */ - static Date getCurrTime() { - String currTime = ""; - Calendar cal = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - currTime = sdf.format(cal.getTime()); - Date time = null; + private static Date getCurrTime() { + String currTime = ""; + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + currTime = sdf.format(cal.getTime()); + Date time = null; - try { - time = sdf.parse(currTime); - return time; - } catch (ParseException e) { - return null; - } - } + try { + time = sdf.parse(currTime); + return time; + } catch (ParseException e) { + return null; + } + } - /** - * Metoda vrac� datum a �as, kdy hr�� naposledy pou�il dan� p��kaz. - * - * @param player - * specifikovan� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - * @return datum a �as kdy hr�� naposledy pou�il dan� p��kaz - */ - static Date getTime(Player player, String regexCommand) { - int pre2 = regexCommand.toLowerCase().hashCode(); - String confTime = ""; - confTime = BoosConfigManager.getConfusers().getString( - "users." + player.getUniqueId() + ".lastused." + pre2, null); + private static Date getTime(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + String confTime = ""; + confTime = BoosConfigManager.getConfusers().getString( + "users." + player.getUniqueId() + ".lastused." + pre2, null); - if (confTime != null && !confTime.equals("")) { - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - Date lastDate = null; + if (confTime != null && !confTime.equals("")) { + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + Date lastDate = null; - try { - lastDate = sdf.parse(confTime); - return lastDate; - } catch (ParseException e) { - return null; - } - } - return null; - } + try { + lastDate = sdf.parse(confTime); + return lastDate; + } catch (ParseException e) { + return null; + } + } + return null; + } - static Date getTime(String regexCommand) { - String confTime = ""; - confTime = BoosConfigManager.getConfusers().getString( - "global." + regexCommand + ".reset", null); + private static Date getTime(String regexCommand) { + String confTime = ""; + confTime = BoosConfigManager.getConfusers().getString( + "global." + regexCommand + ".reset", null); - if (confTime != null && !confTime.equals("")) { - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - Date lastDate = null; + if (confTime != null && !confTime.equals("")) { + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + Date lastDate = null; - try { - lastDate = sdf.parse(confTime); - return lastDate; - } catch (ParseException e) { - return null; - } - } - return null; - } + try { + lastDate = sdf.parse(confTime); + return lastDate; + } catch (ParseException e) { + return null; + } + } + return null; + } - /** - * Metoda ukl�d� do datab�ze datum a �as kdy hr�� naposledy pou�il dan� - * p��kaz. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigurace vyhovuj�c� origin�ln�mu p��kazu - */ - 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()); - BoosConfigManager.getConfusers() - .set("users." + player.getUniqueId() + ".lastused." + pre2, - currTime); - } + private 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()); + BoosConfigManager.getConfusers() + .set("users." + player.getUniqueId() + ".lastused." + pre2, + currTime); + } - /** - * Metoda vrac� hodnotu rozd�lu v sekund�ch mezi dv�mi hodnotami datumu a - * �asu. - * - * @param startDate - * @param endDate - * @return rozd�l v sekund�ch mezi startDate a endDate - */ - static long secondsBetween(Calendar startDate, Calendar endDate, - long limitResetDelay) { - long secondsBetween = 0; - secondsBetween = ((startDate.getTimeInMillis() - endDate - .getTimeInMillis()) / 1000) + limitResetDelay; - return secondsBetween; - } + private static long secondsBetween(Calendar startDate, Calendar endDate, + long limitResetDelay) { + long secondsBetween = 0; + secondsBetween = ((startDate.getTimeInMillis() - endDate + .getTimeInMillis()) / 1000) + limitResetDelay; + return secondsBetween; + } - static void clearAllLimits(int hashedCommand) { - Set players = BoosConfigManager.getAllPlayers(); - for (String player : players) { - BoosConfigManager.clearSomething2("uses", player, hashedCommand); - } - BoosConfigManager.saveConfusers(); - BoosConfigManager.loadConfusers(); - } + static void clearAllLimits(int hashedCommand) { + Set players = BoosConfigManager.getAllPlayers(); + for (String player : players) { + BoosConfigManager.clearSomething2("uses", player, hashedCommand); + } + BoosConfigManager.saveConfusers(); + BoosConfigManager.loadConfusers(); + } - static void setGlobalLimitResetDate() { - for (String command : BoosConfigManager.getLimitResetCommandsGlobal()) { - if (BoosConfigManager.getLimitResetDelayGlobal(command) == -65535) { - BoosConfigManager.getConfusers().set("global." + command, null); - } else { - setTime(command); - } - } - BoosConfigManager.saveConfusers(); - BoosConfigManager.loadConfusers(); - } + static void setGlobalLimitResetDate() { + for (String command : BoosConfigManager.getLimitResetCommandsGlobal()) { + if (BoosConfigManager.getLimitResetDelayGlobal(command) == -65535) { + BoosConfigManager.getConfusers().set("global." + command, null); + } else { + setTime(command); + } + } + BoosConfigManager.saveConfusers(); + BoosConfigManager.loadConfusers(); + } - static void setGlobalLimitResetDate(String command) { - setTime(command); - BoosConfigManager.saveConfusers(); - BoosConfigManager.loadConfusers(); - } + static void setGlobalLimitResetDate(String command) { + setTime(command); + BoosConfigManager.saveConfusers(); + BoosConfigManager.loadConfusers(); + } - static void setTime(String command) { - String currTime = ""; - Calendar cal = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); - currTime = sdf.format(cal.getTime()); - BoosConfigManager.getConfusers().set("global." + command + ".reset", - currTime); - } + private static void setTime(String command) { + String currTime = ""; + Calendar cal = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); + currTime = sdf.format(cal.getTime()); + BoosConfigManager.getConfusers().set("global." + command + ".reset", + currTime); + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java b/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java index 1125d8e..502bcc3 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosPriceManager.java @@ -2,117 +2,50 @@ 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 = ""; +class BoosPriceManager { + private static final Economy economy = BoosCoolDown.getEconomy(); - /** - * 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; - } - } + private static boolean payForCommand(Player player, + String originalCommand, double price) { + if (economy == null) { + return true; + } + EconomyResponse r = economy.withdrawPlayer(player, price); + String msg = ""; + 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 { + 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; - } - } - } - } + static void payForCommand(PlayerCommandPreprocessEvent event, + Player player, String regexCommand, String originalCommand, + double price) { + if (price > 0) { + if (!player.hasPermission("booscooldowns.noprice") + && !player.hasPermission("booscooldowns.noprice." + + originalCommand)) { + if (!payForCommand(player, originalCommand, price)) { + BoosCoolDownManager.cancelCooldown(player, regexCommand); + event.setCancelled(true); + } + } + } + } - 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); - } - } + public static boolean has(Player player, double price) { + return economy == null || price <= 0 || 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 e7c43f3..8b31546 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosWarmUpManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosWarmUpManager.java @@ -1,287 +1,151 @@ package cz.boosik.boosCooldown; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffectType; +import util.boosChat; + import java.util.Iterator; import java.util.Map; import java.util.Timer; import java.util.concurrent.ConcurrentHashMap; -import org.bukkit.Location; -import org.bukkit.entity.Player; -import org.bukkit.potion.PotionEffectType; - -import util.boosChat; - -/** - * T��da obsahuje ve�ker� metody pot�ebn� k ��zen� warmup �asova��. Spou�t�n�, - * ukon�ov�n� a zji��ov�n� zda je warmup �asova� ji� aktivn�. - * - * @author Jakub Kol�� - * - */ public class BoosWarmUpManager { - private static ConcurrentHashMap playercommands = new ConcurrentHashMap(); - private static ConcurrentHashMap playerloc = new ConcurrentHashMap(); - private static ConcurrentHashMap playerworld = new ConcurrentHashMap(); + private static final ConcurrentHashMap playercommands = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap playerloc = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap playerworld = new ConcurrentHashMap<>(); - private static Timer scheduler; + private static void applyPotionEffect(Player player, String regexCommand, + int warmUpSeconds) { + String potion = BoosConfigManager.getPotionEffect(regexCommand, player); + if (potion.equals("")) { + return; + } + int potionStrength = BoosConfigManager.getPotionEffectStrength( + regexCommand, player); + if (potionStrength == 0) { + return; + } + PotionEffectType effect = PotionEffectType.getByName(potion); + player.addPotionEffect( + effect.createEffect(warmUpSeconds * 40, potionStrength - 1), + true); + } - /** - * Metoda aplikuje na hr��e magick� efekt na dobu ur�enou parametrem - * warmUpSeconds. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @param warmUpSeconds - * doba warmup v sekund�ch, nastaven� pro regexCommand v - * konfiguraci - */ - static void applyPotionEffect(Player player, String regexCommand, - int warmUpSeconds) { - String potion = BoosConfigManager.getPotionEffect(regexCommand, player); - if (potion.equals("")) { - return; - } - int potionStrength = BoosConfigManager.getPotionEffectStrength( - regexCommand, player); - if (potionStrength == 0) { - return; - } - PotionEffectType effect = PotionEffectType.getByName(potion); - player.addPotionEffect( - effect.createEffect(warmUpSeconds * 40, potionStrength - 1), - true); - } + public static void cancelWarmUps(Player player) { + Map playercommands2 = playercommands; + Iterator iter = playercommands2.keySet().iterator(); + while (iter.hasNext()) { + if (iter.next().startsWith(player.getUniqueId() + "@")) { + killTimer(player); + iter.remove(); + } + } + } - /** - * Metoda stornuje ve�ker� prob�haj�c� warmup �asova�e specifick�ho hr��e. - * - * @param player - * specifick� hr�� - */ - public static void cancelWarmUps(Player player) { - Map playercommands2 = playercommands; - Iterator iter = playercommands2.keySet().iterator(); - while (iter.hasNext()) { - if (iter.next().startsWith(player.getUniqueId() + "@")) { - killTimer(player); - iter.remove(); - } - } - } + public static void clearLocWorld(Player player) { + BoosWarmUpManager.playerloc.remove(player); + BoosWarmUpManager.playerworld.remove(player); + } - /** - * Metoda pro specifick�ho hr��e vyma�e ulo�enou pozici a sv�t. - * - * @param player - * specifick� hr�� - */ - public static void clearLocWorld(Player player) { - BoosWarmUpManager.playerloc.remove(player); - BoosWarmUpManager.playerworld.remove(player); - } + public static boolean hasWarmUps(Player player) { + Map playercommands2 = playercommands; + for (String key : playercommands2.keySet()) { + if (key.startsWith(player.getUniqueId() + "@")) { + return true; + } + } + return false; + } - /** - * Metoda vrac� boolean hodnotu v z�vislosti na tom jestli specifikovan� - * hr�� m� aktivn� warmup �asova�e nebo ne. - * - * @param player - * specifick� hr�� - * @return true pokud hr�� m� aktivn� warmup �asova�e, jinak false - */ - public static boolean hasWarmUps(Player player) { - Map playercommands2 = playercommands; - for (String key : playercommands2.keySet()) { - if (key.startsWith(player.getUniqueId() + "@")) { - return true; - } - } - return false; - } + static boolean checkWarmUpOK(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + int ok = 0; + ok = BoosConfigManager.getConfusers().getInt( + "users." + player.getUniqueId() + ".warmup." + pre2, ok); + return ok == 1; + } - /** - * Metoda zji��uje, jestli je dan� warmup �asova� ozna�en� jako ji� prob�hl� - * nebo ne. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @return true pokud je warmup �asova� ozna�en jako ji� prob�hl�, jinak - * false - */ - static boolean checkWarmUpOK(Player player, String regexCommand) { - int pre2 = regexCommand.toLowerCase().hashCode(); - int ok = 0; - ok = BoosConfigManager.getConfusers().getInt( - "users." + player.getUniqueId() + ".warmup." + pre2, ok); - if (ok == 1) { - return true; - } - return false; - } + static boolean isWarmUpProcess(Player player, String regexCommand) { + regexCommand = regexCommand.toLowerCase(); + return playercommands.containsKey(player.getUniqueId() + "@" + + regexCommand); + } - /** - * Metoda vrac� boolean hodnotu na z�klad� toho jestli je pro specifikovan� - * p��kaz specifikovan�ho hr��e aktivn� warmup �asova�. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @return true pokud je warmup �asova� aktivn�, jinak false - */ - static boolean isWarmUpProcess(Player player, String regexCommand) { - regexCommand = regexCommand.toLowerCase(); - if (playercommands.containsKey(player.getUniqueId() + "@" - + regexCommand)) { - return true; - } - return false; - } + private static void killTimer(Player player) { + Map playercommands2 = playercommands; + for (String key : playercommands2.keySet()) { + if (key.startsWith(player.getUniqueId() + "@")) { + playercommands.get(key).cancel(); + } + } + } - /** - * Metoda odstran� v�echny �asova�e specifikovan�ho hr��e - * - * @param player - * specifick� hr�� - */ - static void killTimer(Player player) { - Map playercommands2 = playercommands; - for (String key : playercommands2.keySet()) { - if (key.startsWith(player.getUniqueId() + "@")) { - playercommands.get(key).cancel(); - } - } - } + static void removeWarmUp(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + BoosConfigManager.getConfusers().set( + "users." + player.getUniqueId() + ".warmup." + pre2, null); + } - /** - * Metoda odstran� �asova�e na specifikovan�m p��kazu specifikovan�ho hr��e - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - */ - static void removeWarmUp(Player player, String regexCommand) { - int pre2 = regexCommand.toLowerCase().hashCode(); - BoosConfigManager.getConfusers().set( - "users." + player.getUniqueId() + ".warmup." + pre2, null); - } + static void removeWarmUpOK(Player player, String regexCommand) { + int pre2 = regexCommand.toLowerCase().hashCode(); + BoosConfigManager.getConfusers().set( + "users." + player.getUniqueId() + ".warmup." + pre2, null); + } - /** - * Metoda odstran� ukon�en� �asova�e na specifikovan�m p��kazu - * specifikovan�ho hr��e - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - */ - static void removeWarmUpOK(Player player, String regexCommand) { - int pre2 = regexCommand.toLowerCase().hashCode(); - BoosConfigManager.getConfusers().set( - "users." + player.getUniqueId() + ".warmup." + pre2, null); - } + static void removeWarmUpProcess(String tag) { + BoosWarmUpManager.playercommands.remove(tag); + } - /** - * Metoda odstra�uje dan� �et�zec z Hashmapy - * - * @param tag - * �et�zec, kter� se m� odstranit z Hasmapy - */ - 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.getUniqueId() + ".warmup." + pre2, 1); + } - /** - * Metoda ozna�uje warmup �asova� specifikovan�ho p��kazu specifikovan�ho - * hr��e jako ji� ukon�en�. - * - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - */ - static void setWarmUpOK(Player player, String regexCommand) { - int pre2 = regexCommand.toLowerCase().hashCode(); - BoosConfigManager.getConfusers().set( - "users." + player.getUniqueId() + ".warmup." + pre2, 1); - } + static void startWarmUp(BoosCoolDown bCoolDown, Player player, + String regexCommand, String originalCommand, int warmUpSeconds) { + regexCommand = regexCommand.toLowerCase(); + long warmUpMinutes = (long) Math.ceil(warmUpSeconds / 60.0); + long warmUpHours = (long) Math.ceil(warmUpMinutes / 60.0); + if (!isWarmUpProcess(player, regexCommand)) { + BoosWarmUpManager.removeWarmUpOK(player, regexCommand); + String msg = BoosConfigManager.getWarmUpMessage(); + msg = msg.replaceAll("&command&", originalCommand); + if (warmUpSeconds >= 60 && 3600 >= warmUpSeconds) { + msg = msg.replaceAll("&seconds&", Long.toString(warmUpMinutes)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitMinutesMessage()); + } else if (warmUpMinutes >= 60) { + msg = msg.replaceAll("&seconds&", Long.toString(warmUpHours)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitHoursMessage()); + } else { + msg = msg.replaceAll("&seconds&", Long.toString(warmUpSeconds)); + msg = msg.replaceAll("&unit&", + BoosConfigManager.getUnitSecondsMessage()); + } + boosChat.sendMessageToPlayer(player, msg); - /** - * Metoda spou�t� warmup �asova� na z�klad� parametr� pomoc� Timer(). Pokud - * je ji� warmup aktivn�, ode�le hr��i zpr�vu kter� ho o tom informuje. - * - * @param bCoolDown - * instance t��dy BoosCooldown - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @param originalCommand - * origin�ln� p��kaz pou�it� hr��em - * @param warmUpSeconds - * warmup doba nastaven� pro p��kaz v sekund�ch - */ - static void startWarmUp(BoosCoolDown bCoolDown, Player player, - String regexCommand, String originalCommand, int warmUpSeconds) { - regexCommand = regexCommand.toLowerCase(); - long warmUpMinutes = (long) Math.ceil(warmUpSeconds / 60.0); - long warmUpHours = (long) Math.ceil(warmUpMinutes / 60.0); - if (!isWarmUpProcess(player, regexCommand)) { - BoosWarmUpManager.removeWarmUpOK(player, regexCommand); - String msg = BoosConfigManager.getWarmUpMessage(); - msg = msg.replaceAll("&command&", originalCommand); - if (warmUpSeconds >= 60 && 3600 >= warmUpSeconds) { - msg = msg.replaceAll("&seconds&", Long.toString(warmUpMinutes)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitMinutesMessage()); - } else if (warmUpMinutes >= 60) { - msg = msg.replaceAll("&seconds&", Long.toString(warmUpHours)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitHoursMessage()); - } else { - msg = msg.replaceAll("&seconds&", Long.toString(warmUpSeconds)); - msg = msg.replaceAll("&unit&", - BoosConfigManager.getUnitSecondsMessage()); - } - boosChat.sendMessageToPlayer(player, msg); + Timer scheduler = new Timer(); + BoosWarmUpTimer scheduleMe = new BoosWarmUpTimer(bCoolDown, player, regexCommand, originalCommand); + playercommands.put(player.getUniqueId() + "@" + regexCommand, + scheduleMe); + scheduler.schedule(scheduleMe, warmUpSeconds * 1000); + applyPotionEffect(player, regexCommand, warmUpSeconds); + } else { + String msg = BoosConfigManager.getWarmUpAlreadyStartedMessage(); + msg = msg.replaceAll("&command&", originalCommand); + boosChat.sendMessageToPlayer(player, msg); + } + } - scheduler = new Timer(); - BoosWarmUpTimer scheduleMe = new BoosWarmUpTimer(bCoolDown, - scheduler, player, regexCommand, originalCommand); - playercommands.put(player.getUniqueId() + "@" + regexCommand, - scheduleMe); - scheduler.schedule(scheduleMe, warmUpSeconds * 1000); - applyPotionEffect(player, regexCommand, warmUpSeconds); - } else { - String msg = BoosConfigManager.getWarmUpAlreadyStartedMessage(); - msg = msg.replaceAll("&command&", originalCommand); - boosChat.sendMessageToPlayer(player, msg); - } - } + public static ConcurrentHashMap getPlayerworld() { + return playerworld; + } - /** - * @return - */ - public static ConcurrentHashMap getPlayerworld() { - return playerworld; - } - - /** - * @return - */ - public static ConcurrentHashMap getPlayerloc() { - return playerloc; - } + public static ConcurrentHashMap getPlayerloc() { + return playerloc; + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosWarmUpTimer.java b/src/main/java/cz/boosik/boosCooldown/BoosWarmUpTimer.java index 1ffebc9..c1bf8ee 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosWarmUpTimer.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosWarmUpTimer.java @@ -1,82 +1,54 @@ package cz.boosik.boosCooldown; -import java.util.Timer; -import java.util.TimerTask; - import org.bukkit.entity.Player; -/** - * T��da staraj�c� se o samotn� �asova�e warmup� pomoc� TimerTask - * - * @author Jakub Kol�� - * - */ -public class BoosWarmUpTimer extends TimerTask { +import java.util.TimerTask; - private BoosCoolDown bCoolDown; - private Player player; - private String originalCommand; - private String regexCommand; +class BoosWarmUpTimer extends TimerTask { - /** - * @param bCoolDown - * instance t��dy BoosCoolDown - * @param timer - * @param player - * specifick� hr�� - * @param regexCommand - * p��kaz z konfigura�n�ho souboru, kter� vyhovuje origin�ln�mu - * p��kazu - * @param originalCommand - * origin�ln� p��kaz kter� hr�� pou�il - */ - public BoosWarmUpTimer(BoosCoolDown bCoolDown, Timer timer, Player player, - String regexCommand, String originalCommand) { - this.bCoolDown = bCoolDown; - this.player = player; - this.regexCommand = regexCommand; - this.originalCommand = originalCommand; - } + private final BoosCoolDown bCoolDown; + private final Player player; + private final String originalCommand; + private final String regexCommand; - /* - * (non-Javadoc) - * - * @see java.util.TimerTask#run() - */ - @Override - public void run() { - bCoolDown.getServer().getScheduler() - .scheduleSyncDelayedTask(bCoolDown, new boosWarmUpRunnable()); - } + public BoosWarmUpTimer(BoosCoolDown bCoolDown, Player player, + String regexCommand, String originalCommand) { + this.bCoolDown = bCoolDown; + this.player = player; + this.regexCommand = regexCommand; + this.originalCommand = originalCommand; + } - public class boosWarmUpRunnable implements Runnable { - /* - * (non-Javadoc) - * - * @see java.lang.Runnable#run() - */ - @Override - public void run() { - if (player.isOnline() && !player.isDead() - && BoosWarmUpManager.hasWarmUps(player)) { - BoosWarmUpManager.setWarmUpOK(player, regexCommand); - BoosWarmUpManager.removeWarmUpProcess(player.getUniqueId() - + "@" + regexCommand); - BoosWarmUpManager.clearLocWorld(player); - player.chat(originalCommand); - } else if (player.isOnline() && player.isDead() - && BoosWarmUpManager.hasWarmUps(player)) { - BoosWarmUpManager.removeWarmUp(player, regexCommand); - BoosWarmUpManager.removeWarmUpProcess(player.getUniqueId() - + "@" + regexCommand); - BoosWarmUpManager.clearLocWorld(player); - } else if (!player.isOnline() - && BoosWarmUpManager.hasWarmUps(player)) { - BoosWarmUpManager.removeWarmUp(player, regexCommand); - BoosWarmUpManager.removeWarmUpProcess(player.getUniqueId() - + "@" + regexCommand); - BoosWarmUpManager.clearLocWorld(player); - } - } - } + @Override + public void run() { + bCoolDown.getServer().getScheduler() + .scheduleSyncDelayedTask(bCoolDown, new boosWarmUpRunnable()); + } + + private class boosWarmUpRunnable implements Runnable { + + @Override + public void run() { + if (player.isOnline() && !player.isDead() + && BoosWarmUpManager.hasWarmUps(player)) { + BoosWarmUpManager.setWarmUpOK(player, regexCommand); + BoosWarmUpManager.removeWarmUpProcess(player.getUniqueId() + + "@" + regexCommand); + BoosWarmUpManager.clearLocWorld(player); + player.chat(originalCommand); + } else if (player.isOnline() && player.isDead() + && BoosWarmUpManager.hasWarmUps(player)) { + BoosWarmUpManager.removeWarmUp(player, regexCommand); + BoosWarmUpManager.removeWarmUpProcess(player.getUniqueId() + + "@" + regexCommand); + BoosWarmUpManager.clearLocWorld(player); + } else if (!player.isOnline() + && BoosWarmUpManager.hasWarmUps(player)) { + BoosWarmUpManager.removeWarmUp(player, regexCommand); + BoosWarmUpManager.removeWarmUpProcess(player.getUniqueId() + + "@" + regexCommand); + BoosWarmUpManager.clearLocWorld(player); + } + } + } } diff --git a/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java b/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java index b01afe6..d93e587 100644 --- a/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java +++ b/src/main/java/cz/boosik/boosCooldown/BoosXpCostManager.java @@ -2,58 +2,50 @@ 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 = ""; +class BoosXpCostManager { - 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; - } - } + private static boolean payXPForCommand(Player player, + String originalCommand, int xpPrice) { + int xp = player.getLevel(); + Boolean trans = false; + if (xp >= xpPrice) { + player.setLevel(xp - xpPrice); + trans = true; + } + if (trans) { + String 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; - } - } - } - } + 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, originalCommand, + xpPrice)) { + BoosCoolDownManager.cancelCooldown(player, regexCommand); + event.setCancelled(true); + } + } + } + } - public static boolean has(Player player, int xpPrice) { - if (xpPrice <= 0){ - return true; - } - int xp = player.getLevel(); - if (xp >= xpPrice) { - return true; - } - return false; - } + public static boolean has(Player player, int xpPrice) { + if (xpPrice <= 0) { + return true; + } + int xp = player.getLevel(); + return xp >= xpPrice; + } } diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosEntityDamageListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosEntityDamageListener.java index b0dfec5..03ba41e 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosEntityDamageListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosEntityDamageListener.java @@ -1,53 +1,30 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosWarmUpManager; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosWarmUpManager; -/** - * Poslucha naslouchajc udlosti, kter se spout v okamiku kdy dojde ke - * zrann jakkoli entity ve svt. Pokud je touto entitou hr a na jeho - * pkazech je aktivn asova warmup, ve chvli sputn tto udlosti jsou - * vechny jeho warmup asovae stornovny a hri je odeslna zprva, kter ho - * o tto skutenosti informuje. Pokud hr disponuje oprvnnm - * booscooldowns.nocancel.damage, jeho warmup asovae stornovny nejsou. - * - * @author Jakub Kol - * - */ public class BoosEntityDamageListener implements Listener { - /** - * Metoda zjiuje jestli je entita kter spustila tuto udlost hr. Pokud - * je entita hr, hr nen null a nedisponuje oprvnnm - * booscooldowns.nocancel.damage a pokud tento hr disponuje aktivnmi - * warmup asovai, pak je hri odeslna zprva, kter ho informuje o - * ukonen vech warmup asova a nsledn tyto asovae ukonuje pomoc - * metody cancelWarmUps();. - * - * @param event - * udlost EntityDamageEvent - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onEntityDamage(EntityDamageEvent event) { - Entity entity = event.getEntity(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - if (player != null - && !player.hasPermission("booscooldowns.nocancel.damage")) { - if (BoosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, BoosConfigManager - .getWarmUpCancelledByDamageMessage()); - BoosWarmUpManager.cancelWarmUps(player); - } - } - } - } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onEntityDamage(EntityDamageEvent event) { + Entity entity = event.getEntity(); + if (entity != null && entity instanceof Player) { + Player player = (Player) entity; + if (!player.hasPermission("booscooldowns.nocancel.damage")) { + if (BoosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, BoosConfigManager + .getWarmUpCancelledByDamageMessage()); + BoosWarmUpManager.cancelWarmUps(player); + } + + } + } + } } diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerDeathListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerDeathListener.java index 2945da6..ad04719 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerDeathListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerDeathListener.java @@ -1,5 +1,7 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosCoolDownManager; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -7,88 +9,43 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosCoolDownManager; - -/** - * Poslucha� naslouchaj�c� ud�losti, kter� se spou�t� v okam�iku kdy hr�� zem�e. - * V z�vislosti na konfiguraci pluginu a opr�vn�n�ch hr��e mohou nastat t�i - * r�zn� aktivity. Cooldown �asova�e mohou b�t po smrti vymaz�ny, nebo naopak - * mohou b�t znovu spu�t�ny ve�ker� cooldown �asova�e pro ve�ker� nastaven� - * p��kazy. Tak� mohou b�t vymaz�ny z�znamy o pou�it�ch p��kazu a hr�� bude op�t - * schopen pou��vat limitovan� p��kazy a� po hodnotu limitu. - * - * @author Jakub Kol�� - * - */ public class BoosPlayerDeathListener implements Listener { - /** - * Metoda zji��uje jestli je entita kter� spustila tuto ud�lost hr�� a - * jestli nen� null. Na z�klad� toho spou�t� dal�� metody. - * - * @param event - * ud�lost PlayerDeathEvent - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onPlayerDeath(PlayerDeathEvent event) { - Entity entity = event.getEntity(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - clearCooldownsOnDeath(player); - clearUsesOnDeath(player); - startCooldownsOnDeath(player); - } - } - /** - * Na z�klad� konfigurace metoda spou�t� v�echny cooldown �asova�e - * specifikovan�ho hr��e t�m �e spust� medotu startAllCooldowns();. - * - * @param player - * hr��, kter� spustil ud�lost PlayerDeathEvent - */ - private void startCooldownsOnDeath(Player player) { - if (player != null) { - if (BoosConfigManager.getStartCooldownsOnDeath()) { - BoosCoolDownManager.startAllCooldowns(player, ""); - } - } - } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onPlayerDeath(PlayerDeathEvent event) { + Entity entity = event.getEntity(); + if (entity != null) { + Player player = (Player) entity; + clearCooldownsOnDeath(player); + clearUsesOnDeath(player); + startCooldownsOnDeath(player); + } + } - /** - * Na z�klad� konfigurace a toho jestli hr�� disponuje opr�vn�n�m - * booscooldowns.clear.uses.death metoda vyma�e v�echny z�znamy o spu�t�n� - * v�ech p��kaz� specifikovan�ho hr��e t�m �e spust� metodu - * clearSomething();. - * - * @param player - * hr��, kter� spustil ud�lost PlayerDeathEvent - */ - private void clearUsesOnDeath(Player player) { - if (player != null - && player.hasPermission("booscooldowns.clear.uses.death")) { - if (BoosConfigManager.getCleanUsesOnDeath()) { - BoosConfigManager.clearSomething("uses", player.getUniqueId()); - } - } - } + private void startCooldownsOnDeath(Player player) { + if (player != null) { + if (BoosConfigManager.getStartCooldownsOnDeath()) { + BoosCoolDownManager.startAllCooldowns(player, ""); + } + } + } - /** - * Na z�klad� konfigurace a toho jestli hr�� disponuje opr�vn�n�m - * booscooldowns.clear.cooldowns.death metoda vyma�e v�echny cooldown - * �asova�e v�ech p��kaz� specifikovan�ho hr��e t�m �e spust� metodu - * clearSomething();. - * - * @param player - * hr��, kter� spustil ud�lost PlayerDeathEvent - */ - private void clearCooldownsOnDeath(Player player) { - if (player != null - && player.hasPermission("booscooldowns.clear.cooldowns.death")) { - if (BoosConfigManager.getCleanCooldownsOnDeath()) { - BoosConfigManager.clearSomething("cooldown", - player.getUniqueId()); - } - } - } + private void clearUsesOnDeath(Player player) { + if (player != null + && player.hasPermission("booscooldowns.clear.uses.death")) { + if (BoosConfigManager.getCleanUsesOnDeath()) { + BoosConfigManager.clearSomething("uses", player.getUniqueId()); + } + } + } + + private void clearCooldownsOnDeath(Player player) { + if (player != null + && player.hasPermission("booscooldowns.clear.cooldowns.death")) { + if (BoosConfigManager.getCleanCooldownsOnDeath()) { + BoosConfigManager.clearSomething("cooldown", + player.getUniqueId()); + } + } + } } diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerGameModeChangeListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerGameModeChangeListener.java index d93760d..5936b57 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerGameModeChangeListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerGameModeChangeListener.java @@ -1,54 +1,31 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosWarmUpManager; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerGameModeChangeEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosWarmUpManager; -/** - * Poslucha naslouchajc udlosti, kter se spout v okamiku kdy hr zmn - * hern md. Pokud na pkazech hre je aktivn asova warmup, ve chvli - * sputn tto udlosti jsou vechny jeho warmup asovae stornovny a hri - * je odeslna zprva, kter ho o tto skutenosti informuje. Pokud hr - * disponuje oprvnnm booscooldowns.nocancel.gamemodechange, jeho warmup - * asovae stornovny nejsou. - * - * @author Jakub Kol - * - */ public class BoosPlayerGameModeChangeListener implements Listener { - /** - * Metoda zjiuje jestli je entita kter spustila tuto udlost hr. Pokud - * je entita hr, hr nen null a nedisponuje oprvnnm - * booscooldowns.nocancel.gamemodechange a pokud tento hr disponuje - * aktivnmi warmup asovai, pak je hri odeslna zprva, kter ho - * informuje o ukonen vech warmup asova a nsledn tyto asovae - * ukonuje pomoc metody cancelWarmUps();. - * - * @param event - * udlost PlayerGameModeChangeEvent - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { - Entity entity = event.getPlayer(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - if (player != null - && !player - .hasPermission("booscooldowns.nocancel.gamemodechange")) { - if (BoosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, BoosConfigManager - .getCancelWarmupByGameModeChangeMessage()); - BoosWarmUpManager.cancelWarmUps(player); - } - } - } - } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onPlayerGameModeChange(PlayerGameModeChangeEvent event) { + Entity entity = event.getPlayer(); + if (entity != null) { + Player player = (Player) entity; + if (!player + .hasPermission("booscooldowns.nocancel.gamemodechange")) { + if (BoosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, BoosConfigManager + .getCancelWarmupByGameModeChangeMessage()); + BoosWarmUpManager.cancelWarmUps(player); + } + + } + } + } } diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerInteractListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerInteractListener.java index 6506a2a..ee20561 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerInteractListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerInteractListener.java @@ -1,84 +1,60 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosWarmUpManager; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosWarmUpManager; -/** - * Poslucha naslouchajc udlosti, kter se spout v okamiku kdy hr - * provd interakce s hernmi bloky. Pokud na pkazech hre je aktivn - * asova warmup a blok se kterm hr interaguje je kontejner, pak tato tda - * pot ukonuje tuto udlost a blokuje hri pstup do kontejner. Pokud hr - * disponuje oprvnnm booscooldowns.dontblock.interact, jeho pstup do - * kontejner nen blokovn. - * - * @author Jakub Kol - * - */ public class BoosPlayerInteractListener implements Listener { - /** - * Metoda zjiuje jestli je entita kter spustila tuto udlost hr. Pokud - * je entita hr, hr nen null a nedisponuje oprvnnm - * booscooldowns.dontblock.interact a pokud tento hr disponuje aktivnmi - * warmup asovai a blok se kterm interaguje je kontejner, pak je hri - * odeslna zprva, kter ho informuje o tom, e do kontejneru nen mon - * pistupovat a tato udlost je nsledn ukonena. To zablokuje hri - * pstup do kontejneru. - * - * @param event - * udlost PlayerInteractEvent - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onPlayerInteract(PlayerInteractEvent event) { - Entity entity = event.getPlayer(); - if (entity != null && entity instanceof Player) { - Player player = (Player) entity; - if (player != null - && !player - .hasPermission("booscooldowns.dontblock.interact")) { - if (BoosWarmUpManager.hasWarmUps(player)) { - if (event.getClickedBlock().getType().name() - .equals("CHEST") - || event.getClickedBlock().getType().name() - .equals("FURNACE") - || event.getClickedBlock().getType().name() - .equals("BURNING_FURNACE") - || event.getClickedBlock().getType().name() - .equals("WORKBENCH") - || event.getClickedBlock().getType().name() - .equals("DISPENSER") - || event.getClickedBlock().getType().name() - .equals("JUKEBOX") - || event.getClickedBlock().getType().name() - .equals("LOCKED_CHEST") - || event.getClickedBlock().getType().name() - .equals("ENCHANTMENT_TABLE") - || event.getClickedBlock().getType().name() - .equals("BREWING_STAND") - || event.getClickedBlock().getType().name() - .equals("CAULDRON") - || event.getClickedBlock().getType().name() - .equals("STORAGE_MINECART") - || event.getClickedBlock().getType().name() - .equals("TRAPPED_CHEST") - || event.getClickedBlock().getType().name() - .equals("DROPPER") - || event.getClickedBlock().getType().name() - .equals("HOPPER")) { - event.setCancelled(true); - boosChat.sendMessageToPlayer(player, - BoosConfigManager.getInteractBlockedMessage()); - } - } - } - } - } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onPlayerInteract(PlayerInteractEvent event) { + Entity entity = event.getPlayer(); + if (entity != null) { + Player player = (Player) entity; + if (!player + .hasPermission("booscooldowns.dontblock.interact")) { + if (BoosWarmUpManager.hasWarmUps(player)) { + if (event.getClickedBlock().getType().name() + .equals("CHEST") + || event.getClickedBlock().getType().name() + .equals("FURNACE") + || event.getClickedBlock().getType().name() + .equals("BURNING_FURNACE") + || event.getClickedBlock().getType().name() + .equals("WORKBENCH") + || event.getClickedBlock().getType().name() + .equals("DISPENSER") + || event.getClickedBlock().getType().name() + .equals("JUKEBOX") + || event.getClickedBlock().getType().name() + .equals("LOCKED_CHEST") + || event.getClickedBlock().getType().name() + .equals("ENCHANTMENT_TABLE") + || event.getClickedBlock().getType().name() + .equals("BREWING_STAND") + || event.getClickedBlock().getType().name() + .equals("CAULDRON") + || event.getClickedBlock().getType().name() + .equals("STORAGE_MINECART") + || event.getClickedBlock().getType().name() + .equals("TRAPPED_CHEST") + || event.getClickedBlock().getType().name() + .equals("DROPPER") + || event.getClickedBlock().getType().name() + .equals("HOPPER")) { + event.setCancelled(true); + boosChat.sendMessageToPlayer(player, + BoosConfigManager.getInteractBlockedMessage()); + } + } + + } + } + } } diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerMoveListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerMoveListener.java index db9ddfe..42d82de 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerMoveListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerMoveListener.java @@ -1,83 +1,34 @@ package cz.boosik.boosCooldown.Listeners; -import org.bukkit.Location; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosWarmUpManager; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosWarmUpManager; -/** - * Poslucha naslouchajc udlosti, kter se spout v okamiku kdy se hr - * pohybuje. Pokud na pkazech hre je aktivn asova warmup, ve chvli - * sputn tto udlosti jsou vechny jeho warmup asovae stornovny a hri - * je odeslna zprva, kter ho o tto skutenosti informuje. Pi pohybech hre - * hra tuto udlost spout 20 krt kadou vteinu. To me bt na velkch - * serverech velmi neoptimln a proto se funkce spout jen jednou za vteinu, - * pomoc jednoduchho cyklu. Pokud hr disponuje oprvnnm - * booscooldowns.nocancel.move, jeho warmup asovae stornovny nejsou. - * - * @author Jakub Kol - * - */ public class BoosPlayerMoveListener implements Listener { - /** - * Metoda zjiujc, jestli hr zmnil pozico ve svt, nebo ppadn svt - * od doby kdy pouil pkaz a do doby voln tto metody. - * - * @param player - * hr kter se pohybuje - * @return true pokud hr zmnil svou pozici, nebo pokud peel do jinho - * svta; jinak vrac false - */ - private static boolean hasMoved(Player player) { - String curworld = player.getWorld().getName(); - String cmdworld = BoosWarmUpManager.getPlayerworld().get(player); - Location curloc = player.getLocation(); - Location cmdloc = BoosWarmUpManager.getPlayerloc().get(player); - if (!curworld.equals(cmdworld)) { - return true; - } else if (cmdloc.distance(curloc) > 1) { - return true; - } + private int tempTimer = 0; - return false; - } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onPlayerMove(PlayerMoveEvent event) { - private int tempTimer = 0; - - /** - * Pokud hr nen null a nedisponuje oprvnnm booscooldowns.nocancel.move - * a pokud tento hr disponuje aktivnmi warmup asovai, pak je hri - * odeslna zprva, kter ho informuje o ukonen vech warmup asova a - * nsledn tyto asovae ukonuje pomoc metody cancelWarmUps();. Metoda - * obsahuje jednoduch asova, kter zajiuje, e funkce nebudou provdny - * pi kadm voln tto metody (20x za vteinu). - * - * @param event - * udlost PlayerMoveEvent - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onPlayerMove(PlayerMoveEvent event) { - if (tempTimer < 20) { - tempTimer = tempTimer + 1; - return; - } else { - Player player = event.getPlayer(); - if (player != null - && !player.hasPermission("booscooldowns.nocancel.move")) { - if (BoosWarmUpManager.hasWarmUps(player) && hasMoved(player)) { - BoosWarmUpManager.clearLocWorld(player); - boosChat.sendMessageToPlayer(player, - BoosConfigManager.getWarmUpCancelledByMoveMessage()); - BoosWarmUpManager.cancelWarmUps(player); - } - } - tempTimer = 0; - } - } + if (tempTimer < 10) { + tempTimer = tempTimer + 1; + } else { + Player player = event.getPlayer(); + if (player != null + && !player.hasPermission("booscooldowns.nocancel.move")) { + if (BoosWarmUpManager.hasWarmUps(player) && (event.getFrom().getX() != event.getTo().getX() || event.getFrom().getZ() != event.getTo().getZ() || event.getFrom().getY() != event.getTo().getY())) { + BoosWarmUpManager.clearLocWorld(player); + boosChat.sendMessageToPlayer(player, + BoosConfigManager.getWarmUpCancelledByMoveMessage()); + BoosWarmUpManager.cancelWarmUps(player); + } + } + tempTimer = 0; + } + } } \ No newline at end of file diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSneakListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSneakListener.java index ff1960e..f3a730f 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSneakListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSneakListener.java @@ -1,48 +1,27 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosWarmUpManager; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerToggleSneakEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosWarmUpManager; -/** - * Poslucha naslouchajc udlosti, kter se spout v okamiku kdy hr zapne - * plen (defaultn pomoc klvesy control). Pokud na pkazech hre je - * aktivn asova warmup, ve chvli sputn tto udlosti jsou vechny jeho - * warmup asovae stornovny a hri je odeslna zprva, kter ho o tto - * skutenosti informuje. Pokud hr disponuje oprvnnm - * booscooldowns.nocancel.sneak, jeho warmup asovae stornovny nejsou. - * - * @author Jakub Kol - * - */ public class BoosPlayerToggleSneakListener implements Listener { - /** - * Pokud hr nen null a nedisponuje oprvnnm - * booscooldowns.nocancel.sneak a pokud tento hr disponuje aktivnmi - * warmup asovai, pak je hri odeslna zprva, kter ho informuje o - * ukonen vech warmup asova a nsledn tyto asovae ukonuje pomoc - * metody cancelWarmUps();. - * - * @param event - * udlost PlayerToggleSneakEvent - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onPlayerToggleSneak(PlayerToggleSneakEvent event) { - Player player = event.getPlayer(); - if (player != null - && !player.hasPermission("booscooldowns.nocancel.sneak")) { - if (BoosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, - BoosConfigManager.getCancelWarmupOnSneakMessage()); - BoosWarmUpManager.cancelWarmUps(player); - } - } - } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onPlayerToggleSneak(PlayerToggleSneakEvent event) { + Player player = event.getPlayer(); + if (player != null + && !player.hasPermission("booscooldowns.nocancel.sneak")) { + if (BoosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, + BoosConfigManager.getCancelWarmupOnSneakMessage()); + BoosWarmUpManager.cancelWarmUps(player); + } + + } + } } \ No newline at end of file diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSprintListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSprintListener.java index 3c23afa..d40d993 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSprintListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosPlayerToggleSprintListener.java @@ -1,48 +1,27 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosWarmUpManager; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerToggleSprintEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosWarmUpManager; -/** - * Poslucha naslouchajc udlosti, kter se spout v okamiku kdy hr zapne - * sprintovn (pomoc dvojitho stisknut klvesy pro pohyb vped). Pokud na - * pkazech hre je aktivn asova warmup, ve chvli sputn tto udlosti - * jsou vechny jeho warmup asovae stornovny a hri je odeslna zprva, - * kter ho o tto skutenosti informuje. Pokud hr disponuje oprvnnm - * booscooldowns.nocancel.sprint, jeho warmup asovae stornovny nejsou. - * - * @author Jakub Kol - * - */ public class BoosPlayerToggleSprintListener implements Listener { - /** - * Pokud hr nen null a nedisponuje oprvnnm - * booscooldowns.nocancel.sprint a pokud tento hr disponuje aktivnmi - * warmup asovai, pak je hri odeslna zprva, kter ho informuje o - * ukonen vech warmup asova a nsledn tyto asovae ukonuje pomoc - * metody cancelWarmUps();. - * - * @param event - * udlost PlayerToggleSprintEvent - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onPlayerToggleSprint(PlayerToggleSprintEvent event) { - Player player = event.getPlayer(); - if (player != null - && !player.hasPermission("booscooldowns.nocancel.sprint")) { - if (BoosWarmUpManager.hasWarmUps(player)) { - boosChat.sendMessageToPlayer(player, - BoosConfigManager.getCancelWarmupOnSprintMessage()); - BoosWarmUpManager.cancelWarmUps(player); - } - } - } + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onPlayerToggleSprint(PlayerToggleSprintEvent event) { + Player player = event.getPlayer(); + if (player != null + && !player.hasPermission("booscooldowns.nocancel.sprint")) { + if (BoosWarmUpManager.hasWarmUps(player)) { + boosChat.sendMessageToPlayer(player, + BoosConfigManager.getCancelWarmupOnSprintMessage()); + BoosWarmUpManager.cancelWarmUps(player); + } + + } + } } \ No newline at end of file diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignChangeListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignChangeListener.java index f53bd79..ae8b3d5 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignChangeListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignChangeListener.java @@ -1,46 +1,37 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.SignChangeEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -/** - * @author Jakub Kol - * - */ public class BoosSignChangeListener implements Listener { - /** - * @param event - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onSignChange(SignChangeEvent event) { - Player player = event.getPlayer(); - String line1 = event.getLine(0); - String line2 = event.getLine(1); - if (line1.equals("[boosCooldowns]")) { - if (line2.equals("player") - && !player - .hasPermission("booscooldowns.signs.player.place")) { - boosChat.sendMessageToPlayer(player, - BoosConfigManager.getCannotCreateSignMessage()); - event.getBlock().breakNaturally(); - event.setCancelled(true); - return; - } - if (line2.equals("server") - && !player - .hasPermission("booscooldowns.signs.server.place")) { - boosChat.sendMessageToPlayer(player, - BoosConfigManager.getCannotCreateSignMessage()); - event.getBlock().breakNaturally(); - event.setCancelled(true); - return; - } - } - } + + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onSignChange(SignChangeEvent event) { + Player player = event.getPlayer(); + String line1 = event.getLine(0); + String line2 = event.getLine(1); + if (line1.equals("[boosCooldowns]")) { + if (line2.equals("player") + && !player + .hasPermission("booscooldowns.signs.player.place")) { + boosChat.sendMessageToPlayer(player, + BoosConfigManager.getCannotCreateSignMessage()); + event.getBlock().breakNaturally(); + event.setCancelled(true); + } + if (line2.equals("server") + && !player + .hasPermission("booscooldowns.signs.server.place")) { + boosChat.sendMessageToPlayer(player, + BoosConfigManager.getCannotCreateSignMessage()); + event.getBlock().breakNaturally(); + event.setCancelled(true); + } + } + } } diff --git a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignInteractListener.java b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignInteractListener.java index 8f7c6fd..80b9b98 100644 --- a/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignInteractListener.java +++ b/src/main/java/cz/boosik/boosCooldown/Listeners/BoosSignInteractListener.java @@ -1,5 +1,7 @@ package cz.boosik.boosCooldown.Listeners; +import cz.boosik.boosCooldown.BoosConfigManager; +import cz.boosik.boosCooldown.BoosCoolDown; import org.bukkit.Material; import org.bukkit.block.Sign; import org.bukkit.entity.Player; @@ -8,69 +10,56 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; - import util.boosChat; -import cz.boosik.boosCooldown.BoosConfigManager; -import cz.boosik.boosCooldown.BoosCoolDown; -/** - * @author Jakub - * - */ public class BoosSignInteractListener implements Listener { - private final BoosCoolDown plugin; + private final BoosCoolDown plugin; - /** - * @param instance - */ - public BoosSignInteractListener(BoosCoolDown instance) { - plugin = instance; - } + public BoosSignInteractListener(BoosCoolDown instance) { + plugin = instance; + } - /** - * @param event - */ - @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) - private void onSignInteract(PlayerInteractEvent event) { - String msg; - if (event.isCancelled()) - return; + @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) + private void onSignInteract(PlayerInteractEvent event) { + String msg; + if (event.isCancelled()) + return; - if (event.hasBlock() && event.getAction() == Action.RIGHT_CLICK_BLOCK) { - if (event.getClickedBlock().getType() == Material.SIGN_POST - || event.getClickedBlock().getType() == Material.WALL_SIGN) { - Sign s = (Sign) event.getClickedBlock().getState(); - String line1 = s.getLine(0); - String line2 = s.getLine(1); - String line3 = s.getLine(2); - String line4 = s.getLine(3); - Player player = event.getPlayer(); - if (line1.equals("[boosCooldowns]")) { - if (line2.equals("player") - && player - .hasPermission("booscooldowns.signs.player.use")) { - msg = line3; - if (line3.endsWith("+") || !line4.isEmpty()) { - msg = line3.substring(0, line3.length() - 1) + " " - + line4; - } - event.getPlayer().chat(msg); - } else if (line2.equals("server") - && player - .hasPermission("booscooldowns.signs.server.use")) { - msg = line3; - if (line3.endsWith("+") || !line4.isEmpty()) { - msg = line3.substring(0, line3.length() - 1) + " " - + line4; - } - plugin.getServer().dispatchCommand( - plugin.getServer().getConsoleSender(), msg); - } else { - boosChat.sendMessageToPlayer(player, - BoosConfigManager.getCannotUseSignMessage()); - } - } - } - } - } + if (event.hasBlock() && event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (event.getClickedBlock().getType() == Material.SIGN_POST + || event.getClickedBlock().getType() == Material.WALL_SIGN) { + Sign s = (Sign) event.getClickedBlock().getState(); + String line1 = s.getLine(0); + String line2 = s.getLine(1); + String line3 = s.getLine(2); + String line4 = s.getLine(3); + Player player = event.getPlayer(); + if (line1.equals("[boosCooldowns]")) { + if (line2.equals("player") + && player + .hasPermission("booscooldowns.signs.player.use")) { + msg = line3; + if (line3.endsWith("+") || !line4.isEmpty()) { + msg = line3.substring(0, line3.length() - 1) + " " + + line4; + } + event.getPlayer().chat(msg); + } else if (line2.equals("server") + && player + .hasPermission("booscooldowns.signs.server.use")) { + msg = line3; + if (line3.endsWith("+") || !line4.isEmpty()) { + msg = line3.substring(0, line3.length() - 1) + " " + + line4; + } + plugin.getServer().dispatchCommand( + plugin.getServer().getConsoleSender(), msg); + } else { + boosChat.sendMessageToPlayer(player, + BoosConfigManager.getCannotUseSignMessage()); + } + } + } + } + } } diff --git a/src/main/java/org/mcstats/MetricsLite.java b/src/main/java/org/mcstats/MetricsLite.java index 097f468..a087a3a 100644 --- a/src/main/java/org/mcstats/MetricsLite.java +++ b/src/main/java/org/mcstats/MetricsLite.java @@ -52,6 +52,7 @@ import java.util.UUID; import java.util.logging.Level; import java.util.zip.GZIPOutputStream; +@SuppressWarnings("ALL") public class MetricsLite { /** @@ -206,7 +207,7 @@ public class MetricsLite { * * @return true if metrics should be opted out of it */ - public boolean isOptOut() { + boolean isOptOut() { synchronized (optOutLock) { try { // Reload the metrics file @@ -283,7 +284,7 @@ public class MetricsLite { * * @return the File object for the config file */ - public File getConfigFile() { + 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 @@ -428,7 +429,7 @@ public class MetricsLite { * @param input * @return */ - public static byte[] gzip(String input) { + private static byte[] gzip(String input) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); GZIPOutputStream gzos = null; diff --git a/src/main/java/util/boosChat.java b/src/main/java/util/boosChat.java index 155d2f7..d1b757e 100644 --- a/src/main/java/util/boosChat.java +++ b/src/main/java/util/boosChat.java @@ -8,25 +8,28 @@ import org.bukkit.Server; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +@SuppressWarnings("ALL") public class boosChat { - static Logger log = Logger.getLogger("Minecraft"); - static List Colors = new LinkedList(); - static Server server; + private static final Logger log = Logger.getLogger("Minecraft"); + @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") + private static final List Colors = new LinkedList<>(); + private static Server server; + @SuppressWarnings("UnusedDeclaration") public static void broadcastMessage(String message) { message = boosChat.replaceColorCodes(message); log.info("[bColoredChat] " + message); server.broadcastMessage(message); } - static String replaceColorCodes(String line) { + private static String replaceColorCodes(String line) { line = replaceTags(line); line = line.replaceAll("(&([a-f0-9]))", "\u00A7$2"); return line; } - static String replaceTags(String line) { + private static String replaceTags(String line) { line = line.replaceAll("&black&", "&0"); line = line.replaceAll("&darkblue&", "&1"); line = line.replaceAll("&darkgreen&", "&2"); @@ -60,7 +63,7 @@ public class boosChat { player.sendMessage(message); } - public static void sendMessageToServer(String message) { + private static void sendMessageToServer(String message) { message = boosChat.replaceColorCodes(message); log.info(message); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 159c584..0cd3103 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -57,6 +57,14 @@ options: commands: groups: default: + /day_command: + limit: 5 + shared_limit: + - /night_command + /night_command: + limit: 5 + shared_limit: + - /day_command /command parameter: cooldown: 2 hours /commandwithparameters *: diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 3d902e8..8422e90 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: boosCooldowns main: cz.boosik.boosCooldown.BoosCoolDown -version: 3.9.5c -authors: [LordBoos (ingame name boosik)] +version: 3.9.6a +authors: [LordBoos (boosik)] softdepend: [Vault] description: > Shortcuts