From a0adde898153c5170d6b21ee50a802a8cc1f3e90 Mon Sep 17 00:00:00 2001 From: hsgamer Date: Thu, 22 Aug 2024 00:38:22 +0700 Subject: [PATCH] refactor AddonDownloader --- .../java/me/hsgamer/bettergui/BetterGUI.java | 7 +-- .../bettergui/downloader/AddonDownloader.java | 45 +++++++++++-------- .../me/hsgamer/bettergui/menu/AddonMenu.java | 2 +- 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/main/java/me/hsgamer/bettergui/BetterGUI.java b/src/main/java/me/hsgamer/bettergui/BetterGUI.java index 1f720777..6fce4c0d 100644 --- a/src/main/java/me/hsgamer/bettergui/BetterGUI.java +++ b/src/main/java/me/hsgamer/bettergui/BetterGUI.java @@ -65,9 +65,6 @@ protected List getComponents() { return menu.getVariableManager().setVariables(StringReplacerApplier.normalizeQuery(variable), uuid); })); - AddonManager addonManager = new AddonManager(this); - AddonDownloader addonDownloader = new AddonDownloader(this, addonManager); - List components = new ArrayList<>(Arrays.asList( variableBundle, @@ -87,10 +84,10 @@ protected List getComponents() { ConfigGenerator.newInstance(MessageConfig.class, new BukkitConfig(this, "messages.yml")), new TemplateConfig(this), - addonManager, + new AddonManager(this), new MenuManager(this), new MenuCommandManager(this), - addonDownloader + new AddonDownloader(this) )); if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) { diff --git a/src/main/java/me/hsgamer/bettergui/downloader/AddonDownloader.java b/src/main/java/me/hsgamer/bettergui/downloader/AddonDownloader.java index bd685f9f..074bd001 100644 --- a/src/main/java/me/hsgamer/bettergui/downloader/AddonDownloader.java +++ b/src/main/java/me/hsgamer/bettergui/downloader/AddonDownloader.java @@ -8,33 +8,40 @@ import me.hsgamer.hscore.downloader.json.JsonDownloadInfoLoader; import me.hsgamer.hscore.downloader.webstream.WebInputStreamLoader; -public class AddonDownloader extends Downloader implements PostEnable { +public class AddonDownloader implements PostEnable { private final BetterGUI plugin; - private final AddonManager addonManager; + private Downloader downloader; - public AddonDownloader(BetterGUI plugin, AddonManager addonManager) { - super( - new JsonDownloadInfoLoader("https://raw.githubusercontent.com/BetterGUI-MC/Addon-List/master/addons.json"), - new WebInputStreamLoader(), - addonManager.getExpansionsDir() - ); + public AddonDownloader(BetterGUI plugin) { this.plugin = plugin; - this.addonManager = addonManager; } @Override - public void onLoaded() { - for (DownloadInfo downloadInfo : getLoadedDownloadInfo().values()) { - addonManager.getExpansionClassLoader(downloadInfo.getName()).ifPresent(loader -> { - if (!loader.getDescription().getVersion().equals(downloadInfo.getVersion())) { - plugin.getLogger().warning(() -> "The addon '" + downloadInfo.getName() + "' has a new update. New Version: " + downloadInfo.getVersion()); + public void postEnable() { + AddonManager addonManager = plugin.get(AddonManager.class); + this.downloader = new Downloader( + new JsonDownloadInfoLoader("https://raw.githubusercontent.com/BetterGUI-MC/Addon-List/master/addons.json"), + new WebInputStreamLoader(), + addonManager.getExpansionsDir() + ) { + @Override + public void onLoaded() { + for (DownloadInfo downloadInfo : getLoadedDownloadInfo().values()) { + addonManager.getExpansionClassLoader(downloadInfo.getName()).ifPresent(loader -> { + if (!loader.getDescription().getVersion().equals(downloadInfo.getVersion())) { + plugin.getLogger().warning(() -> "The addon '" + downloadInfo.getName() + "' has a new update. New Version: " + downloadInfo.getVersion()); + } + }); } - }); - } + } + }; + this.downloader.setup(); } - @Override - public void postEnable() { - setup(); + public Downloader getDownloader() { + if (downloader == null) { + throw new IllegalStateException("The downloader is not initialized yet"); + } + return downloader; } } diff --git a/src/main/java/me/hsgamer/bettergui/menu/AddonMenu.java b/src/main/java/me/hsgamer/bettergui/menu/AddonMenu.java index 9e54ee89..fcedd9c7 100644 --- a/src/main/java/me/hsgamer/bettergui/menu/AddonMenu.java +++ b/src/main/java/me/hsgamer/bettergui/menu/AddonMenu.java @@ -70,7 +70,7 @@ protected ButtonMap createButtonMap() { @Override public @NotNull Map<@NotNull Integer, @NotNull DisplayButton> getButtons(@NotNull UUID uuid, InventorySize inventorySize) { Map buttonMap = new HashMap<>(); - Collection downloadInfos = getInstance().get(AddonDownloader.class).getLoadedDownloadInfo().values(); + Collection downloadInfos = getInstance().get(AddonDownloader.class).getDownloader().getLoadedDownloadInfo().values(); int slot = 0; for (DownloadInfo info : downloadInfos) { AddonButton button = addonButtonMap.computeIfAbsent(info, downloadInfo -> {