From b6f699142be15255b0ca70419a69db43cde0c35d Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 28 Nov 2020 14:53:43 +0000 Subject: [PATCH] Cleaned EcoEnchant --- .../ecoenchants/enchantments/EcoEnchant.java | 97 ++----------------- .../InvalidEnchantmentException.java | 10 -- .../enchantments/util/EnchantmentUtils.java | 44 +++++++++ .../willfp/ecoenchants/util/StringUtils.java | 17 ++++ 4 files changed, 67 insertions(+), 101 deletions(-) delete mode 100644 Plugin/src/main/java/com/willfp/ecoenchants/enchantments/InvalidEnchantmentException.java diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java index a8992e20..6cdaa4b6 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java @@ -3,16 +3,14 @@ package com.willfp.ecoenchants.enchantments; import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.config.ConfigManager; import com.willfp.ecoenchants.config.configs.EnchantmentConfig; -import com.willfp.ecoenchants.enchantments.itemtypes.Spell; import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; +import com.willfp.ecoenchants.enchantments.util.EnchantmentUtils; import com.willfp.ecoenchants.enchantments.util.Watcher; -import com.willfp.ecoenchants.integrations.placeholder.PlaceholderEntry; -import com.willfp.ecoenchants.integrations.placeholder.PlaceholderManager; -import com.willfp.ecoenchants.util.NumberUtils; import com.willfp.ecoenchants.util.StringUtils; import com.willfp.ecoenchants.util.interfaces.ObjectCallable; import com.willfp.ecoenchants.util.interfaces.Registerable; import com.willfp.ecoenchants.util.optional.Prerequisite; +import org.apache.commons.lang.Validate; import org.apache.commons.lang.WordUtils; import org.bukkit.Bukkit; import org.bukkit.Material; @@ -28,7 +26,6 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; import java.util.*; import java.util.regex.Pattern; -import java.util.stream.Collectors; @SuppressWarnings({"unchecked", "deprecation"}) public abstract class EcoEnchant extends Enchantment implements Listener, Registerable, Watcher { @@ -58,10 +55,10 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist protected EcoEnchant(String key, EcoEnchant.EnchantmentType type, Class plugin, Prerequisite... prerequisites) { super(NamespacedKey.minecraft(key)); - if(Pattern.matches("[a-z_]", key)) throw new InvalidEnchantmentException("Key must only contain lowercase letters and underscores"); + Validate.isTrue(Pattern.matches("[a-z_]", key), "Key must only contain lowercase letters and underscores"); this.type = type; - this.permissionName = key.replace("_", ""); + this.permissionName = key.replaceAll("_", ""); ConfigManager.addEnchantmentConfig(new EnchantmentConfig(this.permissionName, plugin, this.type)); this.config = ConfigManager.getEnchantmentConfig(this.permissionName); @@ -79,7 +76,7 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist return; this.update(); - this.add(); + EcoEnchants.addNewEcoEnchant(this); } /** @@ -101,7 +98,7 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist target.addAll(config.getTargets()); target.forEach(enchantmentTarget -> targetMaterials.addAll(enchantmentTarget.getMaterials())); enabled = config.getBool("enabled", true); - this.updatePlaceholders(); + EnchantmentUtils.registerPlaceholders(this); this.register(); } @@ -138,88 +135,6 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist } catch (NoSuchFieldException | IllegalAccessException ignored) {} } - private void add() { - EcoEnchants.addNewEcoEnchant(this); - } - - private void remove() { - EcoEnchants.removeEcoEnchant(this); - } - - private void updatePlaceholders() { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + "enabled", (player) -> { - return String.valueOf(this.isEnabled()); - }) - ); - - this.getConfig().config.getKeys(true).forEach(string -> { - String key = string.replaceAll("\\.", "_").replaceAll("-", "_"); - Object object = this.getConfig().config.get(string); - - if (object instanceof Integer) { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + key, (player) -> { - return ((Integer) object).toString(); - }) - ); - } else if(object instanceof String) { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + key, (player) -> { - return (String) object; - }) - ); - } else if(object instanceof Double) { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + key, (player) -> { - return NumberUtils.format((Double) object); - }) - ); - } else if(object instanceof Collection) { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + key, (player) -> { - Collection c = (Collection) object; - return c.stream().map(String::valueOf).collect(Collectors.joining(", ")); - }) - ); - } - }); - - if(this.getConfig().config.get(EcoEnchants.CONFIG_LOCATION + "chance-per-level") != null) { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + "chance_per_level", (player) -> { - return NumberUtils.format(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level")); - }) - ); - } - - if(this.getConfig().config.get(EcoEnchants.CONFIG_LOCATION + "multiplier") != null) { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + "multiplier", (player) -> { - return NumberUtils.format(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier")); - }) - ); - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + "multiplier_percentage", (player) -> { - return NumberUtils.format(this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier") * 100); - }) - ); - } - - if(this instanceof Spell) { - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + "cooldown", (player) -> { - return NumberUtils.format(Spell.getCooldown((Spell) this, player)); - }, true) - ); - PlaceholderManager.registerPlaceholder( - new PlaceholderEntry(this.getPermissionName() + "_" + "cooldown_total", (player) -> { - return NumberUtils.format(((Spell) this).getCooldownTime()); - }) - ); - } - } - /** * Get if enchantment can be removed in grindstone * @return Whether the enchantment can be removed diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/InvalidEnchantmentException.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/InvalidEnchantmentException.java deleted file mode 100644 index 2c544350..00000000 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/InvalidEnchantmentException.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.willfp.ecoenchants.enchantments; - -/** - * Triggered if enchantment is invalid (for extensions) - */ -public class InvalidEnchantmentException extends RuntimeException { - public InvalidEnchantmentException(String errorMessage) { - super(errorMessage); - } -} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java index bcf7ff6e..b67bd89e 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java @@ -2,10 +2,54 @@ package com.willfp.ecoenchants.enchantments.util; import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.enchantments.itemtypes.Spell; +import com.willfp.ecoenchants.integrations.placeholder.PlaceholderEntry; +import com.willfp.ecoenchants.integrations.placeholder.PlaceholderManager; import com.willfp.ecoenchants.util.NumberUtils; +import com.willfp.ecoenchants.util.StringUtils; public class EnchantmentUtils { public static boolean passedChance(EcoEnchant enchantment, int level) { return NumberUtils.randFloat(0, 1) < ((enchantment.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level") * level) / 100); } + + public static void registerPlaceholders(EcoEnchant enchantment) { + + PlaceholderManager.registerPlaceholder( + new PlaceholderEntry(enchantment.getPermissionName() + "_" + "enabled", (player) -> String.valueOf(enchantment.isEnabled())) + ); + + enchantment.getConfig().config.getKeys(true).forEach(string -> { + String key = string.replaceAll("\\.", "_").replaceAll("-", "_"); + Object object = enchantment.getConfig().config.get(string); + + PlaceholderManager.registerPlaceholder( + new PlaceholderEntry(enchantment.getPermissionName() + "_" + key, (player) -> StringUtils.internalToString(object)) + ); + }); + + if(enchantment.getConfig().config.get(EcoEnchants.CONFIG_LOCATION + "chance-per-level") != null) { + PlaceholderManager.registerPlaceholder( + new PlaceholderEntry(enchantment.getPermissionName() + "_" + "chance_per_level", (player) -> NumberUtils.format(enchantment.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "chance-per-level"))) + ); + } + + if(enchantment.getConfig().config.get(EcoEnchants.CONFIG_LOCATION + "multiplier") != null) { + PlaceholderManager.registerPlaceholder( + new PlaceholderEntry(enchantment.getPermissionName() + "_" + "multiplier", (player) -> NumberUtils.format(enchantment.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier"))) + ); + PlaceholderManager.registerPlaceholder( + new PlaceholderEntry(enchantment.getPermissionName() + "_" + "multiplier_percentage", (player) -> NumberUtils.format(enchantment.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "multiplier") * 100)) + ); + } + + if(enchantment instanceof Spell) { + PlaceholderManager.registerPlaceholder( + new PlaceholderEntry(enchantment.getPermissionName() + "_" + "cooldown", (player) -> NumberUtils.format(Spell.getCooldown((Spell) enchantment, player)), true) + ); + PlaceholderManager.registerPlaceholder( + new PlaceholderEntry(enchantment.getPermissionName() + "_" + "cooldown_total", (player) -> NumberUtils.format(((Spell) enchantment).getCooldownTime())) + ); + } + } } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java b/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java index bea5cb29..fce8a2f8 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/util/StringUtils.java @@ -4,8 +4,10 @@ import com.willfp.ecoenchants.integrations.placeholder.PlaceholderManager; import net.md_5.bungee.api.ChatColor; import org.bukkit.entity.Player; +import java.util.Collection; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; import static net.md_5.bungee.api.ChatColor.COLOR_CHAR; @@ -38,4 +40,19 @@ public class StringUtils { return matcher.appendTail(buffer).toString(); } + + public static String internalToString(Object object) { + if(object == null) return "null"; + + if (object instanceof Integer) { + return ((Integer) object).toString(); + } else if(object instanceof String) { + return (String) object; + } else if(object instanceof Double) { + return NumberUtils.format((Double) object); + } else if(object instanceof Collection) { + Collection c = (Collection) object; + return c.stream().map(String::valueOf).collect(Collectors.joining(", ")); + } else return String.valueOf(object); + } }