From 53667c2f1990b083c67e698cfee7f1da9f891ea0 Mon Sep 17 00:00:00 2001 From: EazyFTW Date: Fri, 19 Oct 2018 11:27:42 -0500 Subject: [PATCH 1/9] Updated to new API --- .../model/modpack/DownloadClient.java | 12 +++++++ .../model/modpack/DownloadServer.java | 12 +++++++ .../model/modpack/LatestVersions.java | 11 ++++++ .../launcher/model/modpack/LauncherJSON.java | 18 ++++++++++ .../launcher/model/modpack/LauncherMeta.java | 13 +++++++ .../launcher/model/modpack/ModJSON.java | 12 +++++++ .../model/modpack/ModpackVersion.java | 34 +++++++++++++++++++ 7 files changed, 112 insertions(+) create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadClient.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadServer.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/modpack/LatestVersions.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherJSON.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherMeta.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/modpack/ModJSON.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/modpack/ModpackVersion.java diff --git a/launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadClient.java b/launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadClient.java new file mode 100644 index 000000000..83c65a86c --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadClient.java @@ -0,0 +1,12 @@ +package com.skcraft.launcher.model.modpack; + +import lombok.Data; + +@Data +public class DownloadClient { + + private String sha1; + private int size; + private String url; + +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadServer.java b/launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadServer.java new file mode 100644 index 000000000..bc6f96917 --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/modpack/DownloadServer.java @@ -0,0 +1,12 @@ +package com.skcraft.launcher.model.modpack; + +import lombok.Data; + +@Data +public class DownloadServer { + + private String sha1; + private int size; + private String url; + +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/modpack/LatestVersions.java b/launcher/src/main/java/com/skcraft/launcher/model/modpack/LatestVersions.java new file mode 100644 index 000000000..fff25d8bf --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/modpack/LatestVersions.java @@ -0,0 +1,11 @@ +package com.skcraft.launcher.model.modpack; + +import lombok.Data; + +@Data +public class LatestVersions { + + private String release; + private String snapshot; + +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherJSON.java b/launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherJSON.java new file mode 100644 index 000000000..473433aa8 --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherJSON.java @@ -0,0 +1,18 @@ +package com.skcraft.launcher.model.modpack; + + +import lombok.Data; + +import java.util.List; + +@Data +public class LauncherJSON { + + private LatestVersions latest; + private List versions; + + public List getVersions() { + return versions; + } + +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherMeta.java b/launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherMeta.java new file mode 100644 index 000000000..2f11042f0 --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/modpack/LauncherMeta.java @@ -0,0 +1,13 @@ +package com.skcraft.launcher.model.modpack; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class LauncherMeta { + + private DownloadClient client; + private DownloadServer server; + +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/modpack/ModJSON.java b/launcher/src/main/java/com/skcraft/launcher/model/modpack/ModJSON.java new file mode 100644 index 000000000..d9f98ceb6 --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/modpack/ModJSON.java @@ -0,0 +1,12 @@ +package com.skcraft.launcher.model.modpack; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class ModJSON { + + private LauncherMeta downloads; + +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/modpack/ModpackVersion.java b/launcher/src/main/java/com/skcraft/launcher/model/modpack/ModpackVersion.java new file mode 100644 index 000000000..d8231e7cd --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/modpack/ModpackVersion.java @@ -0,0 +1,34 @@ +package com.skcraft.launcher.model.modpack; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class ModpackVersion { + + private String id; + private String type; + private String url; + private String time; + private String releaseTime; + + public String getURL() { + return url; + } + + public String getID() { + return id; + } + + public String getTime() { + return time; + } + + public String getType() { + return type; + } + + public String getReleaseTime() { + return releaseTime; + } + +} From e2e735f51479b077c0833e714924032262e4856e Mon Sep 17 00:00:00 2001 From: EazyFTW Date: Fri, 19 Oct 2018 11:29:33 -0500 Subject: [PATCH 2/9] Update Launcher.java --- .../java/com/skcraft/launcher/Launcher.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/launcher/src/main/java/com/skcraft/launcher/Launcher.java b/launcher/src/main/java/com/skcraft/launcher/Launcher.java index f6d5cce44..aef9af439 100644 --- a/launcher/src/main/java/com/skcraft/launcher/Launcher.java +++ b/launcher/src/main/java/com/skcraft/launcher/Launcher.java @@ -366,6 +366,36 @@ public URL propUrl(String key, String... args) { return HttpRequest.url(prop(key, args)); } + public static URL getMetaURL(String version) throws IOException, InterruptedException { + URL url = new URL("https://launchermeta.mojang.com/mc/game/version_manifest.json"); + LauncherJSON launcherJSON = HttpRequest + .get(url) + .execute() + .expectResponseCode(200) + .returnContent() + .asJson(LauncherJSON.class); + for(ModpackVersion mpVersion : launcherJSON.getVersions()) { + if(mpVersion.getID().equalsIgnoreCase(version)) { + return new URL(mpVersion.getURL()); + } + } + return null; + } + + public static String getDownloadURL(String version) throws IOException, InterruptedException { + URL url = getMetaURL(version); + if(url == null) { + return ""; + } + ModJSON modJson = HttpRequest + .get(url) + .execute() + .expectResponseCode(200) + .returnContent() + .asJson(ModJSON.class); + return modJson.getDownloads().getClient().getUrl(); + } + /** * Show the launcher. */ From fa93e3d9c2245607b561944be82ab1013b9b7859 Mon Sep 17 00:00:00 2001 From: EazyFTW Date: Fri, 19 Oct 2018 11:33:17 -0500 Subject: [PATCH 3/9] Update Updater.java --- .../src/main/java/com/skcraft/launcher/update/Updater.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/launcher/src/main/java/com/skcraft/launcher/update/Updater.java b/launcher/src/main/java/com/skcraft/launcher/update/Updater.java index 70fa583b7..5a697bcdf 100644 --- a/launcher/src/main/java/com/skcraft/launcher/update/Updater.java +++ b/launcher/src/main/java/com/skcraft/launcher/update/Updater.java @@ -152,9 +152,10 @@ protected void update(Instance instance) throws Exception { // Install the .jar File jarPath = launcher.getJarPath(version); - URL jarSource = launcher.propUrl("jarUrl", version.getId()); - log.info("JAR at " + jarPath.getAbsolutePath() + ", fetched from " + jarSource); - installJar(installer, jarPath, jarSource); + String downloadURLString = Launcher.getDownloadURL(version.getId()); + URL downloadURL = new URL(downloadURLString); + log.info("JAR at " + jarPath.getAbsolutePath() + ", fetched from " + downloadURL); + installJar(installer, jarPath, downloadURL); // Download libraries log.info("Enumerating libraries to download..."); From 8079a0deef0f49b0471f3dd806cf98a0276f81b8 Mon Sep 17 00:00:00 2001 From: barpec12 Date: Mon, 10 Dec 2018 12:06:28 +0100 Subject: [PATCH 4/9] Added 1.13+ support. (New minecraft jar locations, per-environment libraries) Signed-off-by: barpec12 --- .../launcher/builder/PackageBuilder.java | 10 ++--- .../java/com/skcraft/launcher/Launcher.java | 3 ++ .../com/skcraft/launcher/launch/Runner.java | 9 ++++- .../launcher/model/minecraft/Arguments.java | 16 ++++++++ .../launcher/model/minecraft/Artifact.java | 15 ++++++++ .../launcher/model/minecraft/Downloads.java | 17 +++++++++ .../launcher/model/minecraft/Library.java | 38 +++++++++++-------- .../model/minecraft/VersionManifest.java | 18 +++++++++ .../com/skcraft/launcher/update/Updater.java | 8 +--- 9 files changed, 106 insertions(+), 28 deletions(-) create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/minecraft/Artifact.java create mode 100644 launcher/src/main/java/com/skcraft/launcher/model/minecraft/Downloads.java diff --git a/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java b/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java index 303c63d34..12d80f317 100644 --- a/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java +++ b/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java @@ -23,7 +23,9 @@ import com.skcraft.launcher.model.loader.InstallProfile; import com.skcraft.launcher.model.minecraft.Library; import com.skcraft.launcher.model.minecraft.VersionManifest; +import com.skcraft.launcher.model.modpack.LauncherJSON; import com.skcraft.launcher.model.modpack.Manifest; +import com.skcraft.launcher.model.modpack.ModpackVersion; import com.skcraft.launcher.util.Environment; import com.skcraft.launcher.util.HttpRequest; import com.skcraft.launcher.util.SimpleLogFormatter; @@ -215,7 +217,6 @@ private void processLoader(LinkedHashSet loaderLibraries, File file, Fi public void downloadLibraries(File librariesDir) throws IOException, InterruptedException { logSection("Downloading libraries..."); - // TODO: Download libraries for different environments -- As of writing, this is not an issue Environment env = Environment.getInstance(); for (Library library : loaderLibraries) { @@ -242,7 +243,7 @@ public void downloadLibraries(File librariesDir) throws IOException, Interrupted pathname = compressor.transformPathname(pathname); } - URL url = new URL(baseUrl + pathname); + URL url = new URL(library.getDownloadUrl(env)); File tempFile = File.createTempFile("launcherlib", null); try { @@ -297,9 +298,7 @@ public void readVersionManifest(File path) throws IOException, InterruptedExcept log.info("Loaded version manifest from " + path.getAbsolutePath()); } else { - URL url = url(String.format( - properties.getProperty("versionManifestUrl"), - manifest.getGameVersion())); + URL url = Launcher.getMetaURL(manifest.getGameVersion()); log.info("Fetching version manifest from " + url + "..."); @@ -311,7 +310,6 @@ public void readVersionManifest(File path) throws IOException, InterruptedExcept .asJson(VersionManifest.class)); } } - public void writeManifest(@NonNull File path) throws IOException { logSection("Writing manifest..."); diff --git a/launcher/src/main/java/com/skcraft/launcher/Launcher.java b/launcher/src/main/java/com/skcraft/launcher/Launcher.java index aef9af439..c9320d68e 100644 --- a/launcher/src/main/java/com/skcraft/launcher/Launcher.java +++ b/launcher/src/main/java/com/skcraft/launcher/Launcher.java @@ -17,6 +17,9 @@ import com.skcraft.launcher.auth.YggdrasilLoginService; import com.skcraft.launcher.launch.LaunchSupervisor; import com.skcraft.launcher.model.minecraft.VersionManifest; +import com.skcraft.launcher.model.modpack.LauncherJSON; +import com.skcraft.launcher.model.modpack.ModJSON; +import com.skcraft.launcher.model.modpack.ModpackVersion; import com.skcraft.launcher.persistence.Persistence; import com.skcraft.launcher.swing.SwingHelper; import com.skcraft.launcher.update.UpdateManager; diff --git a/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java b/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java index 833d73316..320abf73f 100644 --- a/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java +++ b/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java @@ -180,6 +180,12 @@ private void addPlatformArgs() { if (getEnvironment().getPlatform() == Platform.WINDOWS) { builder.getFlags().add("-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump"); } + + if(getEnvironment().getArch()=="x86"){ + builder.getFlags().add("-Xss1M"); + } + builder.getFlags().add("-Dminecraft.launcher.brand="+launcher.getProperties().getProperty("agentName")); + builder.getFlags().add("-Dminecraft.launcher.version="+launcher.getVersion()); } /** @@ -271,7 +277,8 @@ private void addJvmArgs() throws IOException { private void addJarArgs() throws JsonProcessingException { List args = builder.getArgs(); - String[] rawArgs = versionManifest.getMinecraftArguments().split(" +"); +// String[] rawArgs = versionManifest.getMinecraftArguments().split(" +"); + String[] rawArgs = versionManifest.getNewMinecraftArguments().split(" +"); StrSubstitutor substitutor = new StrSubstitutor(getCommandSubstitutions()); for (String arg : rawArgs) { args.add(substitutor.replace(arg)); diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java new file mode 100644 index 000000000..eb555885b --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java @@ -0,0 +1,16 @@ +package com.skcraft.launcher.model.minecraft; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +import java.util.List; + +/** + * @author barpec12 + */ +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class Arguments { + + private List game; +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Artifact.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Artifact.java new file mode 100644 index 000000000..b5483742a --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Artifact.java @@ -0,0 +1,15 @@ +package com.skcraft.launcher.model.minecraft; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +/** + * @author barpec12 + */ +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class Artifact { + + private String path; + private String url; +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Downloads.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Downloads.java new file mode 100644 index 000000000..bec92930a --- /dev/null +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Downloads.java @@ -0,0 +1,17 @@ +package com.skcraft.launcher.model.minecraft; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +import java.util.HashMap; + +/** + * @author barpec12 + */ +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class Downloads { + + private Artifact artifact; + private HashMap classifiers; +} diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java index ccb13def7..2b86c9d70 100644 --- a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java @@ -13,6 +13,7 @@ import com.skcraft.launcher.util.Platform; import lombok.Data; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.regex.Pattern; @@ -22,12 +23,14 @@ public class Library { private String name; + private String path; private transient String group; private transient String artifact; private transient String version; @JsonProperty("url") private String baseUrl; - private Map natives; + private Downloads downloads; + private HashMap natives; private Extract extract; private List rules; @@ -111,19 +114,21 @@ public String getFilename(Environment environment) { } public String getPath(Environment environment) { - StringBuilder builder = new StringBuilder(); - builder.append(getGroup().replace('.', '/')); - builder.append("/"); - builder.append(getArtifact()); - builder.append("/"); - builder.append(getVersion()); - builder.append("/"); - builder.append(getFilename(environment)); - String path = builder.toString(); - path = path.replace("${arch}", environment.getArchBits()); - return path; + String nativeString = getNativeString(environment.getPlatform()); + if(nativeString!=null){ + return downloads.getClassifiers().get(nativeString).getPath(); + }else{ + return downloads.getArtifact().getPath(); + } + } + public String getDownloadUrl(Environment environment){ + String nativeString = getNativeString(environment.getPlatform()); + if(nativeString!=null){ + return downloads.getClassifiers().get(nativeString).getUrl(); + }else{ + return downloads.getArtifact().getUrl(); + } } - @Override public boolean equals(Object o) { if (this == o) return true; @@ -133,13 +138,16 @@ public boolean equals(Object o) { if (name != null ? !name.equals(library.name) : library.name != null) return false; - + Platform platform = Environment.getInstance().getPlatform(); + if(getNativeString(platform)==library.getNativeString(platform)) + return false; return true; } @Override public int hashCode() { - return name != null ? name.hashCode() : 0; + String nativeString = getNativeString(Environment.getInstance().getPlatform()); + return name != null ? (name+(nativeString != null ? nativeString : "")).hashCode() : 0; } @Data diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/VersionManifest.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/VersionManifest.java index 283bb8a75..a9faa32b5 100644 --- a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/VersionManifest.java +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/VersionManifest.java @@ -11,6 +11,7 @@ import lombok.Data; import java.util.Date; +import java.util.HashMap; import java.util.LinkedHashSet; @Data @@ -24,13 +25,30 @@ public class VersionManifest { private String type; private String processArguments; private String minecraftArguments; + private Arguments arguments; private String mainClass; private int minimumLauncherVersion; private LinkedHashSet libraries; + private HashMap assetIndex; @JsonIgnore public String getAssetsIndex() { return getAssets() != null ? getAssets() : "legacy"; } + @JsonIgnore + public String getNewMinecraftArguments() { + return getMinecraftArguments() != null ? getMinecraftArguments() : getNewArguments(); + } + @JsonIgnore + private String getNewArguments(){ + String result = ""; + if(getArguments()!=null) + for(Object obj:getArguments().getGame()){ + if(obj instanceof String) { + result += ((String)obj + " "); + } + } + return result; + } } diff --git a/launcher/src/main/java/com/skcraft/launcher/update/Updater.java b/launcher/src/main/java/com/skcraft/launcher/update/Updater.java index 5a697bcdf..7a53f67c7 100644 --- a/launcher/src/main/java/com/skcraft/launcher/update/Updater.java +++ b/launcher/src/main/java/com/skcraft/launcher/update/Updater.java @@ -99,7 +99,6 @@ public Instance call() throws Exception { return instance; } - private VersionManifest readVersionManifest(Manifest manifest) throws IOException, InterruptedException { // Check whether the package manifest contains an embedded version manifest, // otherwise we'll have to download the one for the given Minecraft version @@ -108,10 +107,7 @@ private VersionManifest readVersionManifest(Manifest manifest) throws IOExceptio mapper.writeValue(instance.getVersionPath(), version); return version; } else { - URL url = url(String.format( - launcher.getProperties().getProperty("versionManifestUrl"), - manifest.getGameVersion())); - + URL url = launcher.getMetaURL(manifest.getGameVersion()); return HttpRequest .get(url) .execute() @@ -172,7 +168,7 @@ protected void update(Instance instance) throws Exception { // Download assets log.info("Enumerating assets to download..."); progress = new DefaultProgress(-1, SharedLocale.tr("instanceUpdater.collectingAssets")); - installAssets(installer, version, launcher.propUrl("assetsIndexUrl", version.getAssetsIndex()), assetsSources); + installAssets(installer, version, url(version.getAssetIndex().get("url")), assetsSources); log.info("Executing download phase..."); progress = ProgressFilter.between(installer.getDownloader(), 0, 0.98); From d4825a5deff2e6f58354ee7f0d473fc141e00714 Mon Sep 17 00:00:00 2001 From: barpec12 Date: Mon, 10 Dec 2018 12:11:36 +0100 Subject: [PATCH 5/9] Added 1.13+ support. (New minecraft jar locations, per-environment libraries) --- .../main/resources/com/skcraft/launcher/launcher.properties | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/src/main/resources/com/skcraft/launcher/launcher.properties b/launcher/src/main/resources/com/skcraft/launcher/launcher.properties index f434d2c35..d61d2009b 100644 --- a/launcher/src/main/resources/com/skcraft/launcher/launcher.properties +++ b/launcher/src/main/resources/com/skcraft/launcher/launcher.properties @@ -8,14 +8,13 @@ version=${project.version} agentName=Minecraft offlinePlayerName=Player -versionManifestUrl=https://s3.amazonaws.com/Minecraft.Download/versions/%1$s/%1$s.json +versionManifestUrl=https://launchermeta.mojang.com/mc/game/version_manifest.json librariesSource=https://libraries.minecraft.net/ -jarUrl=https://s3.amazonaws.com/Minecraft.Download/versions/%1$s/%1$s.jar -assetsIndexUrl=https://s3.amazonaws.com/Minecraft.Download/indexes/%s.json assetsSource=http://resources.download.minecraft.net/ yggdrasilAuthUrl=https://authserver.mojang.com/authenticate resetPasswordUrl=https://minecraft.net/resetpassword + newsUrl=http://update.skcraft.com/template/news.html?version=%s packageListUrl=http://update.skcraft.com/template/packages.json?key=%s selfUpdateUrl=http://update.skcraft.com/template/launcher/latest.json From 03342f60b49254baf84690f8c1ada72f62d9c4d0 Mon Sep 17 00:00:00 2001 From: barpec12 Date: Mon, 10 Dec 2018 15:57:51 +0100 Subject: [PATCH 6/9] Mod fix. --- .../launcher/builder/PackageBuilder.java | 3 +- .../com/skcraft/launcher/launch/Runner.java | 4 +-- .../launcher/model/minecraft/Library.java | 36 +++++++++++-------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java b/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java index 12d80f317..69171916b 100644 --- a/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java +++ b/launcher-builder/src/main/java/com/skcraft/launcher/builder/PackageBuilder.java @@ -243,7 +243,8 @@ public void downloadLibraries(File librariesDir) throws IOException, Interrupted pathname = compressor.transformPathname(pathname); } - URL url = new URL(library.getDownloadUrl(env)); +// URL url = new URL(library.getDownloadUrl(env)); + URL url = new URL(baseUrl + pathname); File tempFile = File.createTempFile("launcherlib", null); try { diff --git a/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java b/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java index 320abf73f..43f724b86 100644 --- a/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java +++ b/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java @@ -277,8 +277,8 @@ private void addJvmArgs() throws IOException { private void addJarArgs() throws JsonProcessingException { List args = builder.getArgs(); -// String[] rawArgs = versionManifest.getMinecraftArguments().split(" +"); - String[] rawArgs = versionManifest.getNewMinecraftArguments().split(" +"); + String[] rawArgs = versionManifest.getMinecraftArguments().split(" +"); +// String[] rawArgs = versionManifest.getNewMinecraftArguments().split(" +"); StrSubstitutor substitutor = new StrSubstitutor(getCommandSubstitutions()); for (String arg : rawArgs) { args.add(substitutor.replace(arg)); diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java index 2b86c9d70..0ffcf43ea 100644 --- a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java @@ -15,7 +15,6 @@ import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.regex.Pattern; @Data @@ -114,20 +113,29 @@ public String getFilename(Environment environment) { } public String getPath(Environment environment) { - String nativeString = getNativeString(environment.getPlatform()); - if(nativeString!=null){ - return downloads.getClassifiers().get(nativeString).getPath(); - }else{ - return downloads.getArtifact().getPath(); - } - } - public String getDownloadUrl(Environment environment){ - String nativeString = getNativeString(environment.getPlatform()); - if(nativeString!=null){ - return downloads.getClassifiers().get(nativeString).getUrl(); - }else{ - return downloads.getArtifact().getUrl(); + if(path!=null) + return path; + if(downloads!=null) { + String nativeString = getNativeString(environment.getPlatform()); + if (nativeString != null) { + path = downloads.getClassifiers().get(nativeString).getPath(); + return path; + } else { + path = downloads.getArtifact().getPath(); + return path; + } } + StringBuilder builder = new StringBuilder(); + builder.append(getGroup().replace('.', '/')); + builder.append("/"); + builder.append(getArtifact()); + builder.append("/"); + builder.append(getVersion()); + builder.append("/"); + builder.append(getFilename(environment)); + String path = builder.toString(); + path = path.replace("${arch}", environment.getArchBits()); + return path; } @Override public boolean equals(Object o) { From a938d0148686c9b1043b72fbc53bf62270f175e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Otto=20Kr=C3=B6pke?= Date: Thu, 27 Dec 2018 19:15:47 +0100 Subject: [PATCH 7/9] Update launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java Co-Authored-By: barpec12 --- .../java/com/skcraft/launcher/model/minecraft/Arguments.java | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java index eb555885b..72a0d7963 100644 --- a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Arguments.java @@ -13,4 +13,5 @@ public class Arguments { private List game; + private List jvm; } From 7988a17e56601cd93c64e3504cf4dbdee94faf92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan-Otto=20Kr=C3=B6pke?= Date: Tue, 1 Jan 2019 19:57:41 +0100 Subject: [PATCH 8/9] Update launcher/src/main/java/com/skcraft/launcher/update/Updater.java Co-Authored-By: barpec12 --- .../src/main/java/com/skcraft/launcher/update/Updater.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/launcher/src/main/java/com/skcraft/launcher/update/Updater.java b/launcher/src/main/java/com/skcraft/launcher/update/Updater.java index 7a53f67c7..54749cbbf 100644 --- a/launcher/src/main/java/com/skcraft/launcher/update/Updater.java +++ b/launcher/src/main/java/com/skcraft/launcher/update/Updater.java @@ -168,7 +168,10 @@ protected void update(Instance instance) throws Exception { // Download assets log.info("Enumerating assets to download..."); progress = new DefaultProgress(-1, SharedLocale.tr("instanceUpdater.collectingAssets")); - installAssets(installer, version, url(version.getAssetIndex().get("url")), assetsSources); + URL assetUrl = version.getAssetIndex() != null + ? url(version.getAssetIndex().get("url")) + : launcher.propUrl("assetsIndexUrl", version.getAssetsIndex()); + installAssets(installer, version, assetUrl, assetsSources); log.info("Executing download phase..."); progress = ProgressFilter.between(installer.getDownloader(), 0, 0.98); From 474b78504061e4e032805d2600b163ed543ebac6 Mon Sep 17 00:00:00 2001 From: barpec12 Date: Thu, 3 Jan 2019 19:13:20 +0100 Subject: [PATCH 9/9] 1.8 fix, added version type flag support. --- .../com/skcraft/launcher/launch/Runner.java | 5 +++-- .../launcher/model/minecraft/Library.java | 20 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java b/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java index 43f724b86..b4b76c476 100644 --- a/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java +++ b/launcher/src/main/java/com/skcraft/launcher/launch/Runner.java @@ -277,8 +277,8 @@ private void addJvmArgs() throws IOException { private void addJarArgs() throws JsonProcessingException { List args = builder.getArgs(); - String[] rawArgs = versionManifest.getMinecraftArguments().split(" +"); -// String[] rawArgs = versionManifest.getNewMinecraftArguments().split(" +"); +// String[] rawArgs = versionManifest.getMinecraftArguments().split(" +"); + String[] rawArgs = versionManifest.getNewMinecraftArguments().split(" +"); StrSubstitutor substitutor = new StrSubstitutor(getCommandSubstitutions()); for (String arg : rawArgs) { args.add(substitutor.replace(arg)); @@ -365,6 +365,7 @@ private Map getCommandSubstitutions() throws JsonProcessingExcep Map map = new HashMap(); map.put("version_name", versionManifest.getId()); + map.put("version_type", versionManifest.getType()); map.put("auth_access_token", session.getAccessToken()); map.put("auth_session", session.getSessionToken()); diff --git a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java index 0ffcf43ea..de13d7ea9 100644 --- a/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java +++ b/launcher/src/main/java/com/skcraft/launcher/model/minecraft/Library.java @@ -85,15 +85,15 @@ public String getVersion() { return version; } - public String getNativeString(Platform platform) { + public String getNativeString(Environment env) { if (getNatives() != null) { - switch (platform) { + switch (env.getPlatform()) { case LINUX: - return getNatives().get("linux"); + return getNatives().get("linux") == null ? null : getNatives().get("linux").replace("${arch}", env.getArchBits()); case WINDOWS: - return getNatives().get("windows"); + return getNatives().get("windows") == null ? null : getNatives().get("windows").replace("${arch}", env.getArchBits()); case MAC_OS_X: - return getNatives().get("osx"); + return getNatives().get("osx") == null ? null : getNatives().get("osx").replace("${arch}", env.getArchBits()); default: return null; } @@ -103,7 +103,7 @@ public String getNativeString(Platform platform) { } public String getFilename(Environment environment) { - String nativeString = getNativeString(environment.getPlatform()); + String nativeString = getNativeString(environment); if (nativeString != null) { return String.format("%s-%s-%s.jar", getArtifact(), getVersion(), nativeString); @@ -116,7 +116,7 @@ public String getPath(Environment environment) { if(path!=null) return path; if(downloads!=null) { - String nativeString = getNativeString(environment.getPlatform()); + String nativeString = getNativeString(environment); if (nativeString != null) { path = downloads.getClassifiers().get(nativeString).getPath(); return path; @@ -146,15 +146,15 @@ public boolean equals(Object o) { if (name != null ? !name.equals(library.name) : library.name != null) return false; - Platform platform = Environment.getInstance().getPlatform(); - if(getNativeString(platform)==library.getNativeString(platform)) + Environment env = Environment.getInstance(); + if(getNativeString(env)==library.getNativeString(env)) return false; return true; } @Override public int hashCode() { - String nativeString = getNativeString(Environment.getInstance().getPlatform()); + String nativeString = getNativeString(Environment.getInstance()); return name != null ? (name+(nativeString != null ? nativeString : "")).hashCode() : 0; }