diff options
Diffstat (limited to 'src/main/java/net/fabricmc/loom/configuration')
19 files changed, 109 insertions, 342 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index bfb8e5f2..2b6ee858 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -102,7 +102,7 @@ public final class CompileConfiguration { data.createLazyConfiguration(Constants.Configurations.UNPICK_CLASSPATH); for (RemappedConfigurationEntry entry : Constants.MOD_COMPILE_ENTRIES) { - data.createLazyConfiguration(entry.getSourceConfiguration()) + data.createLazyConfiguration(entry.sourceConfiguration()) .configure(configuration -> configuration.setTransitive(true)); // Don't get transitive deps of already remapped mods @@ -112,7 +112,7 @@ public final class CompileConfiguration { extendsFrom(entry.getTargetConfiguration(configurations), entry.getRemappedConfiguration(), project); if (entry.isOnModCompileClasspath()) { - extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH, entry.getSourceConfiguration(), project); + extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH, entry.sourceConfiguration(), project); extendsFrom(Constants.Configurations.MOD_COMPILE_CLASSPATH_MAPPED, entry.getRemappedConfiguration(), project); } } diff --git a/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java b/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java index 2b971427..38b9b30d 100644 --- a/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/DependencyProvider.java @@ -100,8 +100,8 @@ public abstract class DependencyProvider { private String resolvedVersion = null; public static DependencyInfo create(Project project, Dependency dependency, Configuration sourceConfiguration) { - if (dependency instanceof SelfResolvingDependency) { - return new FileDependencyInfo(project, (SelfResolvingDependency) dependency, sourceConfiguration); + if (dependency instanceof SelfResolvingDependency selfResolvingDependency) { + return new FileDependencyInfo(project, selfResolvingDependency, sourceConfiguration); } else { return new DependencyInfo(project, dependency, sourceConfiguration); } @@ -138,8 +138,8 @@ public abstract class DependencyProvider { } public Set<File> resolve() { - if (dependency instanceof SelfResolvingDependency) { - return ((SelfResolvingDependency) dependency).resolve(); + if (dependency instanceof SelfResolvingDependency selfResolvingDependency) { + return selfResolvingDependency.resolve(); } return sourceConfiguration.files(dependency); @@ -189,14 +189,11 @@ public abstract class DependencyProvider { Set<File> files = dependency.resolve(); this.resolvedFiles = files; switch (files.size()) { - case 0: //Don't think Gradle would ever let you do this - throw new IllegalStateException("Empty dependency for " + configuration.getName()); - - case 1: //Single file dependency - classifierToFile.put("", Iterables.getOnlyElement(files)); - break; - - default: //File collection, try work out the classifiers + case 0 -> //Don't think Gradle would ever let you do this + throw new IllegalStateException("Empty dependency for " + configuration.getName()); + case 1 -> //Single file dependency + classifierToFile.put("", Iterables.getOnlyElement(files)); + default -> { //File collection, try work out the classifiers List<File> sortedFiles = files.stream().sorted(Comparator.comparing(File::getName, Comparator.comparingInt(String::length))).collect(Collectors.toList()); //First element in sortedFiles is the one with the shortest name, we presume all the others are different classifier types of this File shortest = sortedFiles.remove(0); @@ -223,6 +220,7 @@ public abstract class DependencyProvider { } } } + } if (dependency.getGroup() != null && dependency.getVersion() != null) { group = dependency.getGroup(); diff --git a/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java b/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java index 16cc4560..8a69feab 100644 --- a/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java +++ b/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java @@ -60,7 +60,7 @@ public final class MavenPublication { continue; } - Configuration compileModsConfig = p.getConfigurations().getByName(entry.getSourceConfiguration()); + Configuration compileModsConfig = p.getConfigurations().getByName(entry.sourceConfiguration()); p.getLogger().info("Processing maven publication for project [" + p.getName() + "] of " + entry.getSourceConfiguration()); processEntry(p.getLogger(), entry, compileModsConfig, mavenPublish); @@ -101,7 +101,7 @@ public final class MavenPublication { depNode.appendNode("groupId", dependency.getGroup()); depNode.appendNode("artifactId", dependency.getName()); depNode.appendNode("version", dependency.getVersion()); - depNode.appendNode("scope", entry.getMavenScope()); + depNode.appendNode("scope", entry.mavenScope()); if (!(dependency instanceof ModuleDependency)) { continue; diff --git a/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java index 01b0d94c..ca2fd995 100644 --- a/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java +++ b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java @@ -27,35 +27,11 @@ package net.fabricmc.loom.configuration; import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.plugins.JavaPlugin; -public class RemappedConfigurationEntry { - private final String sourceConfiguration; - private final String targetConfiguration; - private final String mavenScope; - private final boolean isOnModCompileClasspath; - - public RemappedConfigurationEntry(String sourceConfiguration, String targetConfiguration, boolean isOnModCompileClasspath, String mavenScope) { - this.sourceConfiguration = sourceConfiguration; - this.targetConfiguration = targetConfiguration; - this.isOnModCompileClasspath = isOnModCompileClasspath; - this.mavenScope = mavenScope; - } - - public String getMavenScope() { - return mavenScope; - } - +public record RemappedConfigurationEntry(String sourceConfiguration, String targetConfiguration, boolean isOnModCompileClasspath, String mavenScope) { public boolean hasMavenScope() { return mavenScope != null && !mavenScope.isEmpty(); } - public boolean isOnModCompileClasspath() { - return isOnModCompileClasspath; - } - - public String getSourceConfiguration() { - return sourceConfiguration; - } - public String getRemappedConfiguration() { return sourceConfiguration + "Mapped"; } diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java index 04277025..16b134d0 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java @@ -45,7 +45,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import org.apache.commons.io.IOUtils; import org.gradle.api.Project; import org.gradle.api.tasks.SourceSet; import org.gradle.plugins.ide.eclipse.model.EclipseModel; @@ -264,7 +263,7 @@ public class RunConfig { String dummyConfig; try (InputStream input = SetupIntelijRunConfigs.class.getClassLoader().getResourceAsStream(dummy)) { - dummyConfig = IOUtils.toString(input, StandardCharsets.UTF_8); + dummyConfig = new String(input.readAllBytes(), StandardCharsets.UTF_8); } dummyConfig = dummyConfig.replace("%NAME%", configName); diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java index 90c71683..533b16bb 100644 --- a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java @@ -170,7 +170,7 @@ public class ModProcessor { final Map<ModDependencyInfo, byte[]> accessWidenerMap = new HashMap<>(); for (RemappedConfigurationEntry entry : Constants.MOD_COMPILE_ENTRIES) { - for (File inputFile : project.getConfigurations().getByName(entry.getSourceConfiguration()).getFiles()) { + for (File inputFile : project.getConfigurations().getByName(entry.sourceConfiguration()).getFiles()) { if (remapList.stream().noneMatch(info -> info.getInputFile().equals(inputFile))) { project.getLogger().debug("Adding " + inputFile + " onto the remap classpath"); @@ -290,7 +290,7 @@ public class ModProcessor { } try (InputStream inputstream = jarFile.getInputStream(entry)) { - jsonStr = IOUtils.toString(inputstream, StandardCharsets.UTF_8); + jsonStr = new String(inputstream.readAllBytes(), StandardCharsets.UTF_8); } } diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java index 34720051..e7437621 100644 --- a/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java @@ -34,7 +34,6 @@ import java.util.jar.JarFile; import com.google.gson.JsonObject; import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; import org.gradle.api.artifacts.Configuration; import org.jetbrains.annotations.Nullable; @@ -80,7 +79,7 @@ public class ModDependencyInfo { } public File getRemappedDir() { - return new File(remapData.modStore, String.format("%s/%s/%s", getGroup().replace(".", "/"), name, version)); + return new File(remapData.modStore(), String.format("%s/%s/%s", getGroup().replace(".", "/"), name, version)); } public File getRemappedOutput() { @@ -96,7 +95,7 @@ public class ModDependencyInfo { } private String getGroup() { - return getMappingsPrefix(remapData.mappingsSuffix) + "." + group; + return getMappingsPrefix(remapData.mappingsSuffix()) + "." + group; } public static String getMappingsPrefix(String mappings) { @@ -121,7 +120,7 @@ public class ModDependencyInfo { String pomTemplate; try (InputStream input = ModDependencyInfo.class.getClassLoader().getResourceAsStream("mod_compile_template.pom")) { - pomTemplate = IOUtils.toString(input, StandardCharsets.UTF_8); + pomTemplate = new String(input.readAllBytes(), StandardCharsets.UTF_8); } pomTemplate = pomTemplate diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/dependency/RemapData.java b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/RemapData.java index 08ce7cff..cbb92cb2 100644 --- a/src/main/java/net/fabricmc/loom/configuration/processors/dependency/RemapData.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/RemapData.java @@ -26,12 +26,5 @@ package net.fabricmc.loom.configuration.processors.dependency; import java.io.File; -public class RemapData { - public final String mappingsSuffix; - public final File modStore; - - public RemapData(String mappingsSuffix, File modStore) { - this.mappingsSuffix = mappingsSuffix; - this.modStore = modStore; - } +public record RemapData(String mappingsSuffix, File modStore) { } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java index a602612e..44180be5 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java @@ -66,7 +66,7 @@ public class LaunchProvider extends DependencyProvider { .property("client", "org.lwjgl.librarypath", getExtension().getNativesDirectory().getAbsolutePath()) .argument("client", "--assetIndex") - .argument("client", getExtension().getMinecraftProvider().getVersionInfo().getAssetIndex().getFabricId(getExtension().getMinecraftProvider().getMinecraftVersion())) + .argument("client", getExtension().getMinecraftProvider().getVersionInfo().assetIndex().fabricId(getExtension().getMinecraftProvider().getMinecraftVersion())) .argument("client", "--assetsDir") .argument("client", new File(getExtension().getUserCache(), "assets").getAbsolutePath()); @@ -168,7 +168,7 @@ public class LaunchProvider extends DependencyProvider { private void writeRemapClassPath() { List<String> inputConfigurations = new ArrayList<>(); inputConfigurations.add(Constants.Configurations.LOADER_DEPENDENCIES); - inputConfigurations.addAll(Constants.MOD_COMPILE_ENTRIES.stream().map(RemappedConfigurationEntry::getSourceConfiguration).collect(Collectors.toList())); + inputConfigurations.addAll(Constants.MOD_COMPILE_ENTRIES.stream().map(RemappedConfigurationEntry::sourceConfiguration).collect(Collectors.toList())); List<File> remapClasspath = new ArrayList<>(); @@ -183,7 +183,7 @@ public class LaunchProvider extends DependencyProvider { .collect(Collectors.joining(File.pathSeparator)); try { - Files.write(getRemapClasspathFile().toPath(), str.getBytes(StandardCharsets.UTF_8)); + Files.writeString(getRemapClasspathFile().toPath(), str); } catch (IOException e) { throw new RuntimeException("Failed to generate remap classpath", e); } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java index 67fa250b..f4c8a117 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java @@ -31,12 +31,9 @@ import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Optional; import java.util.function.Consumer; -import java.util.zip.ZipError; import com.google.common.base.Stopwatch; import com.google.common.io.Files; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.logging.Logger; @@ -85,7 +82,7 @@ public class MinecraftProvider extends DependencyProvider { downloadMcJson(offline); try (FileReader reader = new FileReader(minecraftJson)) { - versionInfo = LoomGradlePlugin.GSON.fromJson(reader, MinecraftVersionMeta.class); + versionInfo = LoomGradlePlugin.OBJECT_MAPPER.readValue(reader, MinecraftVersionMeta.class); } // Add Loom as an annotation processor @@ -110,13 +107,13 @@ public class MinecraftProvider extends DependencyProvider { if (!minecraftMergedJar.exists() || isRefreshDeps()) { try { mergeJars(getProject().getLogger()); - } catch (ZipError e) { + } catch (Throwable e) { HashedDownloadUtil.delete(minecraftClientJar); HashedDownloadUtil.delete(minecraftServerJar); - HashedDownloadUtil.delete(minecraftMergedJar); + minecraftMergedJar.delete(); getProject().getLogger().error("Could not merge JARs! Deleting source JARs - please re-run the command and move on.", e); - throw new RuntimeException(); + throw e; } } } @@ -156,7 +153,7 @@ public class MinecraftProvider extends DependencyProvider { } String versionManifest = Files.asCharSource(versionManifestJson, StandardCharsets.UTF_8).read(); - ManifestVersion mcManifest = new GsonBuilder().create().fromJson(versionManifest, ManifestVersion.class); + ManifestVersion mcManifest = LoomGradlePlugin.OBJECT_MAPPER.readValue(versionManifest, ManifestVersion.class); Optional<ManifestVersion.Versions> optionalVersion = Optional.empty(); @@ -169,7 +166,7 @@ public class MinecraftProvider extends DependencyProvider { } if (!optionalVersion.isPresent()) { - optionalVersion = mcManifest.versions.stream().filter(versions -> versions.id.equalsIgnoreCase(minecraftVersion)).findFirst(); + optionalVersion = mcManifest.versions().stream().filter(versions -> versions.id.equalsIgnoreCase(minecraftVersion)).findFirst(); } if (optionalVersion.isPresent()) { @@ -213,8 +210,8 @@ public class MinecraftProvider extends DependencyProvider { return false; } - ManifestVersion manifest = new GsonBuilder().create().fromJson(Files.asCharSource(versionManifestJson, StandardCharsets.UTF_8).read(), ManifestVersion.class); - Optional<ManifestVersion.Versions> version = manifest.versions.stream().filter(versions -> versions.id.equalsIgnoreCase(minecraftVersion)).findFirst(); + ManifestVersion manifest = LoomGradlePlugin.OBJECT_MAPPER.readValue(Files.asCharSource(versionManifestJson, StandardCharsets.UTF_8).read(), ManifestVersion.class); + Optional<ManifestVersion.Versions> version = manifest.versions().stream().filter(versions -> versions.id.equalsIgnoreCase(minecraftVersion)).findFirst(); // fail if the expected mc version was not found, will download the file again. return version.isPresent(); @@ -225,11 +222,11 @@ public class MinecraftProvider extends DependencyProvider { return; } - MinecraftVersionMeta.Download client = versionInfo.getDownload("client"); - MinecraftVersionMeta.Download server = versionInfo.getDownload("server"); + MinecraftVersionMeta.Download client = versionInfo.download("client"); + MinecraftVersionMeta.Download server = versionInfo.download("server"); - HashedDownloadUtil.downloadIfInvalid(new URL(client.getUrl()), minecraftClientJar, client.getSha1(), logger, false); - HashedDownloadUtil.downloadIfInvalid(new URL(server.getUrl()), minecraftServerJar, server.getSha1(), logger, false); + HashedDownloadUtil.downloadIfInvalid(new URL(client.url()), minecraftClientJar, client.sha1(), logger, false); + HashedDownloadUtil.downloadIfInvalid(new URL(server.url()), minecraftServerJar, server.sha1(), logger, false); } private void mergeJars(Logger logger) throws IOException { diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProvider.java index c1fd5f83..dfd59411 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProvider.java @@ -28,7 +28,6 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.net.URL; -import java.nio.charset.StandardCharsets; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; @@ -385,7 +384,7 @@ public class MappingsProvider extends DependencyProvider { } private UnpickMetadata parseUnpickMetadata(Path input) throws IOException { - JsonObject jsonObject = LoomGradlePlugin.GSON.fromJson(new String(Files.readAllBytes(input), StandardCharsets.UTF_8), JsonObject.class); + JsonObject jsonObject = LoomGradlePlugin.GSON.fromJson(Files.readString(input), JsonObject.class); if (!jsonObject.has("version") || jsonObject.get("version").getAsInt() != 1) { throw new UnsupportedOperationException("Unsupported unpick version"); @@ -535,13 +534,6 @@ public class MappingsProvider extends DependencyProvider { return hasUnpickDefinitions; } - public static class UnpickMetadata { - public final String unpickGroup; - public final String unpickVersion; - - public UnpickMetadata(String unpickGroup, String unpickVersion) { - this.unpickGroup = unpickGroup; - this.unpickVersion = unpickVersion; - } + public record UnpickMetadata(String unpickGroup, String unpickVersion) { } } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MojangMappingsDependency.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MojangMappingsDependency.java index 09010c87..6e45d2b9 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MojangMappingsDependency.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MojangMappingsDependency.java @@ -174,15 +174,15 @@ public class MojangMappingsDependency extends AbstractModuleDependency implement private MappingSet getMappingsSet(Path clientMappings, Path serverMappings) throws IOException { MinecraftVersionMeta versionInfo = extension.getMinecraftProvider().getVersionInfo(); - if (versionInfo.getDownload(MANIFEST_CLIENT_MAPPINGS) == null) { + if (versionInfo.download(MANIFEST_CLIENT_MAPPINGS) == null) { throw new RuntimeException("Failed to find official mojang mappings for " + getVersion()); } - MinecraftVersionMeta.Download clientMappingsDownload = versionInfo.getDownload(MANIFEST_CLIENT_MAPPINGS); - MinecraftVersionMeta.Download serverMappingsDownload = versionInfo.getDownload(MANIFEST_CLIENT_MAPPINGS); + MinecraftVersionMeta.Download clientMappingsDownload = versionInfo.download(MANIFEST_CLIENT_MAPPINGS); + MinecraftVersionMeta.Download serverMappingsDownload = versionInfo.download(MANIFEST_CLIENT_MAPPINGS); - HashedDownloadUtil.downloadIfInvalid(new URL(clientMappingsDownload.getUrl()), clientMappings.toFile(), clientMappingsDownload.getSha1(), project.getLogger(), false); - HashedDownloadUtil.downloadIfInvalid(new URL(serverMappingsDownload.getUrl()), serverMappings.toFile(), clientMappingsDownload.getSha1(), project.getLogger(), false); + HashedDownloadUtil.downloadIfInvalid(new URL(clientMappingsDownload.url()), clientMappings.toFile(), clientMappingsDownload.sha1(), project.getLogger(), false); + HashedDownloadUtil.downloadIfInvalid(new URL(serverMappingsDownload.url()), serverMappings.toFile(), clientMappingsDownload.sha1(), project.getLogger(), false); MappingSet mappings = MappingSet.create(); @@ -275,8 +275,8 @@ public class MojangMappingsDependency extends AbstractModuleDependency implement @Override public boolean contentEquals(Dependency dependency) { - if (dependency instanceof MojangMappingsDependency) { - return ((MojangMappingsDependency) dependency).extension.getMinecraftProvider().getMinecraftVersion().equals(getVersion()); + if (dependency instanceof MojangMappingsDependency mojangMappingsDependency) { + return mojangMappingsDependency.extension.getMinecraftProvider().getMinecraftVersion().equals(getVersion()); } return false; diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestVersion.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestVersion.java index 8ab01007..d4108b14 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestVersion.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestVersion.java @@ -24,12 +24,10 @@ package net.fabricmc.loom.configuration.providers.minecraft; -import java.util.ArrayList; import java.util.List; +import java.util.Map; -public class ManifestVersion { - public List<Versions> versions = new ArrayList<>(); - +public record ManifestVersion(List<Versions> versions, Map<String, String> latest) { public static class Versions { public String id, url, sha1; } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftLibraryProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftLibraryProvider.java index dcf846e8..130df4d8 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftLibraryProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftLibraryProvider.java @@ -40,9 +40,9 @@ public class MinecraftLibraryProvider { initFiles(project, minecraftProvider); - for (MinecraftVersionMeta.Library library : versionInfo.getLibraries()) { - if (library.isValidForOS() && !library.hasNatives() && library.getArtifact() != null) { - project.getDependencies().add(Constants.Configurations.MINECRAFT_DEPENDENCIES, project.getDependencies().module(library.getName())); + for (MinecraftVersionMeta.Library library : versionInfo.libraries()) { + if (library.isValidForOS() && !library.hasNatives() && library.artifact() != null) { + project.getDependencies().add(Constants.Configurations.MINECRAFT_DEPENDENCIES, project.getDependencies().module(library.name())); } } } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftNativesProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftNativesProvider.java index 08c4c6d4..f57db002 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftNativesProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftNativesProvider.java @@ -89,11 +89,11 @@ public class MinecraftNativesProvider { nativesDir.mkdirs(); - for (MinecraftVersionMeta.Classifier library : getNatives()) { - File libJarFile = library.getRelativeFile(jarStore); + for (MinecraftVersionMeta.Download library : getNatives()) { + File libJarFile = library.relativeFile(jarStore); if (!offline) { - HashedDownloadUtil.downloadIfInvalid(new URL(library.getUrl()), libJarFile, library.getSha1(), project.getLogger(), false); + HashedDownloadUtil.downloadIfInvalid(new URL(library.url()), libJarFile, library.sha1(), project.getLogger(), false); } if (!libJarFile.exists()) { @@ -104,19 +104,19 @@ public class MinecraftNativesProvider { // Store a file containing the hash of the extracted natives, used on subsequent runs to skip extracting all the natives if they haven't changed File libSha1File = new File(nativesDir, libJarFile.getName() + ".sha1"); - FileUtils.writeStringToFile(libSha1File, library.getSha1(), StandardCharsets.UTF_8); + FileUtils.writeStringToFile(libSha1File, library.sha1(), StandardCharsets.UTF_8); } } private boolean requiresExtract() { - List<MinecraftVersionMeta.Classifier> natives = getNatives(); + List<MinecraftVersionMeta.Download> natives = getNatives(); if (natives.isEmpty()) { throw new IllegalStateException("No natives found for the current system"); } - for (MinecraftVersionMeta.Classifier library : natives) { - File libJarFile = library.getRelativeFile(jarStore); + for (MinecraftVersionMeta.Download library : natives) { + File libJarFile = library.relativeFile(jarStore); File libSha1File = new File(nativesDir, libJarFile.getName() + ".sha1"); if (!libSha1File.exists()) { @@ -126,7 +126,7 @@ public class MinecraftNativesProvider { try { String sha1 = FileUtils.readFileToString(libSha1File, StandardCharsets.UTF_8); - if (!sha1.equalsIgnoreCase(library.getSha1())) { + if (!sha1.equalsIgnoreCase(library.sha1())) { return true; } } catch (IOException e) { @@ -139,10 +139,10 @@ public class MinecraftNativesProvider { return false; } - private List<MinecraftVersionMeta.Classifier> getNatives() { - return extension.getMinecraftProvider().getVersionInfo().getLibraries().stream() + private List<MinecraftVersionMeta.Download> getNatives() { + return extension.getMinecraftProvider().getVersionInfo().libraries().stream() .filter((MinecraftVersionMeta.Library::hasNativesForOS)) - .map(MinecraftVersionMeta.Library::getClassifierForOS) + .map(MinecraftVersionMeta.Library::classifierForOS) .filter(Objects::nonNull) .collect(Collectors.toList()); } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java index f6676283..7f0539e9 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java @@ -29,108 +29,35 @@ import java.util.List; import java.util.Map; import java.util.Objects; -import com.google.gson.JsonObject; - import net.fabricmc.loom.util.OperatingSystem; @SuppressWarnings("unused") -public final class MinecraftVersionMeta { - private JsonObject arguments; - private AssetIndex assetIndex; - private String assets; - private int complianceLevel; - private Map<String, Download> downloads; - private String id; - private List<Library> libraries; - private JsonObject logging; - private String mainClass; - private int minimumLauncherVersion; - private String releaseTime; - private String time; - private String type; - - public Download getDownload(String key) { - return getDownloads().get(key); - } - - public JsonObject getArguments() { - return arguments; - } - - public AssetIndex getAssetIndex() { - return assetIndex; - } - - public String getAssets() { - return assets; - } - - public int getComplianceLevel() { - return complianceLevel; - } - - public Map<String, Download> getDownloads() { - return downloads; - } - - public String getId() { - return id; - } - - public List<Library> getLibraries() { - return libraries; - } - - public JsonObject getLogging() { - return logging; - } - - public String getMainClass() { - return mainClass; - } - - public int getMinimumLauncherVersion() { - return minimumLauncherVersion; - } - - public String getReleaseTime() { - return releaseTime; - } - - public String getTime() { - return time; - } - - public String getType() { - return type; - } - - public final class AssetIndex extends Downloadable { - private String id; - private long totalSize; - - public String getFabricId(String version) { +public record MinecraftVersionMeta( + Object arguments, + AssetIndex assetIndex, + String assets, + int complianceLevel, + Map<String, Download> downloads, + String id, + List<Library> libraries, + Object logging, + String mainClass, + int minimumLauncherVersion, + String releaseTime, + String time, + String type +) { + public Download download(String key) { + return downloads().get(key); + } + + public record AssetIndex(String id, long totalSize, String path, String sha1, long size, String url) { + public String fabricId(String version) { return id.equals(version) ? version : version + "-" + id; } - - public String getId() { - return id; - } - - public long getTotalSize() { - return totalSize; - } - } - - public final class Download extends Downloadable { } - public final class Library { - private Downloads downloads; - private String name; - private Map<String, String> natives; - private List<Rule> rules; - + public record Library(Downloads downloads, String name, Map<String, String> natives, List<Rule> rules, Object extract) { public boolean isValidForOS() { if (rules == null || rules.isEmpty()) { return true; @@ -161,117 +88,45 @@ public final class MinecraftVersionMeta { return isValidForOS(); } - public Classifier getClassifierForOS() { - return getDownloads().getClassifier(natives.get(OperatingSystem.getOS())); + public Download classifierForOS() { + return downloads().classifier(natives.get(OperatingSystem.getOS())); } - public Downloads getDownloads() { - return downloads; - } - - public Artifact getArtifact() { - if (getDownloads() == null) { + public Download artifact() { + if (downloads() == null) { return null; } - return getDownloads().getArtifact(); - } - - public String getName() { - return name; - } - - public Map<String, String> getNatives() { - return natives; - } - - public List<Rule> getRules() { - return rules; + return downloads().artifact(); } } - public final class Downloads { - private Artifact artifact; - private Map<String, Classifier> classifiers; - - public Classifier getClassifier(String os) { + public record Downloads(Download artifact, Map<String, Download> classifiers) { + public Download classifier(String os) { return classifiers.get(os); } - - public Artifact getArtifact() { - return artifact; - } - - public Map<String, Classifier> getClassifiers() { - return classifiers; - } - } - - public final class Artifact extends Downloadable { - } - - public final class Classifier extends Downloadable { } - public final class Rule { - private String action; - private OS os; - + public record Rule(String action, OS os) { public boolean appliesToOS() { - return getOS() == null || getOS().isValidForOS(); + return os() == null || os().isValidForOS(); } public boolean isAllowed() { - return getAction().equals("allow"); - } - - public String getAction() { - return action; - } - - public OS getOS() { - return os; + return action().equals("allow"); } } - public final class OS { - private String name; - + public record OS(String name) { public boolean isValidForOS() { - return getName() == null || getName().equalsIgnoreCase(OperatingSystem.getOS()); - } - - public String getName() { - return name; + return name() == null || name().equalsIgnoreCase(OperatingSystem.getOS()); } } - // A base class for everything that can be downloaded - public abstract class Downloadable { - private String path; - private String sha1; - private long size; - private String url; - - public File getRelativeFile(File baseDirectory) { - Objects.requireNonNull(getPath(), "Cannot get relative file from a null path"); - return new File(baseDirectory, getPath()); - } - - public String getPath() { - return path; - } - - public String getSha1() { - return sha1; - } - - public long getSize() { - return size; - } - - public String getUrl() { - return url; + public record Download(String path, String sha1, long size, String url) { + public File relativeFile(File baseDirectory) { + Objects.requireNonNull(path(), "Cannot get relative file from a null path"); + return new File(baseDirectory, path()); } } } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetIndex.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetIndex.java index bbe96f97..6c1b8ead 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetIndex.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetIndex.java @@ -30,23 +30,12 @@ import java.util.Map; import java.util.Set; @SuppressWarnings("unused") -public class AssetIndex { - private final Map<String, AssetObject> objects; - private boolean virtual; - +public record AssetIndex(Map<String, AssetObject> objects, boolean virtual) { public AssetIndex() { - this.objects = new LinkedHashMap<>(); - } - - public Map<String, AssetObject> getFileMap() { - return this.objects; + this(new LinkedHashMap<>(), false); } public Set<AssetObject> getUniqueObjects() { return new HashSet<>(this.objects.values()); } - - public boolean isVirtual() { - return this.virtual; - } } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetObject.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetObject.java index 32d16d6e..0380d9ba 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetObject.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/AssetObject.java @@ -25,34 +25,5 @@ package net.fabricmc.loom.configuration.providers.minecraft.assets; @SuppressWarnings("unused") -public class AssetObject { - private String hash; - private long size; - - public String getHash() { - return this.hash; - } - - public long getSize() { - return this.size; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } else if ((o == null) || (getClass() != o.getClass())) { - return false; - } else { - AssetObject that = (AssetObject) o; - return this.size == that.size && this.hash.equals(that.hash); - } - } - - @Override - public int hashCode() { - int result = this.hash.hashCode(); - result = 31 * result + (int) (this.size ^ this.size >>> 32); - return result; - } +public record AssetObject(String hash, long size) { } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/MinecraftAssetsProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/MinecraftAssetsProvider.java index 44a9a3e8..b0198424 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/MinecraftAssetsProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/assets/MinecraftAssetsProvider.java @@ -54,7 +54,7 @@ public class MinecraftAssetsProvider { boolean offline = project.getGradle().getStartParameter().isOffline(); MinecraftVersionMeta versionInfo = minecraftProvider.getVersionInfo(); - MinecraftVersionMeta.AssetIndex assetIndex = versionInfo.getAssetIndex(); + MinecraftVersionMeta.AssetIndex assetIndex = versionInfo.assetIndex(); // get existing cache files File assets = new File(extension.getUserCache(), "assets"); @@ -63,7 +63,7 @@ public class MinecraftAssetsProvider { assets.mkdirs(); } - File assetsInfo = new File(assets, "indexes" + File.separator + assetIndex.getFabricId(minecraftProvider.getMinecraftVersion()) + ".json"); + File assetsInfo = new File(assets, "indexes" + File.separator + assetIndex.fabricId(minecraftProvider.getMinecraftVersion()) + ".json"); project.getLogger().info(":downloading asset index"); @@ -76,7 +76,7 @@ public class MinecraftAssetsProvider { throw new GradleException("Asset index not found at " + assetsInfo.getAbsolutePath()); } } else { - HashedDownloadUtil.downloadIfInvalid(new URL(assetIndex.getUrl()), assetsInfo, assetIndex.getSha1(), project.getLogger(), false); + HashedDownloadUtil.downloadIfInvalid(new URL(assetIndex.url()), assetsInfo, assetIndex.sha1(), project.getLogger(), false); } ExecutorService executor = Executors.newFixedThreadPool(Math.min(16, Math.max(Runtime.getRuntime().availableProcessors() * 2, 1))); @@ -85,19 +85,19 @@ public class MinecraftAssetsProvider { AssetIndex index; try (FileReader fileReader = new FileReader(assetsInfo)) { - index = LoomGradlePlugin.GSON.fromJson(fileReader, AssetIndex.class); + index = LoomGradlePlugin.OBJECT_MAPPER.readValue(fileReader, AssetIndex.class); } Stopwatch stopwatch = Stopwatch.createStarted(); - Map<String, AssetObject> parent = index.getFileMap(); + Map<String, AssetObject> parent = index.objects(); ProgressBar[] progressBar = {null}; try { for (Map.Entry<String, AssetObject> entry : parent.entrySet()) { AssetObject object = entry.getValue(); - String sha1 = object.getHash(); + String sha1 = object.hash(); String filename = "objects" + File.separator + sha1.substring(0, 2) + File.separator + sha1; File file = new File(assets, filename); |