diff --git a/src/main/java/com/skcraft/launcher/InstanceList.java b/src/main/java/com/skcraft/launcher/InstanceList.java index 2214e87..cc1ad27 100644 --- a/src/main/java/com/skcraft/launcher/InstanceList.java +++ b/src/main/java/com/skcraft/launcher/InstanceList.java @@ -32,7 +32,6 @@ @Log public class InstanceList { - private static int PARSER_VERSION = 1; private final Launcher launcher; @Getter private final List instances = new ArrayList(); @@ -108,7 +107,7 @@ .returnContent() .asJson(PackageList.class); - if (packages.getMinimumVersion() > PARSER_VERSION) { + if (packages.getMinimumVersion() > Launcher.PROTOCOL_VERSION) { throw new LauncherException("Update required", _("errors.updateRequiredError")); } diff --git a/src/main/java/com/skcraft/launcher/Launcher.java b/src/main/java/com/skcraft/launcher/Launcher.java index 9883555..3a3750e 100644 --- a/src/main/java/com/skcraft/launcher/Launcher.java +++ b/src/main/java/com/skcraft/launcher/Launcher.java @@ -44,6 +44,8 @@ @Log public final class Launcher { + public static final int PROTOCOL_VERSION = 2; + @Getter private final ListeningExecutorService executor = MoreExecutors.listeningDecorator(Executors.newCachedThreadPool()); @Getter private final File baseDir; diff --git a/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java b/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java index f9f9c7f..ac97176 100644 --- a/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java +++ b/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java @@ -133,6 +133,7 @@ mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT); Manifest manifest = new Manifest(); + manifest.setMinimumVersion(Manifest.MIN_PROTOCOL_VERSION); PackageBuilder builder = new PackageBuilder(mapper, manifest); builder.setPrettyPrint(options.isPrettyPrinting()); diff --git a/src/main/java/com/skcraft/launcher/model/modpack/Manifest.java b/src/main/java/com/skcraft/launcher/model/modpack/Manifest.java index ec42a7b..cac0f7f 100644 --- a/src/main/java/com/skcraft/launcher/model/modpack/Manifest.java +++ b/src/main/java/com/skcraft/launcher/model/modpack/Manifest.java @@ -28,6 +28,9 @@ @EqualsAndHashCode(callSuper = true) public class Manifest extends BaseManifest { + public static final int MIN_PROTOCOL_VERSION = 2; + + private int minimumVersion; private URL baseUrl; private String librariesLocation; private String objectsLocation; diff --git a/src/main/java/com/skcraft/launcher/update/BaseUpdater.java b/src/main/java/com/skcraft/launcher/update/BaseUpdater.java index fc6f874..f189932 100644 --- a/src/main/java/com/skcraft/launcher/update/BaseUpdater.java +++ b/src/main/java/com/skcraft/launcher/update/BaseUpdater.java @@ -10,6 +10,7 @@ import com.skcraft.launcher.AssetsRoot; import com.skcraft.launcher.Instance; import com.skcraft.launcher.Launcher; +import com.skcraft.launcher.LauncherException; import com.skcraft.launcher.dialog.FeatureSelectionDialog; import com.skcraft.launcher.dialog.ProgressDialog; import com.skcraft.launcher.install.*; @@ -36,6 +37,7 @@ import static com.skcraft.launcher.LauncherUtils.checkInterrupted; import static com.skcraft.launcher.LauncherUtils.concat; +import static com.skcraft.launcher.util.SharedLocale._; @Log public abstract class BaseUpdater { @@ -77,6 +79,10 @@ .saveContent(instance.getManifestPath()) .asJson(Manifest.class); + if (manifest.getMinimumVersion() > Launcher.PROTOCOL_VERSION) { + throw new LauncherException("Update required", _("errors.updateRequiredError")); + } + if (manifest.getBaseUrl() == null) { manifest.setBaseUrl(instance.getManifestURL()); } diff --git a/src/main/resources/com/skcraft/launcher/lang/Launcher.properties b/src/main/resources/com/skcraft/launcher/lang/Launcher.properties index 8ee0559..5e0d5fe 100644 --- a/src/main/resources/com/skcraft/launcher/lang/Launcher.properties +++ b/src/main/resources/com/skcraft/launcher/lang/Launcher.properties @@ -17,7 +17,7 @@ errors.openDirError=Unable to open ''{0}''. Maybe it doesn''t exist? errors.reportErrorPreface=To report this error, please provide\:\n\n errors.genericError=An error has occurred. -errors.updateRequiredError=Please download a new version of the launcher to continue checking for updates. See skcraft.com for more information. +errors.updateRequiredError=Please download a new version of the launcher to continue updating. See skcraft.com for more information. errors.selfUpdateCheckError=Checking for an update to the launcher has failed. button.cancel=Cancel