From 5c15aa3322db8a3f95e97390638f80eb6d4e5d15 Mon Sep 17 00:00:00 2001 From: LexManos Date: Mon, 11 Dec 2023 11:46:28 -0800 Subject: [PATCH] Get rid of LibraryFinder --- .../forge/tasks/BundleList.groovy | 7 +++++ .../forge/tasks/InstallerJar.groovy | 4 +-- .../forge/tasks/LauncherJson.groovy | 20 +++++++++++++ .../minecraftforge/forge/tasks/Util.groovy | 9 ++++++ .../fml/loading/LibraryFinder.java | 28 ------------------- .../loading/targets/CommonLaunchHandler.java | 18 ++++++++++++ .../targets/ForgeDevLaunchHandler.java | 19 ------------- .../targets/ForgeProdLaunchHandler.java | 20 ++++++------- 8 files changed, 66 insertions(+), 59 deletions(-) delete mode 100644 fmlloader/src/main/java/net/minecraftforge/fml/loading/LibraryFinder.java diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/BundleList.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/BundleList.groovy index 9e24a9ff21..0b575eecd5 100644 --- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/BundleList.groovy +++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/BundleList.groovy @@ -36,6 +36,13 @@ abstract class BundleList extends DefaultTask { def file = packed.archiveFile.get().asFile entries.put("$info.art.group:$info.art.name:$info.art.classifier", "$file.sha256\t$info.name\t$info.path") } + [ + 'client': project.tasks.applyClientBinPatches + ].forEach { classifier, genned -> + def info = Util.getMavenInfoFromTask(genned, classifier) + def file = genned.output.get().asFile + entries.put("$info.art.group:$info.art.name:$info.art.classifier", "$file.sha256\t$info.name\t$info.path") + } try (def zip = new java.util.zip.ZipFile(serverBundle.get().asFile)) { def entry = zip.getEntry('META-INF/libraries.list') diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy index 4f25eea1c4..4a9eadfcb4 100644 --- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy +++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/InstallerJar.groovy @@ -67,8 +67,8 @@ abstract class InstallerJar extends Zip { ].each { task -> def json = task.output.get().asFile.json json.libraries.each { lib -> - deps.put(lib.name, lib.downloads.artifact) - //println(lib.name) + if (lib.downloads?.artifact?.url != null && !lib.downloads.artifact.url.isEmpty()) + deps.put(lib.name, lib.downloads.artifact) } } diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy index 38a1c20669..ae618eca40 100644 --- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy +++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/LauncherJson.groovy @@ -49,6 +49,10 @@ abstract class LauncherJson extends DefaultTask { dependsOn(packed) input.from packed.archiveFile } + + def patched = project.tasks.applyClientBinPatches + dependsOn(patched) + input.from patched.output } } @@ -70,6 +74,22 @@ abstract class LauncherJson extends DefaultTask { ] ]) } + [ + 'client': project.tasks.applyClientBinPatches + ].forEach { classifier, genned -> + def info = Util.getMavenInfoFromTask(genned, classifier) + json.libraries.add([ + name: info.name, + downloads: [ + artifact: [ + path: info.path, + url: "", + sha1: genned.output.get().asFile.sha1(), + size: genned.output.get().asFile.length() + ] + ] + ]) + } getArtifacts(project, project.configurations.installer).each { key, lib -> json.libraries.add(lib) } diff --git a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy index 37bf48ffca..a71cc4b352 100644 --- a/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy +++ b/buildSrc/src/main/groovy/net/minecraftforge/forge/tasks/Util.groovy @@ -108,6 +108,15 @@ public class Util { extension: task.archiveExtension.get() ]) } + public static Map getMavenInfoFromTask(task,classifier) { + return getMavenInfoFromMap([ + group: task.project.group, + name: task.project.name, + version: task.project.version, + classifier: classifier, + extension: 'jar' + ]) + } private static Map getMavenInfoFromMap(art) { def key = "$art.group:$art.name" diff --git a/fmlloader/src/main/java/net/minecraftforge/fml/loading/LibraryFinder.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/LibraryFinder.java deleted file mode 100644 index e17082b206..0000000000 --- a/fmlloader/src/main/java/net/minecraftforge/fml/loading/LibraryFinder.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (c) Forge Development LLC and contributors - * SPDX-License-Identifier: LGPL-2.1-only - */ - -package net.minecraftforge.fml.loading; - -import java.nio.file.Files; -import java.nio.file.Path; - -public class LibraryFinder { - private static Path libsPath; - static Path findLibsPath() { - if (libsPath == null) { - libsPath = Path.of(System.getProperty("libraryDirectory", "libraries")); - if (!Files.isDirectory(libsPath)) - throw new IllegalStateException("Library directory: `" + libsPath + "` does not exist. Set it via the `libraryDirectory` system property."); - } - return libsPath; - } - - public static Path findPathForMaven(final String group, final String artifact, final String extension, final String classifier, final String version) { - return findLibsPath().resolve(MavenCoordinateResolver.get(group, artifact, extension, classifier, version)); - } - public static Path findPathForMaven(final String maven) { - return findLibsPath().resolve(MavenCoordinateResolver.get(maven)); - } -} diff --git a/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonLaunchHandler.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonLaunchHandler.java index 7a5ac2d2dd..981362349a 100644 --- a/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonLaunchHandler.java +++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/CommonLaunchHandler.java @@ -19,6 +19,7 @@ import org.slf4j.Logger; import java.io.IOException; import java.net.URI; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; /** @@ -89,4 +90,21 @@ public abstract class CommonLaunchHandler implements ILaunchHandlerService { if (mtd == null) throw new IllegalStateException("Class " + target + " in module " + module + " does not have a main(String[]) method"); mtd.invoke(null, (Object)arguments); } + + protected static Path getPathFromResource(String resource) { + var cl = ForgeDevLaunchHandler.class.getClassLoader(); + var url = cl.getResource(resource); + if (url == null) + throw new IllegalStateException("Could not find " + resource + " in classloader " + cl); + + var str = url.toString(); + int len = resource.length(); + if ("jar".equalsIgnoreCase(url.getProtocol())) { + str = url.getFile(); + len += 2; + } + str = str.substring(0, str.length() - len); + var path = Paths.get(URI.create(str)); + return path; + } } diff --git a/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeDevLaunchHandler.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeDevLaunchHandler.java index 39230940a6..00a1e90e7c 100644 --- a/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeDevLaunchHandler.java +++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeDevLaunchHandler.java @@ -4,9 +4,7 @@ */ package net.minecraftforge.fml.loading.targets; -import java.net.URI; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.List; import org.jetbrains.annotations.ApiStatus; @@ -35,23 +33,6 @@ abstract class ForgeDevLaunchHandler extends CommonDevLaunchHandler { return List.of(filtered); } - static Path getPathFromResource(String resource) { - var cl = ForgeDevLaunchHandler.class.getClassLoader(); - var url = cl.getResource(resource); - if (url == null) - throw new IllegalStateException("Could not find " + resource + " in classloader " + cl); - - var str = url.toString(); - int len = resource.length(); - if ("jar".equalsIgnoreCase(url.getProtocol())) { - str = url.getFile(); - len += 2; - } - str = str.substring(0, str.length() - len); - var path = Paths.get(URI.create(str)); - return path; - } - public static class Client extends ForgeDevLaunchHandler { public Client() { super(CLIENT); diff --git a/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeProdLaunchHandler.java b/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeProdLaunchHandler.java index e6596cc225..7698c8aebb 100644 --- a/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeProdLaunchHandler.java +++ b/fmlloader/src/main/java/net/minecraftforge/fml/loading/targets/ForgeProdLaunchHandler.java @@ -9,9 +9,6 @@ import java.nio.file.Path; import java.util.List; import org.jetbrains.annotations.ApiStatus; -import net.minecraftforge.fml.loading.FMLLoader; -import net.minecraftforge.fml.loading.LibraryFinder; - @ApiStatus.Internal abstract class ForgeProdLaunchHandler extends CommonLaunchHandler { protected ForgeProdLaunchHandler(LaunchType type) { @@ -21,22 +18,25 @@ abstract class ForgeProdLaunchHandler extends CommonLaunchHandler { @Override public String getNaming() { return "srg"; } @Override public boolean isProduction() { return true; } - @Override - public List getMinecraftPaths() { - var vers = FMLLoader.versionInfo(); - var mc = LibraryFinder.findPathForMaven(vers.forgeGroup(), "forge", "", this.type.name(), vers.mcAndForgeVersion()); - return List.of(mc); - } - public static class Client extends ForgeProdLaunchHandler { public Client() { super(CLIENT); } + + @Override + public List getMinecraftPaths() { + return List.of(getPathFromResource("net/minecraft/client/Minecraft.class")); + } } public static class Server extends ForgeProdLaunchHandler { public Server() { super(SERVER); } + + @Override + public List getMinecraftPaths() { + return List.of(getPathFromResource("net/minecraft/server/MinecraftServer.class")); + } } }