diff options
14 files changed, 27 insertions, 132 deletions
diff --git a/build.gradle b/build.gradle index b2bbbc5c0d..09570e9de7 100644 --- a/build.gradle +++ b/build.gradle @@ -32,13 +32,12 @@ repositories { } dependencies { - compileOnly "com.google.code.gson:gson:2.8.5" + compileOnly "com.google.code.gson:gson:2.8.7" compileOnly "cpw.mods:modlauncher:8.0.9" - compileOnly "net.minecraftforge:installer:2.1.4" + compileOnly "net.minecraftforge:installer:2.1.9" compileOnly "net.sf.jopt-simple:jopt-simple:5.0.4" provided project(":common") - provided project(":legacy") multirelase project(":jigsaw") } diff --git a/converter/build.gradle b/converter/build.gradle index d12b3e4e99..a3661b7d68 100644 --- a/converter/build.gradle +++ b/converter/build.gradle @@ -24,7 +24,7 @@ repositories { } dependencies { - compileOnly "com.google.code.gson:gson:2.8.5" + compileOnly "com.google.code.gson:gson:2.8.7" provided rootProject } diff --git a/converter/src/main/java/io/github/zekerzhayard/forgewrapper/converter/Converter.java b/converter/src/main/java/io/github/zekerzhayard/forgewrapper/converter/Converter.java index 0fdfc1382b..ade550f0eb 100644 --- a/converter/src/main/java/io/github/zekerzhayard/forgewrapper/converter/Converter.java +++ b/converter/src/main/java/io/github/zekerzhayard/forgewrapper/converter/Converter.java @@ -75,7 +75,7 @@ public class Converter { throw new RuntimeException("The zip file is invalid!"); } InputStreamReader isr = new InputStreamReader(zf.getInputStream(versionFile), StandardCharsets.UTF_8); - return new JsonParser().parse(isr).getAsJsonObject(); + return JsonParser.parseReader(isr).getAsJsonObject(); } catch (IOException e) { throw new RuntimeException(e); } @@ -84,7 +84,7 @@ public class Converter { // Convert mmc-pack.json: // - Replace Minecraft version private static JsonObject convertPackJson(String mcVersion) { - JsonObject pack = new JsonParser().parse(new InputStreamReader(Converter.class.getResourceAsStream("/mmc-pack.json"))).getAsJsonObject(); + JsonObject pack = JsonParser.parseReader(new InputStreamReader(Converter.class.getResourceAsStream("/mmc-pack.json"))).getAsJsonObject(); for (JsonElement component : getElement(pack, "components").getAsJsonArray()) { JsonObject componentObject = component.getAsJsonObject(); @@ -101,7 +101,7 @@ public class Converter { // - Add forge-launcher url // - Replace Minecraft & Forge versions private static JsonObject convertPatchesJson(JsonObject installer, JsonObject installProfile, String mcVersion, String forgeVersion, StringBuilder wrapperVersion) { - JsonObject patches = new JsonParser().parse(new InputStreamReader(Converter.class.getResourceAsStream("/patches/net.minecraftforge.json"))).getAsJsonObject(); + JsonObject patches = JsonParser.parseReader(new InputStreamReader(Converter.class.getResourceAsStream("/patches/net.minecraftforge.json"))).getAsJsonObject(); JsonArray mavenFiles = getElement(patches, "mavenFiles").getAsJsonArray(); JsonArray libraries = getElement(patches, "libraries").getAsJsonArray(); diff --git a/converter/src/main/resources/patches/net.minecraftforge.json b/converter/src/main/resources/patches/net.minecraftforge.json index 8b09773bbe..4fac6aabd0 100644 --- a/converter/src/main/resources/patches/net.minecraftforge.json +++ b/converter/src/main/resources/patches/net.minecraftforge.json @@ -15,7 +15,7 @@ "mavenFiles": [ { "name": "net.minecraftforge:forge:{VERSION}-{FORGE_VERSION}:installer", - "url": "https://files.minecraftforge.net/maven/" + "url": "https://maven.minecraftforge.net/" } ], "libraries": [ diff --git a/gradle.properties b/gradle.properties index 3e2c6a328c..5fdd7c6ccf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.daemon = false -fw_version = 1.5.2 +fw_version = 1.5.3 diff --git a/jigsaw/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java b/jigsaw/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java index 3e125331dd..9a49d7f0b8 100644 --- a/jigsaw/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java +++ b/jigsaw/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java @@ -102,6 +102,10 @@ public class ModuleUtil { TypeToAdd.OPENS.implAdd(opens); } + public static ClassLoader getPlatformClassLoader() { + return ClassLoader.getPlatformClassLoader(); + } + private enum TypeToAdd { EXPORTS("Exports"), OPENS("Opens"); diff --git a/legacy/build.gradle b/legacy/build.gradle deleted file mode 100644 index 8824390d0f..0000000000 --- a/legacy/build.gradle +++ /dev/null @@ -1,17 +0,0 @@ - -plugins { - id "java" - id "eclipse" -} - -repositories { - mavenCentral() - maven { - name = "forge" - url = "https://maven.minecraftforge.net/" - } -} - -dependencies { - compileOnly "net.minecraftforge:installer:2.0.24" -} diff --git a/legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/LegacyClientInstall4MultiMC.java b/legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/LegacyClientInstall4MultiMC.java deleted file mode 100644 index 0804602087..0000000000 --- a/legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/LegacyClientInstall4MultiMC.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.github.zekerzhayard.forgewrapper.installer; - -import java.io.File; -import java.util.function.Predicate; - -import net.minecraftforge.installer.actions.ClientInstall; -import net.minecraftforge.installer.actions.ProgressCallback; -import net.minecraftforge.installer.json.Install; - -public class LegacyClientInstall4MultiMC extends ClientInstall { - protected File libraryDir; - protected File minecraftJar; - - public LegacyClientInstall4MultiMC(Install profile, ProgressCallback monitor, File libraryDir, File minecraftJar) { - super(profile, monitor); - this.libraryDir = libraryDir; - this.minecraftJar = minecraftJar; - } - - @Override - public boolean run(File target, Predicate<String> optionals) { - return this.processors.process(this.libraryDir, this.minecraftJar); - } -} diff --git a/legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/LegacyInstallerUtil.java b/legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/LegacyInstallerUtil.java deleted file mode 100644 index 587b8c7834..0000000000 --- a/legacy/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/LegacyInstallerUtil.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.github.zekerzhayard.forgewrapper.installer.util; - -import net.minecraftforge.installer.json.Install; -import net.minecraftforge.installer.json.Util; - -// to compatible with forge [1.13.2-25.0.9,1.16.5-36.1.65] -public class LegacyInstallerUtil { - public static Install loadInstallProfile() { - return Util.loadInstallProfile(); - } -} diff --git a/settings.gradle b/settings.gradle index b15e75e4b3..d3b1da5737 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,4 +3,3 @@ rootProject.name = 'ForgeWrapper' include 'common' include 'converter' include 'jigsaw' -include 'legacy' diff --git a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Installer.java b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Installer.java index 6294c77940..1755ce11f0 100644 --- a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Installer.java +++ b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Installer.java @@ -2,14 +2,14 @@ package io.github.zekerzhayard.forgewrapper.installer; import java.io.File; -import io.github.zekerzhayard.forgewrapper.installer.util.InstallerUtil; import net.minecraftforge.installer.actions.ProgressCallback; import net.minecraftforge.installer.json.Install; +import net.minecraftforge.installer.json.Util; public class Installer { public static boolean install(File libraryDir, File minecraftJar, File installerJar, String forgeVersion) { ProgressCallback monitor = ProgressCallback.withOutputs(System.out); - Install install = InstallerUtil.loadInstallProfile(forgeVersion); + Install profile = Util.loadInstallProfile(); if (System.getProperty("java.net.preferIPv4Stack") == null) { System.setProperty("java.net.preferIPv4Stack", "true"); } @@ -18,6 +18,6 @@ public class Installer { String jvmVersion = System.getProperty("java.vm.version", "missing jvm version"); monitor.message(String.format("JVM info: %s - %s - %s", vendor, javaVersion, jvmVersion)); monitor.message("java.net.preferIPv4Stack=" + System.getProperty("java.net.preferIPv4Stack")); - return InstallerUtil.runClientInstall(forgeVersion, install, monitor, libraryDir, minecraftJar, installerJar); + return new ClientInstall4MultiMC(profile, monitor, libraryDir, minecraftJar).run(null, input -> true, installerJar); } } diff --git a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Main.java b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Main.java index 2729ef52aa..3d955372f0 100644 --- a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Main.java +++ b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/Main.java @@ -21,9 +21,13 @@ public class Main { String forgeFullVersion = mcVersion + "-" + forgeVersion; IFileDetector detector = DetectorLoader.loadDetector(); - Bootstrap.bootstrap(detector.getJvmArgs(forgeFullVersion), detector.getMinecraftJar(mcVersion).getFileName().toString(), detector.getLibraryDir().toAbsolutePath().toString()); + try { + Bootstrap.bootstrap(detector.getJvmArgs(forgeFullVersion), detector.getMinecraftJar(mcVersion).getFileName().toString(), detector.getLibraryDir().toAbsolutePath().toString()); + } catch (Throwable ignored) { + // Avoid this bunch of hacks that nuke the whole wrapper. + } if (!detector.checkExtraFiles(forgeFullVersion)) { - System.out.println("Some extra libraries are missing! Run the installer to generate them now."); + System.out.println("Some extra libraries are missing! Running the installer to generate them now."); // Check installer jar. Path installerJar = detector.getInstallerJar(forgeFullVersion); @@ -41,7 +45,7 @@ public class Main { Main.class.getProtectionDomain().getCodeSource().getLocation(), Launcher.class.getProtectionDomain().getCodeSource().getLocation(), installerJar.toUri().toURL() - }, getParentClassLoader())) { + }, ModuleUtil.getPlatformClassLoader())) { Class<?> installer = ucl.loadClass("io.github.zekerzhayard.forgewrapper.installer.Installer"); if (!(boolean) installer.getMethod("install", File.class, File.class, File.class, String.class).invoke(null, detector.getLibraryDir().toFile(), minecraftJar.toFile(), installerJar.toFile(), forgeVersion)) { return; @@ -52,16 +56,4 @@ public class Main { Class<?> mainClass = ModuleUtil.setupBootstrapLauncher(Class.forName(detector.getMainClass(forgeFullVersion))); mainClass.getMethod("main", String[].class).invoke(null, new Object[] { args }); } - - // https://github.com/MinecraftForge/Installer/blob/fe18a164b5ebb15b5f8f33f6a149cc224f446dc2/src/main/java/net/minecraftforge/installer/actions/PostProcessors.java#L287-L303 - private static ClassLoader getParentClassLoader() { - if (!System.getProperty("java.version").startsWith("1.")) { - try { - return (ClassLoader) ClassLoader.class.getDeclaredMethod("getPlatformClassLoader").invoke(null); - } catch (Exception e) { - System.out.println("No platform classloader: " + System.getProperty("java.version")); - } - } - return null; - } } diff --git a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/InstallerUtil.java b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/InstallerUtil.java deleted file mode 100644 index 26f11ce583..0000000000 --- a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/InstallerUtil.java +++ /dev/null @@ -1,52 +0,0 @@ -package io.github.zekerzhayard.forgewrapper.installer.util; - -import java.io.File; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import io.github.zekerzhayard.forgewrapper.installer.ClientInstall4MultiMC; -import io.github.zekerzhayard.forgewrapper.installer.LegacyClientInstall4MultiMC; -import net.minecraftforge.installer.actions.ProgressCallback; -import net.minecraftforge.installer.json.Install; -import net.minecraftforge.installer.json.Util; - -public class InstallerUtil { - public static Install loadInstallProfile(String forgeVersion) { - if (isLegacyForge(forgeVersion, "36.1.65")) { - return LegacyInstallerUtil.loadInstallProfile(); - } else { - // to prevent ClassNotFoundException - return new Object() { - public Install get() { - return Util.loadInstallProfile(); - } - }.get(); - } - } - - public static boolean runClientInstall(String forgeVersion, Install profile, ProgressCallback monitor, File libraryDir, File minecraftJar, File installerJar) { - if (isLegacyForge(forgeVersion, "36.1.65")) { - return new LegacyClientInstall4MultiMC(profile, monitor, libraryDir, minecraftJar).run(null, input -> true); - } else { - return new ClientInstall4MultiMC(profile, monitor, libraryDir, minecraftJar).run(null, input -> true, installerJar); - } - } - - private final static Pattern FORGE_VERSION_PATTERN = Pattern.compile("(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<build>\\d+)"); - private static boolean isLegacyForge(String forgeVersion, String legacyForgeVersion) { - Matcher m0 = FORGE_VERSION_PATTERN.matcher(forgeVersion); - Matcher m1 = FORGE_VERSION_PATTERN.matcher(legacyForgeVersion); - if (m0.find() && m1.find()) { - return compareVersion(m0, m1, 0, "major", "minor", "build"); - } - throw new RuntimeException("Missing forge version!"); - } - - private static boolean compareVersion(Matcher m0, Matcher m1, int index, String... groups) { - if (index == groups.length) return true; // the same as the legacy version - int result = Integer.compare(Integer.parseInt(m0.group(groups[index])), Integer.parseInt(m1.group(groups[index]))); - if (result < 0) return true; // less than the legacy version - if (result > 0) return false; // greater than the legacy version - return compareVersion(m0, m1, index + 1, groups); - } -} diff --git a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java index 7461b501b0..c89d714425 100644 --- a/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java +++ b/src/main/java/io/github/zekerzhayard/forgewrapper/installer/util/ModuleUtil.java @@ -19,4 +19,9 @@ public class ModuleUtil { // nothing to do with Java 8 return mainClass; } + + public static ClassLoader getPlatformClassLoader() { + // PlatformClassLoader does not exist in Java 8 + return null; + } } |
