From bd57ea0728b10bd48e492f1ffe924c02ec3c99e4 Mon Sep 17 00:00:00 2001 From: Pim van der Loos Date: Mon, 23 Nov 2020 09:14:19 +0100 Subject: [PATCH] Remove auto updater - Removed the auto updater because Spiget is too unreliable these days. --- .../armoredElytra/ArmoredElytra.java | 2 +- .../armoredElytra/util/ConfigLoader.java | 14 +-- .../armoredElytra/util/UpdateChecker.java | 98 +------------------ .../armoredElytra/util/UpdateManager.java | 27 +---- 4 files changed, 9 insertions(+), 132 deletions(-) diff --git a/src/main/java/nl/pim16aap2/armoredElytra/ArmoredElytra.java b/src/main/java/nl/pim16aap2/armoredElytra/ArmoredElytra.java index 960f335..723f087 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/ArmoredElytra.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/ArmoredElytra.java @@ -82,7 +82,7 @@ public class ArmoredElytra extends JavaPlugin implements Listener updateManager = new UpdateManager(this, 47136); // Check if the user allows checking for updates. - updateManager.setEnabled(config.checkForUpdates(), config.autoDLUpdate()); + updateManager.setEnabled(config.checkForUpdates()); if (config.allowStats()) { diff --git a/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java b/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java index f595674..ff39737 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/util/ConfigLoader.java @@ -24,7 +24,6 @@ public class ConfigLoader private int IRON_TO_FULL; private boolean uninstallMode; private boolean checkForUpdates; - private boolean autoDLUpdate; private int LEATHER_TO_FULL; private int DIAMONDS_TO_FULL; private int NETHERITE_TO_FULL; @@ -75,12 +74,7 @@ public class ConfigLoader }; String[] updateComment = { - "Allow this plugin to check for updates on startup. It will not download new versions unless \"auto-update is enabled\'!" - }; - String[] autoDLUpdateComment = - { - "Allow this plugin to automatically download new updates. They will be applied on restart.", - "This option has no effect if \"checkForUpdates\" is disabled." + "Allow this plugin to check for updates on startup. It will not download new versions on its own!" }; String[] bStatsComment = { @@ -144,7 +138,6 @@ public class ConfigLoader allowMultipleProtectionEnchantments = addNewConfigOption(config, "allowMultipleProtectionEnchantments", false, allowMultipleProtectionEnchantmentsComment); checkForUpdates = addNewConfigOption(config, "checkForUpdates", true, updateComment); - autoDLUpdate = addNewConfigOption(config, "auto-update", true, autoDLUpdateComment); allowStats = addNewConfigOption(config, "allowStats", true, bStatsComment); enableDebug = addNewConfigOption(config, "enableDebug", false, debugComment); uninstallMode = addNewConfigOption(config, "uninstallMode", false, uninstallComment); @@ -271,11 +264,6 @@ public class ConfigLoader return checkForUpdates; } - public boolean autoDLUpdate() - { - return autoDLUpdate; - } - public boolean noFlightDurability() { return noFlightDurability; diff --git a/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateChecker.java b/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateChecker.java index cb01bd5..54ca770 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateChecker.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateChecker.java @@ -7,13 +7,8 @@ import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import nl.pim16aap2.armoredElytra.ArmoredElytra; import org.apache.commons.lang.math.NumberUtils; -import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; @@ -63,7 +58,6 @@ public final class UpdateChecker private static final String USER_AGENT = "ArmoredElytra-update-checker"; private static final String UPDATE_URL = "https://api.spiget.org/v2/resources/%d/versions?size=1&sort=-releaseDate"; private static final Pattern DECIMAL_SCHEME_PATTERN = Pattern.compile("\\d+(?:\\.\\d+)*"); - private final String downloadURL; private static UpdateChecker instance; @@ -78,7 +72,6 @@ public final class UpdateChecker this.plugin = plugin; this.pluginID = pluginID; this.versionScheme = versionScheme; - downloadURL = "https://api.spiget.org/v2/resources/" + pluginID + "/download"; } /** @@ -92,7 +85,7 @@ public final class UpdateChecker return CompletableFuture.supplyAsync( () -> { - int responseCode = -1; + int responseCode; try { URL url = new URL(String.format(UPDATE_URL, pluginID)); @@ -181,89 +174,6 @@ public final class UpdateChecker return matcher.group().split("\\."); } - /** - * Gets the url to download the latest version from. - * - * @return The url to download the latest version from. - */ - public String getDownloadUrl() - { - return downloadURL; - } - - /** - * Downloads the latest update. - * - * @return True if the download was successful. - */ - public boolean downloadUpdate() - { - boolean downloadSuccessfull = false; - try - { - File updateFolder = Bukkit.getUpdateFolderFile(); - if (!updateFolder.exists()) - if (!updateFolder.mkdirs()) - throw new RuntimeException("Failed to create update folder!"); - - String fileName = plugin.getName() + ".jar"; - File updateFile = new File(updateFolder + "/" + fileName); - - // Follow any and all redirects until we've finally found the actual file. - String location = downloadURL; - HttpURLConnection httpConnection = null; - for (; ; ) - { - URL url = new URL(location); - httpConnection = (HttpURLConnection) url.openConnection(); - httpConnection.setInstanceFollowRedirects(false); - httpConnection.setRequestProperty("User-Agent", "ArmoredElytraUpdater"); - String redirectLocation = httpConnection.getHeaderField("Location"); - if (redirectLocation == null) - break; - location = redirectLocation; - httpConnection.disconnect(); - } - - if (httpConnection == null) - { - plugin.myLogger(Level.WARNING, "Failed to construct connection: " + location); - return false; - } - - if (httpConnection.getResponseCode() != 200) - { - plugin.myLogger(Level.WARNING, - Util.exceptionToString(new RuntimeException("Download returned status #" - + httpConnection - .getResponseCode() + "\n for URL: " + downloadURL))); - return false; - } - - int grabSize = 4096; - BufferedInputStream in = new BufferedInputStream(httpConnection.getInputStream()); - FileOutputStream fos = new FileOutputStream(updateFile); - BufferedOutputStream bout = new BufferedOutputStream(fos, grabSize); - - byte[] data = new byte[grabSize]; - int grab; - while ((grab = in.read(data, 0, grabSize)) >= 0) - bout.write(data, 0, grab); - - bout.flush(); - bout.close(); - in.close(); - fos.flush(); - fos.close(); - downloadSuccessfull = true; - } - catch (Exception e) - { - e.printStackTrace(); - } - return downloadSuccessfull; - } - /** * Initializes this update checker with the specified values and return its instance. If an instance of * UpdateChecker has already been initialized, this method will act similarly to {@link #get()} (which is @@ -327,7 +237,7 @@ public final class UpdateChecker * A functional interface to compare two version Strings with similar version schemes. */ @FunctionalInterface - public static interface VersionScheme + public interface VersionScheme { /** @@ -338,14 +248,14 @@ public final class UpdateChecker * @param second the second version to check * @return the greater of the two versions. null if unsupported version schemes */ - public String compareVersions(String first, String second); + String compareVersions(String first, String second); } /** * A constant reason for the result of {@link UpdateResult}. */ - public static enum UpdateReason + public enum UpdateReason { /** diff --git a/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateManager.java b/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateManager.java index 9124eb1..bfefcd7 100644 --- a/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateManager.java +++ b/src/main/java/nl/pim16aap2/armoredElytra/util/UpdateManager.java @@ -13,10 +13,8 @@ public final class UpdateManager { private final ArmoredElytra plugin; private boolean checkForUpdates = false; - private boolean downloadUpdates = false; - private boolean updateDownloaded = false; - private UpdateChecker updater; + private final UpdateChecker updater; private BukkitTask updateRunner = null; public UpdateManager(final ArmoredElytra plugin, final int pluginID) @@ -25,18 +23,12 @@ public final class UpdateManager updater = UpdateChecker.init(plugin, pluginID); } - public void setEnabled(final boolean newCheckForUpdates, final boolean newDownloadUpdates) + public void setEnabled(final boolean newCheckForUpdates) { checkForUpdates = newCheckForUpdates; - downloadUpdates = newDownloadUpdates; initUpdater(); } - public boolean hasUpdateBeenDownloaded() - { - return updateDownloaded; - } - public String getNewestVersion() { if (!checkForUpdates || updater.getLastResult() == null) @@ -62,19 +54,6 @@ public final class UpdateManager if (updateAvailable) plugin.myLogger(Level.INFO, "A new update is available: " + plugin.getUpdateManager().getNewestVersion()); - - if (downloadUpdates && updateAvailable) - { - updateDownloaded = updater.downloadUpdate(); - if (updateDownloaded) - plugin.myLogger(Level.INFO, "Update downloaded! Restart to apply it! " + - "New version is " + updater.getLastResult().getNewestVersion() + - ", Currently running " + plugin.getDescription().getVersion()); - else - plugin.myLogger(Level.INFO, - "Failed to download latest version! You can download it manually at: " + - updater.getDownloadUrl()); - } }); } @@ -91,7 +70,7 @@ public final class UpdateManager { checkForUpdates(); } - }.runTaskTimer(plugin, 0L, 288000L); // Run immediately, then every 4 hours. + }.runTaskTimer(plugin, 0L, 864000L); // Run immediately, then every 12 hours. } else {