From dbfa253fce943e4eb298ce94753bf04904b8011c Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 11 Dec 2020 19:48:14 +0000 Subject: [PATCH] Revert "Reworked EcoEnchant constructor" This reverts commit e3e15ace --- .../willfp/ecoenchants/EcoEnchantsPlugin.java | 3 +- .../config/EnchantmentYamlConfig.java | 74 ++++--------------- .../config/configs/EnchantmentConfig.java | 5 +- .../ecoenchants/enchantments/EcoEnchant.java | 51 ++----------- .../util/EnchantmentRegisterer.java | 16 ---- .../ecoenchants/extensions/Extension.java | 17 +---- 6 files changed, 22 insertions(+), 144 deletions(-) delete mode 100644 Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentRegisterer.java diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java b/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java index e278a559..c500c13d 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java @@ -2,7 +2,6 @@ package com.willfp.ecoenchants; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; -import com.willfp.ecoenchants.enchantments.util.EnchantmentRegisterer; import com.willfp.ecoenchants.extensions.loader.EcoExtensionLoader; import com.willfp.ecoenchants.extensions.loader.ExtensionLoader; import com.willfp.ecoenchants.util.internal.Loader; @@ -12,7 +11,7 @@ import org.bukkit.plugin.java.JavaPlugin; /** * The Main class for EcoEnchants */ -public class EcoEnchantsPlugin extends JavaPlugin implements EnchantmentRegisterer { +public class EcoEnchantsPlugin extends JavaPlugin { /** * Instance of EcoEnchants */ diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/config/EnchantmentYamlConfig.java b/Plugin/src/main/java/com/willfp/ecoenchants/config/EnchantmentYamlConfig.java index 647815a7..273f1507 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/config/EnchantmentYamlConfig.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/config/EnchantmentYamlConfig.java @@ -2,18 +2,10 @@ package com.willfp.ecoenchants.config; import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.enchantments.EcoEnchant; -import com.willfp.ecoenchants.enchantments.util.EnchantmentRegisterer; -import com.willfp.ecoenchants.util.internal.Logger; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; +import java.io.*; import java.nio.charset.StandardCharsets; /** @@ -25,50 +17,23 @@ public abstract class EnchantmentYamlConfig { public YamlConfiguration config; protected File configFile; private final File directory; - private final EnchantmentRegisterer registerer; + private final Class source; private final EcoEnchant.EnchantmentType type; - private final boolean legacy; - private Class legacyRegisterer; - /** * Create new config yml * - * @param name The config name - * @param registerer The class of the main class of plugin or extension - * @param type The enchantment type + * @param name The config name + * @param plugin The class of the main class of plugin or extension + * @param type The enchantment type */ - public EnchantmentYamlConfig(String name, EnchantmentRegisterer registerer, EcoEnchant.EnchantmentType type) { + public EnchantmentYamlConfig(String name, Class plugin, EcoEnchant.EnchantmentType type) { this.name = name; - this.registerer = registerer; + this.source = plugin; this.type = type; - legacy = false; File basedir = new File(EcoEnchantsPlugin.getInstance().getDataFolder(), "enchants/"); - if (!basedir.exists()) basedir.mkdirs(); - - File dir = new File(basedir, type.getName() + "/"); - if (!dir.exists()) { - dir.mkdirs(); - } - this.directory = dir; - - init(); - } - - @Deprecated - public EnchantmentYamlConfig(String name, Class registerer, EcoEnchant.EnchantmentType type) { - this.name = name; - this.legacyRegisterer = registerer; - this.registerer = null; - this.type = type; - legacy = true; - - Logger.warn("Config " + name + " was created in legacy mode!"); - Logger.warn("Update your extensions"); - - File basedir = new File(EcoEnchantsPlugin.getInstance().getDataFolder(), "enchants/"); - if (!basedir.exists()) basedir.mkdirs(); + if(!basedir.exists()) basedir.mkdirs(); File dir = new File(basedir, type.getName() + "/"); if (!dir.exists()) { @@ -93,12 +58,7 @@ public abstract class EnchantmentYamlConfig { private void saveResource() { String resourcePath = "/enchants/" + type.getName() + "/" + name + ".yml"; - InputStream in; - if(legacy) { - in = legacyRegisterer.getResourceAsStream(resourcePath); - } else { - in = registerer.getResourceAsStream(resourcePath); - } + InputStream in = source.getResourceAsStream(resourcePath); File outFile = new File(EcoEnchantsPlugin.getInstance().getDataFolder(), resourcePath); int lastIndex = resourcePath.lastIndexOf('/'); @@ -119,8 +79,7 @@ public abstract class EnchantmentYamlConfig { out.close(); in.close(); } - } catch (IOException ignored) { - } + } catch (IOException ignored) {} } private void createFile() { @@ -132,20 +91,13 @@ public abstract class EnchantmentYamlConfig { config.load(configFile); String resourcePath = "/enchants/" + type.getName() + "/" + name + ".yml"; - - InputStream newIn; - - if(legacy) { - newIn = legacyRegisterer.getResourceAsStream(resourcePath); - } else { - newIn = registerer.getResourceAsStream(resourcePath); - } + InputStream newIn = source.getResourceAsStream(resourcePath); BufferedReader reader = new BufferedReader(new InputStreamReader(newIn, StandardCharsets.UTF_8)); YamlConfiguration newConfig = new YamlConfiguration(); newConfig.load(reader); - if (newConfig.getKeys(true).equals(config.getKeys(true))) + if(newConfig.getKeys(true).equals(config.getKeys(true))) return; newConfig.getKeys(true).forEach((s -> { @@ -155,7 +107,7 @@ public abstract class EnchantmentYamlConfig { })); config.getKeys(true).forEach((s -> { - if (!newConfig.getKeys(true).contains(s)) { + if(!newConfig.getKeys(true).contains(s)) { config.set(s, null); } })); diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/EnchantmentConfig.java b/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/EnchantmentConfig.java index a2a7a82c..953cb1ce 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/EnchantmentConfig.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/config/configs/EnchantmentConfig.java @@ -6,7 +6,6 @@ import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.EcoEnchants; import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget; -import com.willfp.ecoenchants.enchantments.util.EnchantmentRegisterer; import com.willfp.ecoenchants.util.internal.Logger; import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; @@ -23,8 +22,8 @@ import java.util.Set; public class EnchantmentConfig extends EnchantmentYamlConfig { private final String name; - public EnchantmentConfig(String name, EnchantmentRegisterer registerer, EcoEnchant.EnchantmentType type) { - super(name, registerer, type); + public EnchantmentConfig(String name, Class plugin, EcoEnchant.EnchantmentType type) { + super(name, plugin, type); this.name = name; } 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 cd8928e1..70f9577d 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/EcoEnchant.java @@ -4,13 +4,11 @@ import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.config.ConfigManager; import com.willfp.ecoenchants.config.configs.EnchantmentConfig; import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity; -import com.willfp.ecoenchants.enchantments.util.EnchantmentRegisterer; import com.willfp.ecoenchants.enchantments.util.EnchantmentUtils; import com.willfp.ecoenchants.enchantments.util.Watcher; 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.internal.Logger; import com.willfp.ecoenchants.util.optional.Prerequisite; import org.apache.commons.lang.WordUtils; import org.bukkit.Bukkit; @@ -59,6 +57,7 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist private boolean enabled; + /** * Create a new EcoEnchant that exists within the base plugin * @@ -68,47 +67,7 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist */ @ApiStatus.Internal protected EcoEnchant(String key, EcoEnchant.EnchantmentType type, Prerequisite... prerequisites) { - this(key, type, EcoEnchantsPlugin.getInstance(), prerequisites); - } - - /** - * Create a new EcoEnchant that exists within an extension or external plugin - * - * @param key The key name of the enchantment - * @param type The type of the enchantment - * @param registererClass The Main class of the {@link org.bukkit.plugin.Plugin} or {@link com.willfp.ecoenchants.extensions.Extension} that the enchantment was created by - * @param prerequisites Optional {@link Prerequisite}s that must be met - * - * @deprecated Class-based enchantment registration was deprecated in 5.6.0. Base your extensions off of {@link EnchantmentRegisterer} - */ - @Deprecated - @ApiStatus.ScheduledForRemoval(inVersion = "5.7.0") - protected EcoEnchant(String key, EcoEnchant.EnchantmentType type, Class registererClass, Prerequisite... prerequisites) { - super(NamespacedKey.minecraft(key)); - - Logger.warn("Enchantment " + key + " was created in legacy mode!"); - Logger.warn("Update your extensions"); - - this.type = type; - this.permissionName = key.replaceAll("_", ""); - ConfigManager.addEnchantmentConfig(new EnchantmentConfig(this.permissionName, registererClass, this.type)); - this.config = ConfigManager.getEnchantmentConfig(this.permissionName); - - if (Bukkit.getPluginManager().getPermission("ecoenchants.fromtable." + permissionName) == null) { - Permission permission = new Permission( - "ecoenchants.fromtable." + permissionName, - "Allows getting " + permissionName + " from an Enchanting Table", - PermissionDefault.TRUE - ); - permission.addParent(Objects.requireNonNull(Bukkit.getPluginManager().getPermission("ecoenchants.fromtable.*")), true); - Bukkit.getPluginManager().addPermission(permission); - } - - if (!Prerequisite.areMet(prerequisites)) - return; - - this.update(); - EcoEnchants.addNewEcoEnchant(this); + this(key, type, EcoEnchantsPlugin.class, prerequisites); } /** @@ -116,15 +75,15 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist * * @param key The key name of the enchantment * @param type The type of the enchantment - * @param registerer Instance of the main class of the {@link com.willfp.ecoenchants.extensions.Extension} or {@link EnchantmentRegisterer} that the enchantment was created by + * @param plugin The Main class of the {@link org.bukkit.plugin.Plugin} or {@link com.willfp.ecoenchants.extensions.Extension} that the enchantment was created by * @param prerequisites Optional {@link Prerequisite}s that must be met */ - protected EcoEnchant(String key, EcoEnchant.EnchantmentType type, EnchantmentRegisterer registerer, Prerequisite... prerequisites) { + protected EcoEnchant(String key, EcoEnchant.EnchantmentType type, Class plugin, Prerequisite... prerequisites) { super(NamespacedKey.minecraft(key)); this.type = type; this.permissionName = key.replaceAll("_", ""); - ConfigManager.addEnchantmentConfig(new EnchantmentConfig(this.permissionName, registerer, this.type)); + ConfigManager.addEnchantmentConfig(new EnchantmentConfig(this.permissionName, plugin, this.type)); this.config = ConfigManager.getEnchantmentConfig(this.permissionName); if (Bukkit.getPluginManager().getPermission("ecoenchants.fromtable." + permissionName) == null) { diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentRegisterer.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentRegisterer.java deleted file mode 100644 index e815dd61..00000000 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentRegisterer.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.willfp.ecoenchants.enchantments.util; - -import java.io.InputStream; - -/** - * Exists to simplify enchantment registration - * - * Prevents requiring direct class referencing on the front-end of enchantment creation - * - * @see com.willfp.ecoenchants.extensions.Extension - */ -public interface EnchantmentRegisterer { - default InputStream getResourceAsStream(String location) { - return this.getClass().getResourceAsStream(location); - } -} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/extensions/Extension.java b/Plugin/src/main/java/com/willfp/ecoenchants/extensions/Extension.java index eac5462d..7ed90289 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/extensions/Extension.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/extensions/Extension.java @@ -1,6 +1,5 @@ package com.willfp.ecoenchants.extensions; -import com.willfp.ecoenchants.enchantments.util.EnchantmentRegisterer; import org.apache.commons.lang.Validate; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -9,23 +8,17 @@ import org.jetbrains.annotations.NotNull; * Extensions are a way of interfacing with EcoEnchants * Syntactically similar to Bukkit Plugins. */ -public abstract class Extension implements EnchantmentRegisterer { +public abstract class Extension { /** * Metadata containing version and name */ private ExtensionMetadata metadata = null; - /** - * Instance of the extension - */ - private static Extension instance; - /** * Method to validate metadata and enable extension */ public final void enable() { Validate.notNull(metadata, "Metadata cannot be null!"); - instance = this; this.onEnable(); } @@ -46,14 +39,6 @@ public abstract class Extension implements EnchantmentRegisterer { */ protected abstract void onDisable(); - /** - * Get instance of the extension - * @return The instance - */ - public static Extension getInstance() { - return instance; - } - /** * Set the metadata of the extension *