diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java b/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java index 317f3231..93e05d46 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/EcoEnchantsPlugin.java @@ -1,6 +1,8 @@ package com.willfp.ecoenchants; import com.comphenix.protocol.ProtocolManager; +import com.willfp.ecoenchants.extensions.loader.EcoExtensionLoader; +import com.willfp.ecoenchants.extensions.loader.ExtensionLoader; import com.willfp.ecoenchants.util.Loader; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; @@ -9,17 +11,15 @@ import org.bukkit.plugin.java.JavaPlugin; * The Main class for EcoEnchants */ public class EcoEnchantsPlugin extends JavaPlugin { + /** + * Instance of EcoEnchants + */ private static EcoEnchantsPlugin instance; /** - * Is the plugin outdated + * Extension loader */ - public static boolean outdated; - - /** - * Newest available plugin version - */ - public static String newVersion; + private final ExtensionLoader loader = new EcoExtensionLoader(); /** * NMS version @@ -52,6 +52,14 @@ public class EcoEnchantsPlugin extends JavaPlugin { instance = this; } + /** + * Get extension loader + * @return The {@link ExtensionLoader} attached to EcoEnchants + */ + public ExtensionLoader getExtensionLoader() { + return loader; + } + /** * Get plugin instance * @return Plugin instance diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java index d4f8cc2d..5f6e27ab 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/command/commands/CommandEcodebug.java @@ -5,7 +5,7 @@ import com.willfp.ecoenchants.command.AbstractCommand; import com.willfp.ecoenchants.display.EnchantmentCache; import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.EcoEnchants; -import com.willfp.ecoenchants.extensions.ExtensionManager; +import com.willfp.ecoenchants.extensions.loader.ExtensionLoader; import com.willfp.ecoenchants.util.Logger; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; @@ -42,7 +42,7 @@ public class CommandEcodebug extends AbstractCommand { Logger.info("Running Version: " + EcoEnchantsPlugin.getInstance().getDescription().getVersion()); Logger.info(""); - Logger.info("Loaded Extensions: " + ExtensionManager.getLoadedExtensions().values().stream().map(pair -> pair.getFirst() + " v" + pair.getSecond()).collect(Collectors.joining())); + Logger.info("Loaded Extensions: " + EcoEnchantsPlugin.getInstance().getExtensionLoader().getLoadedExtensions().stream().map(extension -> extension.getName() + " v" + extension.getVersion()).collect(Collectors.joining())); Logger.info(""); Logger.info("EcoEnchants.getAll(): " + EcoEnchants.getAll().toString()); 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 7ef9e19d..6576197f 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/extensions/Extension.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/extensions/Extension.java @@ -73,11 +73,11 @@ public abstract class Extension { * Designed for internal use */ @ApiStatus.Internal - static final class ExtensionMetadata { + public static final class ExtensionMetadata { private final @NotNull String version; private final @NotNull String name; - ExtensionMetadata(@NotNull String version, @NotNull String name) { + public ExtensionMetadata(@NotNull String version, @NotNull String name) { this.version = version; this.name = name; } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/extensions/ExtensionManager.java b/Plugin/src/main/java/com/willfp/ecoenchants/extensions/loader/EcoExtensionLoader.java similarity index 84% rename from Plugin/src/main/java/com/willfp/ecoenchants/extensions/ExtensionManager.java rename to Plugin/src/main/java/com/willfp/ecoenchants/extensions/loader/EcoExtensionLoader.java index 377b04d0..b503b119 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/extensions/ExtensionManager.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/extensions/loader/EcoExtensionLoader.java @@ -1,7 +1,9 @@ -package com.willfp.ecoenchants.extensions; +package com.willfp.ecoenchants.extensions.loader; import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.extensions.Extension; +import com.willfp.ecoenchants.extensions.MalformedExtensionException; import com.willfp.ecoenchants.util.Logger; import com.willfp.ecoenchants.util.tuplets.Pair; import org.bukkit.Bukkit; @@ -19,13 +21,14 @@ import java.util.stream.Collectors; /** * Class containing method to load extensions */ -public class ExtensionManager { - private static final Set extensions = new HashSet<>(); +public class EcoExtensionLoader implements ExtensionLoader { + private final Set extensions = new HashSet<>(); /** * Load all extensions */ - public static void loadExtensions() { + @Override + public void loadExtensions() { File dir = new File(EcoEnchantsPlugin.getInstance().getDataFolder(), "/extensions"); if (!dir.exists()) { dir.mkdirs(); @@ -47,7 +50,7 @@ public class ExtensionManager { } } - private static void loadExtension(File extensionJar) throws MalformedExtensionException { + private void loadExtension(File extensionJar) throws MalformedExtensionException { URL url = null; try { url = extensionJar.toURI().toURL(); @@ -98,15 +101,17 @@ public class ExtensionManager { /** * Unload all extensions */ - public static void unloadExtensions() { - extensions.forEach(Extension::onDisable); + @Override + public void unloadExtensions() { + extensions.forEach(Extension::disable); extensions.clear(); } /** * Reload all extensions */ - public static void reloadExtensions() { + @Override + public void reloadExtensions() { unloadExtensions(); loadExtensions(); } @@ -115,7 +120,8 @@ public class ExtensionManager { * Get set of all loaded extensions * @return {@link Set} of {@link Extension}s */ - public static Set getLoadedExtensions() { + @Override + public Set getLoadedExtensions() { return extensions; } } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/extensions/loader/ExtensionLoader.java b/Plugin/src/main/java/com/willfp/ecoenchants/extensions/loader/ExtensionLoader.java new file mode 100644 index 00000000..70abc3f1 --- /dev/null +++ b/Plugin/src/main/java/com/willfp/ecoenchants/extensions/loader/ExtensionLoader.java @@ -0,0 +1,15 @@ +package com.willfp.ecoenchants.extensions.loader; + +import com.willfp.ecoenchants.extensions.Extension; + +import java.util.Set; + +public interface ExtensionLoader { + void loadExtensions(); + + void unloadExtensions(); + + void reloadExtensions(); + + Set getLoadedExtensions(); +} diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/util/Loader.java b/Plugin/src/main/java/com/willfp/ecoenchants/util/Loader.java index 5dbe3510..8c5a8d15 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/util/Loader.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/util/Loader.java @@ -27,7 +27,7 @@ import com.willfp.ecoenchants.events.armorequip.ArmorListener; import com.willfp.ecoenchants.events.armorequip.DispenserArmorListener; import com.willfp.ecoenchants.events.entitydeathbyentity.EntityDeathByEntityListeners; import com.willfp.ecoenchants.events.naturalexpgainevent.NaturalExpGainListeners; -import com.willfp.ecoenchants.extensions.ExtensionManager; +import com.willfp.ecoenchants.extensions.loader.ExtensionLoader; import com.willfp.ecoenchants.integrations.anticheat.AnticheatManager; import com.willfp.ecoenchants.integrations.anticheat.plugins.AnticheatAAC; import com.willfp.ecoenchants.integrations.anticheat.plugins.AnticheatMatrix; @@ -264,12 +264,13 @@ public class Loader { Logger.info("Loading Extensions..."); - ExtensionManager.loadExtensions(); - if(ExtensionManager.getLoadedExtensions().isEmpty()) { + EcoEnchantsPlugin.getInstance().getExtensionLoader().loadExtensions(); + + if(EcoEnchantsPlugin.getInstance().getExtensionLoader().getLoadedExtensions().isEmpty()){ Logger.info("&cNo extensions found"); } else { Logger.info("Extensions Loaded:"); - ExtensionManager.getLoadedExtensions().forEach((extension) -> { + EcoEnchantsPlugin.getInstance().getExtensionLoader().getLoadedExtensions().forEach((extension) -> { Logger.info("- " + extension.getName() + " v" + extension.getVersion()); }); } @@ -386,8 +387,8 @@ public class Loader { if (currentVersion.compareTo(mostRecentVersion) > 0 || currentVersion.equals(mostRecentVersion)) { Logger.info("&aEcoEnchants is up to date! (Version " + EcoEnchantsPlugin.getInstance().getDescription().getVersion() + ")"); } else { - EcoEnchantsPlugin.outdated = true; - EcoEnchantsPlugin.newVersion = version; + UpdateChecker.setOutdated(true); + UpdateChecker.setNewVersion(version); Bukkit.getScheduler().runTaskTimer(EcoEnchantsPlugin.getInstance(), () -> { Logger.info("&6EcoEnchants is out of date! (Version " + EcoEnchantsPlugin.getInstance().getDescription().getVersion() + ")"); @@ -441,7 +442,7 @@ public class Loader { })); Logger.info(""); Logger.info("&cUnloading Extensions..."); - ExtensionManager.unloadExtensions(); + EcoEnchantsPlugin.getInstance().getExtensionLoader().unloadExtensions(); Logger.info("&fBye! :)"); } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/util/UpdateChecker.java b/Plugin/src/main/java/com/willfp/ecoenchants/util/UpdateChecker.java index 280c1376..3d1d8b75 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/util/UpdateChecker.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/util/UpdateChecker.java @@ -11,6 +11,9 @@ import java.util.Scanner; public class UpdateChecker { + private static boolean outdated; + private static String newVersion; + private final Plugin plugin; private final int resourceId; @@ -30,5 +33,21 @@ public class UpdateChecker { } }); } + + public static boolean isOutdated() { + return outdated; + } + + public static String getNewVersion() { + return newVersion; + } + + public static void setOutdated(boolean outdated) { + UpdateChecker.outdated = outdated; + } + + public static void setNewVersion(String newVersion) { + UpdateChecker.newVersion = newVersion; + } } \ No newline at end of file