Refactored extension loading
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<Extension> extensions = new HashSet<>();
|
||||
public class EcoExtensionLoader implements ExtensionLoader {
|
||||
private final Set<Extension> 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<Extension> getLoadedExtensions() {
|
||||
@Override
|
||||
public Set<Extension> getLoadedExtensions() {
|
||||
return extensions;
|
||||
}
|
||||
}
|
||||
@@ -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<Extension> getLoadedExtensions();
|
||||
}
|
||||
@@ -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! :)");
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user