diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java index 6580e7f4b..454fa0c74 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/ModrinthGetter.java @@ -21,6 +21,9 @@ package com.seibel.distanthorizons.core.jar.installer; import com.electronwill.nightconfig.core.Config; import com.electronwill.nightconfig.json.JsonFormat; +import com.seibel.distanthorizons.core.jar.updater.SelfUpdater; +import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import org.apache.logging.log4j.Logger; import java.net.URL; import java.util.*; @@ -32,6 +35,9 @@ import java.util.*; */ public class ModrinthGetter { + private static final Logger LOGGER = DhLoggerBuilder.getLogger(); + + public static final String ModrinthAPI = "https://api.modrinth.com/v2/project/"; public static final String projectID = "distanthorizons"; /** Functions should only be accessed once this is true */ @@ -80,7 +86,7 @@ public class ModrinthGetter } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Unable get modrinth version list, error: ["+e.getMessage()+"]", e); } // Get all the mc versions this mod is available for @@ -103,7 +109,7 @@ public class ModrinthGetter } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Unable to set up Modrinth access, error: ["+e.getMessage()+"]", e); return false; } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java index 6be2f9f25..8510912f6 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/installer/WebDownloader.java @@ -21,6 +21,8 @@ package com.seibel.distanthorizons.core.jar.installer; import com.electronwill.nightconfig.core.Config; import com.electronwill.nightconfig.json.JsonFormat; +import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; +import org.apache.logging.log4j.Logger; import javax.net.ssl.HttpsURLConnection; import java.io.*; @@ -38,6 +40,9 @@ import java.util.ArrayList; */ public class WebDownloader { + private static final Logger LOGGER = DhLoggerBuilder.getLogger(); + + public static boolean netIsAvailable() { try @@ -85,7 +90,7 @@ public class WebDownloader if (percent != newPercent) { percent = newPercent; - System.out.println(String.valueOf(percent) +"% downloaded"); + LOGGER.info(percent +"% downloaded"); } } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java b/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java index 748181e2e..03b8a09e3 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/jar/updater/SelfUpdater.java @@ -52,7 +52,7 @@ import java.util.zip.ZipInputStream; */ public class SelfUpdater { - private static final Logger LOGGER = DhLoggerBuilder.getLogger(SelfUpdater.class.getSimpleName()); + private static final Logger LOGGER = DhLoggerBuilder.getLogger(); /** As we cannot delete(or replace) the jar while the mod is running, we just have this to delete it once the game closes */ public static boolean deleteOldJarOnJvmShutdown = false; @@ -71,7 +71,7 @@ public class SelfUpdater */ public static boolean onStart() { - LOGGER.info("Checking for DH update"); + LOGGER.info("Checking for Distant Horizons update"); try { @@ -79,7 +79,7 @@ public class SelfUpdater } catch (Exception e) { - e.printStackTrace(); + LOGGER.error("Unable to get existing jar checksum, error: ["+e.getMessage()+"].", e); return false; } @@ -95,13 +95,13 @@ public class SelfUpdater } return returnValue; } - - public static boolean onStableStart() + private static boolean onStableStart() { // Some init stuff // We use sha1 to check the version as our versioning system is different to the one on modrinth if (!ModrinthGetter.init()) { + LOGGER.warn("Unable to find any nightly build pipelines, auto update will be unavailable."); return false; } if (!ModrinthGetter.mcVersions.contains(mcVersion)) @@ -110,20 +110,30 @@ public class SelfUpdater return false; } + try + { + newFileLocation = JarUtils.jarFile.getParentFile().toPath().resolve("update").resolve(ModInfo.NAME + "-" + ModrinthGetter.getLatestNameForVersion(mcVersion) + "-" + mcVersion + ".jar").toFile(); + } + catch (Exception e) + { + LOGGER.warn("Unable to get file location to download auto updated file to.", e); + return false; + } + // Check the sha's of both our stuff if (currentJarSha.equals(ModrinthGetter.getLatestShaForVersion(mcVersion))) { + LOGGER.info("Distant Horizons already up to date."); return false; } if (JarUtils.jarFile == null) { - LOGGER.warn("Unable to get the DH jar file, self updating disabled."); + LOGGER.warn("Unable to get the Distant Horizons jar file, self updating disabled."); return false; } - LOGGER.info("New version (" + ModrinthGetter.getLatestNameForVersion(mcVersion) + ") of " + ModInfo.READABLE_NAME + " is available"); - newFileLocation = JarUtils.jarFile.getParentFile().toPath().resolve("update").resolve(ModInfo.NAME + "-" + ModrinthGetter.getLatestNameForVersion(mcVersion) + "-" + mcVersion + ".jar").toFile(); + LOGGER.info("New version (" + ModrinthGetter.getLatestNameForVersion(mcVersion) + ") of Distant Horizons is available"); if (Config.Client.Advanced.AutoUpdater.enableSilentUpdates.get()) { // Auto-update mod @@ -136,18 +146,18 @@ public class SelfUpdater } return true; } - - public static boolean onNightlyStart() + private static boolean onNightlyStart() { if (GitlabGetter.INSTANCE.projectPipelines.size() == 0) { + LOGGER.info("Unable to find any nightly build pipelines, auto update will be unavailable."); return false; } com.electronwill.nightconfig.core.Config pipeline = GitlabGetter.INSTANCE.projectPipelines.get(0); if (!pipeline.get("ref").equals(ModJarInfo.Git_Branch)) { - //LOGGER.warn("Latest pipeline was found for branch ["+ pipeline.get("ref") +"], but we are on branch ["+ ModGitInfo.Git_Main_Branch +"]."); + LOGGER.warn("Latest pipeline was found for branch ["+ pipeline.get("ref") +"], but we are on branch ["+ ModJarInfo.Git_Branch +"]."); return false; } @@ -164,15 +174,25 @@ public class SelfUpdater } String latestCommit = pipeline.get("sha"); - - if (ModJarInfo.Git_Commit.equals(latestCommit)) // If we are already on the latest commit, then dont update + try { + newFileLocation = JarUtils.jarFile.getParentFile().toPath().resolve("update").resolve(ModInfo.NAME + "-" + latestCommit + ".jar").toFile(); + } + catch (Exception e) + { + LOGGER.warn("Unable to get file location to download auto updated file to.", e); return false; } - LOGGER.info("New version (" + latestCommit + ") of " + ModInfo.READABLE_NAME + " is available"); - newFileLocation = JarUtils.jarFile.getParentFile().toPath().resolve("update").resolve(ModInfo.NAME + "-" + latestCommit + ".jar").toFile(); + if (ModJarInfo.Git_Commit.equals(latestCommit)) // If we are already on the latest commit, then dont update + { + LOGGER.info("Distant Horizons already up to date."); + return false; + } + + + LOGGER.info("New version [" + latestCommit + "] of Distant Horizons is available"); if (Config.Client.Advanced.AutoUpdater.enableSilentUpdates.get()) { // Auto-update mod @@ -199,24 +219,27 @@ public class SelfUpdater } public static boolean updateMod(String minecraftVersion, File file) { - boolean returnValue = false; - switch (Config.Client.Advanced.AutoUpdater.updateBranch.get()) + EDhApiUpdateBranch updateBranch = EDhApiUpdateBranch.convertAutoToStableOrNightly(Config.Client.Advanced.AutoUpdater.updateBranch.get()); + if (updateBranch == EDhApiUpdateBranch.STABLE) { - case STABLE: - returnValue = updateStableMod(minecraftVersion, file); - break; - case NIGHTLY: - returnValue = updateNightlyMod(minecraftVersion, file); - break; - }; - return returnValue; + return updateStableMod(minecraftVersion, file); + } + else if (updateBranch == EDhApiUpdateBranch.NIGHTLY) + { + return updateNightlyMod(minecraftVersion, file); + } + else + { + LOGGER.error("Unable to update due to unimplemented update branch ["+updateBranch+"]."); + return false; + } } public static boolean updateStableMod(String minecraftVersion, File file) { try { - LOGGER.info("Attempting to auto update " + ModInfo.READABLE_NAME); + LOGGER.info("Attempting to auto update Distant Horizons"); Files.createDirectories(file.getParentFile().toPath()); WebDownloader.downloadAsFile(ModrinthGetter.getLatestDownloadForVersion(minecraftVersion), file); @@ -224,16 +247,16 @@ public class SelfUpdater // Check if the checksum of the downloaded jar is correct (not required, but good to have to prevent corruption or interception) if (!JarUtils.getFileChecksum(MessageDigest.getInstance("SHA"), file).equals(ModrinthGetter.getLatestShaForVersion(minecraftVersion))) { - LOGGER.warn("DH update checksum failed, aborting install"); + LOGGER.warn("Distant Horizons update checksum failed, aborting install"); throw new Exception("Checksum failed"); } deleteOldJarOnJvmShutdown = true; - LOGGER.info(ModInfo.READABLE_NAME + " successfully updated. It will apply on game's relaunch"); + LOGGER.info("Distant Horizons successfully updated. It will apply on game's relaunch"); new Thread(() -> { - String message = ModInfo.READABLE_NAME + " updated, this will be applied on game restart."; + String message = "Distant Horizons updated, this will be applied on game restart."; if (!GraphicsEnvironment.isHeadless()) { TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "info", false); @@ -247,7 +270,7 @@ public class SelfUpdater } catch (Exception e) { - LOGGER.warn("Failed to update " + ModInfo.READABLE_NAME + " to version " + ModrinthGetter.getLatestNameForVersion(minecraftVersion)); + LOGGER.warn("Failed to update Distant Horizons to version [" + ModrinthGetter.getLatestNameForVersion(minecraftVersion) + "]."); e.printStackTrace(); return false; } @@ -257,12 +280,14 @@ public class SelfUpdater { if (GitlabGetter.INSTANCE.projectPipelines.size() == 0) { + LOGGER.warn("Failed to find any nightly builds for the minecraft version ["+minecraftVersion+"] update canceled."); return false; } + try { - LOGGER.info("Attempting to auto update " + ModInfo.READABLE_NAME); + LOGGER.info("Attempting to auto update Distant Horizons."); Files.createDirectories(file.getParentFile().toPath()); @@ -288,10 +313,10 @@ public class SelfUpdater deleteOldJarOnJvmShutdown = true; - LOGGER.info(ModInfo.READABLE_NAME + " successfully updated. It will apply on game's relaunch"); + LOGGER.info("Distant Horizons successfully updated. It will apply on game's relaunch"); new Thread(() -> { - String message = ModInfo.READABLE_NAME + " updated, this will be applied on game restart."; + String message = "Distant Horizons updated, this will be applied on game restart."; if (!GraphicsEnvironment.isHeadless()) { TinyFileDialogs.tinyfd_messageBox(ModInfo.READABLE_NAME, message, "ok", "info", false); @@ -316,8 +341,7 @@ public class SelfUpdater } catch (Exception e) { - LOGGER.warn("Failed to update " + ModInfo.READABLE_NAME + " to version " + GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha")); - e.printStackTrace(); + LOGGER.warn("Failed to update [" + ModInfo.READABLE_NAME + "] to version [" + GitlabGetter.INSTANCE.projectPipelines.get(0).get("sha") + "].", e); return false; } } @@ -422,7 +446,7 @@ public class SelfUpdater { LOGGER.warn("Failed to delete old jar using bootstrap method, doing backup 'Files.deleteOnExit()' method", e); JarUtils.jarFile.deleteOnExit(); - LOGGER.warn("If the old DH file didnt delete, delete it manually at [" + JarUtils.jarFile + "]"); + LOGGER.warn("If the old Distant Horizons file didn't delete, delete it manually at [" + JarUtils.jarFile + "]"); } }