diff options
Diffstat (limited to 'src/main')
33 files changed, 156 insertions, 424 deletions
diff --git a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java index cac0b324..0a84bdfd 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java +++ b/src/main/java/net/fabricmc/loom/LoomGradlePlugin.java @@ -24,6 +24,8 @@ package net.fabricmc.loom; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableMap; import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -41,6 +43,7 @@ import net.fabricmc.loom.task.LoomTasks; public class LoomGradlePlugin implements Plugin<Project> { public static boolean refreshDeps; public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); @Override public void apply(Project project) { diff --git a/src/main/java/net/fabricmc/loom/api/decompilers/DecompilationMetadata.java b/src/main/java/net/fabricmc/loom/api/decompilers/DecompilationMetadata.java index 35dcbfa6..c15f5a32 100644 --- a/src/main/java/net/fabricmc/loom/api/decompilers/DecompilationMetadata.java +++ b/src/main/java/net/fabricmc/loom/api/decompilers/DecompilationMetadata.java @@ -27,14 +27,5 @@ package net.fabricmc.loom.api.decompilers; import java.nio.file.Path; import java.util.Collection; -public class DecompilationMetadata { - public final int numberOfThreads; - public final Path javaDocs; - public final Collection<Path> libraries; - - public DecompilationMetadata(int numberOfThreads, Path javaDocs, Collection<Path> libraries) { - this.numberOfThreads = numberOfThreads; - this.javaDocs = javaDocs; - this.libraries = libraries; - } +public record DecompilationMetadata(int numberOfThreads, Path javaDocs, Collection<Path> libraries) { } diff --git a/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java b/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java index 9314873b..fbb0cf93 100644 --- a/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java +++ b/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java @@ -69,7 +69,7 @@ public class ModCompileRemapper { for (RemappedConfigurationEntry entry : Constants.MOD_COMPILE_ENTRIES) { data.getLazyConfigurationProvider(entry.getRemappedConfiguration()).configure(remappedConfig -> { - Configuration sourceConfig = project.getConfigurations().getByName(entry.getSourceConfiguration()); + Configuration sourceConfig = project.getConfigurations().getByName(entry.sourceConfiguration()); Configuration regularConfig = project.getConfigurations().getByName(entry.getTargetConfiguration(project.getConfigurations())); List<ModDependencyInfo> modDependencies = new ArrayList<>(); @@ -149,8 +149,8 @@ public class ModCompileRemapper { Dependency dep = dependencies.module(artifact.getModuleVersion().toString() + (artifact.getClassifier() == null ? "" : ':' + artifact.getClassifier())); // the owning module of the artifact - if (dep instanceof ModuleDependency) { - ((ModuleDependency) dep).setTransitive(false); + if (dep instanceof ModuleDependency moduleDependency) { + moduleDependency.setTransitive(false); } dependencies.add(regularCompile.getName(), dep); diff --git a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java index ecdaf152..a0c3987b 100644 --- a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java @@ -71,7 +71,7 @@ public abstract class AnnotationProcessorInvoker<T extends Task> { private void passMixinArguments(T task) { try { LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); - Map<String, String> args = new HashMap<String, String>() {{ + Map<String, String> args = new HashMap<>() {{ put(Constants.MixinArguments.IN_MAP_FILE_NAMED_INTERMEDIARY, extension.getMappingsProvider().tinyMappings.getCanonicalPath()); put(Constants.MixinArguments.OUT_MAP_FILE_NAMED_INTERMEDIARY, extension.getNextMixinMappings().getCanonicalPath()); put(Constants.MixinArguments.OUT_REFMAP_FILE, getRefmapDestination(task, extension)); diff --git a/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java b/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java index 566002d4..1b93b44f 100644 --- a/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java +++ b/src/main/java/net/fabricmc/loom/build/nesting/MergedNestedJarProvider.java @@ -29,13 +29,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.stream.Collectors; -public class MergedNestedJarProvider implements NestedJarProvider { - private final NestedJarProvider[] parents; - - public MergedNestedJarProvider(NestedJarProvider... parents) { - this.parents = parents; - } - +public record MergedNestedJarProvider(NestedJarProvider... parents) implements NestedJarProvider { @Override public Collection<File> provide() { return Arrays.stream(parents) diff --git a/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java b/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java index dbca51ed..8de3103e 100644 --- a/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java +++ b/src/main/java/net/fabricmc/loom/build/nesting/NestedDependencyProvider.java @@ -80,13 +80,12 @@ public final class NestedDependencyProvider implements NestedJarProvider { DependencySet dependencies = configuration.getDependencies(); for (Dependency dependency : dependencies) { - if (dependency instanceof ProjectDependency) { - ProjectDependency projectDependency = (ProjectDependency) dependency; + if (dependency instanceof ProjectDependency projectDependency) { Project dependencyProject = projectDependency.getDependencyProject(); for (Task task : dependencyProject.getTasksByName("remapJar", false)) { - if (task instanceof RemapJarTask) { - remapTasks.add((RemapJarTask) task); + if (task instanceof RemapJarTask remapJarTask) { + remapTasks.add(remapJarTask); } } } @@ -99,8 +98,7 @@ public final class NestedDependencyProvider implements NestedJarProvider { List<DependencyInfo<ProjectDependency>> fileList = new ArrayList<>(); for (Dependency dependency : configuration.getDependencies()) { - if (dependency instanceof ProjectDependency) { - ProjectDependency projectDependency = (ProjectDependency) dependency; + if (dependency instanceof ProjectDependency projectDependency) { Project dependencyProject = projectDependency.getDependencyProject(); visited.add(dependency.getGroup() + ":" + dependency.getName() + ":" + dependency.getVersion()); @@ -110,11 +108,11 @@ public final class NestedDependencyProvider implements NestedJarProvider { Collection<Task> jarTasks = dependencyProject.getTasksByName("jar", false); for (Task task : remapJarTasks.isEmpty() ? jarTasks : remapJarTasks) { - if (task instanceof RemapJarTask) { - File file = ((RemapJarTask) task).getArchivePath(); + if (task instanceof RemapJarTask remapJarTask) { + File file = remapJarTask.getArchiveFile().get().getAsFile(); fileList.add(new DependencyInfo<>(projectDependency, new ProjectDependencyMetaExtractor(), file)); - } else if (task instanceof AbstractArchiveTask) { - File file = ((AbstractArchiveTask) task).getArchivePath(); + } else if (task instanceof AbstractArchiveTask abstractArchiveTask) { + File file = abstractArchiveTask.getArchiveFile().get().getAsFile(); fileList.add(new DependencyInfo<>(projectDependency, new ProjectDependencyMetaExtractor(), file)); } } @@ -208,17 +206,7 @@ public final class NestedDependencyProvider implements NestedJarProvider { return LoomGradlePlugin.GSON.toJson(jsonObject); } - private static class DependencyInfo<D> { - final D dependency; - final DependencyMetaExtractor<D> metaExtractor; - final File file; - - DependencyInfo(D dependency, DependencyMetaExtractor<D> metaExtractor, File file) { - this.dependency = dependency; - this.metaExtractor = metaExtractor; - this.file = file; - } - + private record DependencyInfo<D>(D dependency, DependencyMetaExtractor<D> metaExtractor, File file) { public void validateInputs() { if (!file.exists()) { throw new RuntimeException("Failed to include nested jars, as it could not be found @ " + file.getAbsolutePath()); diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index ce6dea44..343353a1 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -67,7 +67,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 @@ -77,7 +77,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 63ef8354..0d1d2d3b 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?"); - - 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?"); + 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 92acad95..afdc2400 100644 --- a/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java +++ b/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java @@ -51,7 +51,7 @@ public final class MavenPublication { continue; } - Configuration compileModsConfig = p.getConfigurations().getByName(entry.getSourceConfiguration()); + Configuration compileModsConfig = p.getConfigurations().getByName(entry.sourceConfiguration()); // add modsCompile to maven-publish PublishingExtension mavenPublish = p.getExtensions().findByType(PublishingExtension.class); @@ -92,7 +92,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 0557b9a8..c7fca513 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java @@ -36,7 +36,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; @@ -222,7 +221,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 367a49a6..6eaa1133 100644 --- a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java @@ -42,7 +42,6 @@ import java.util.stream.Collectors; import java.util.zip.ZipEntry; import com.google.gson.JsonObject; -import org.apache.commons.io.IOUtils; import org.gradle.api.Project; import org.objectweb.asm.commons.Remapper; import org.zeroturnaround.zip.ZipUtil; @@ -156,7 +155,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"); @@ -229,7 +228,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 f4511160..e7f961df 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/LaunchProvider.java @@ -65,7 +65,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()); @@ -112,7 +112,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<>(); @@ -127,7 +127,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 8ea88b7c..aed9c725 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProvider.java @@ -33,7 +33,6 @@ import java.util.Optional; import java.util.function.Consumer; import com.google.common.io.Files; -import com.google.gson.GsonBuilder; import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.logging.Logger; @@ -75,7 +74,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 @@ -140,7 +139,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(); @@ -153,7 +152,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()) { @@ -197,8 +196,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(); @@ -209,11 +208,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 448082b9..c19b3796 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; @@ -259,7 +258,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"); @@ -409,13 +408,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 62879458..1cd80a45 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 @@ -123,15 +123,15 @@ public class MojangMappingsDependency implements SelfResolvingDependency { 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(); @@ -208,8 +208,8 @@ public class MojangMappingsDependency implements SelfResolvingDependency { @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 931e8672..fd1ad733 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 @@ -53,7 +53,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"); @@ -62,7 +62,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"); @@ -75,7 +75,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); } Deque<ProgressLogger> loggers = new ConcurrentLinkedDeque<>(); @@ -84,16 +84,16 @@ 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(); 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); diff --git a/src/main/java/net/fabricmc/loom/decompilers/LineNumberRemapper.java b/src/main/java/net/fabricmc/loom/decompilers/LineNumberRemapper.java index 3b899c8c..4bec4e71 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/LineNumberRemapper.java +++ b/src/main/java/net/fabricmc/loom/decompilers/LineNumberRemapper.java @@ -89,7 +89,7 @@ public class LineNumberRemapper { } public void process(ProgressLogger logger, Path input, Path output) throws IOException { - Files.walkFileTree(input, new SimpleFileVisitor<Path>() { + Files.walkFileTree(input, new SimpleFileVisitor<>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { String rel = input.relativize(file).toString(); diff --git a/src/main/java/net/fabricmc/loom/decompilers/cfr/FabricCFRDecompiler.java b/src/main/java/net/fabricmc/loom/decompilers/cfr/FabricCFRDecompiler.java index ee2801ab..d0ffa406 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/cfr/FabricCFRDecompiler.java +++ b/src/main/java/net/fabricmc/loom/decompilers/cfr/FabricCFRDecompiler.java @@ -54,7 +54,6 @@ import java.util.zip.ZipFile; import com.google.common.base.Charsets; import com.google.common.collect.ImmutableMap; -import com.google.common.io.ByteStreams; import org.benf.cfr.reader.api.CfrDriver; import org.benf.cfr.reader.api.ClassFileSource; import org.benf.cfr.reader.api.OutputSinkFactory; @@ -134,36 +133,29 @@ public class FabricCFRDecompiler implements LoomDecompiler { } try (InputStream inputStream = inputZip.getInputStream(zipEntry)) { - return Pair.make(ByteStreams.toByteArray(inputStream), path); + return Pair.make(inputStream.readAllBytes(), path); } } }) .withOutputSink(new OutputSinkFactory() { @Override public List<SinkClass> getSupportedSinks(SinkType sinkType, Collection<SinkClass> available) { - switch (sinkType) { - case PROGRESS: - return Collections.singletonList(SinkClass.STRING); - case JAVA: - return Collections.singletonList(SinkClass.DECOMPILED); - default: - return Collections.emptyList(); - } + return switch (sinkType) { + case PROGRESS -> Collections.singletonList(SinkClass.STRING); + case JAVA -> Collections.singletonList(SinkClass.DECOMPILED); + default -> Collections.emptyList(); + }; } @SuppressWarnings("unchecked") @Override public <T> Sink<T> getSink(SinkType sinkType, SinkClass sinkClass) { - switch (sinkType) { - case PROGRESS: - return (p) -> project.getLogger().debug((String) p); - case JAVA: - return (Sink<T>) decompiledSink(jos, addedDirectories); - case EXCEPTION: - return (e) -> project.getLogger().error((String) e); - } - - return null; + return switch (sinkType) { + case PROGRESS -> (p) -> project.getLogger().debug((String) p); + case JAVA -> (Sink<T>) decompiledSink(jos, addedDirectories); + case EXCEPTION -> (e) -> project.getLogger().error((String) e); + default -> null; + }; } }) .build(); @@ -173,7 +165,7 @@ public class FabricCFRDecompiler implements LoomDecompiler { .filter(input -> input.endsWith(".class")) .collect(Collectors.toList()); - ExecutorService executorService = Executors.newFixedThreadPool(metaData.numberOfThreads); + ExecutorService executorService = Executors.newFixedThreadPool(metaData.numberOfThreads()); List<Future<?>> futures = new LinkedList<>(); for (String clazz : classes) { diff --git a/src/main/java/net/fabricmc/loom/decompilers/fernflower/AbstractFernFlowerDecompiler.java b/src/main/java/net/fabricmc/loom/decompilers/fernflower/AbstractFernFlowerDecompiler.java index fdaa90d0..43e9c9d7 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/fernflower/AbstractFernFlowerDecompiler.java +++ b/src/main/java/net/fabricmc/loom/decompilers/fernflower/AbstractFernFlowerDecompiler.java @@ -65,12 +65,12 @@ public abstract class AbstractFernFlowerDecompiler implements LoomDecompiler { project.getLogging().captureStandardOutput(LogLevel.LIFECYCLE); - Map<String, Object> options = new HashMap<String, Object>() {{ + Map<String, Object> options = new HashMap<>() {{ put(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "1"); put(IFernflowerPreferences.BYTECODE_SOURCE_MAPPING, "1"); put(IFernflowerPreferences.REMOVE_SYNTHETIC, "1"); put(IFernflowerPreferences.LOG_LEVEL, "trace"); - put(IFernflowerPreferences.THREADS, metaData.numberOfThreads); + put(IFernflowerPreferences.THREADS, metaData.numberOfThreads()); }}; List<String> args = new ArrayList<>(); @@ -79,10 +79,10 @@ public abstract class AbstractFernFlowerDecompiler implements LoomDecompiler { args.add(absolutePathOf(compiledJar)); args.add("-o=" + absolutePathOf(sourcesDestination)); args.add("-l=" + absolutePathOf(linemapDestination)); - args.add("-m=" + absolutePathOf(metaData.javaDocs)); + args.add("-m=" + absolutePathOf(metaData.javaDocs())); // TODO, Decompiler breaks on jemalloc, J9 module-info.class? - for (Path library : metaData.libraries) { + for (Path library : metaData.libraries()) { args.add("-e=" + absolutePathOf(library)); } diff --git a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java index 2b7e4139..357b15ed 100644 --- a/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenVsCodeProjectTask.java @@ -30,13 +30,11 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import org.apache.commons.io.FileUtils; import org.gradle.api.Project; import org.gradle.api.tasks.TaskAction; -import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.LoomGradlePlugin; import net.fabricmc.loom.configuration.ide.RunConfig; import net.fabricmc.loom.configuration.ide.RunConfigSettings; @@ -48,7 +46,6 @@ public class GenVsCodeProjectTask extends AbstractLoomTask { @TaskAction public void genRuns() { Project project = getProject(); - LoomGradleExtension extension = getExtension(); File projectDir = project.file(".vscode"); if (!projectDir.exists()) { @@ -72,8 +69,7 @@ public class GenVsCodeProjectTask extends AbstractLoomTask { settings.makeRunDir(); } - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String json = gson.toJson(launch); + String json = LoomGradlePlugin.GSON.toJson(launch); try { FileUtils.writeStringToFile(launchJson, json, StandardCharsets.UTF_8); diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index ed18dea8..1abba932 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -34,7 +34,7 @@ import net.fabricmc.loom.configuration.RemappedConfigurationEntry; public class Constants { public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; - public static final String RESOURCES_BASE = "http://resources.download.minecraft.net/"; + public static final String RESOURCES_BASE = "https://resources.download.minecraft.net/"; public static final String VERSION_MANIFESTS = "https://launchermeta.mojang.com/mc/game/version_manifest_v2.json"; public static final String SYSTEM_ARCH = System.getProperty("os.arch").equals("64") ? "64" : "32"; diff --git a/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java b/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java index 4a31a287..fcc9d9cd 100644 --- a/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java +++ b/src/main/java/net/fabricmc/loom/util/GroovyXmlUtil.java @@ -36,8 +36,8 @@ public final class GroovyXmlUtil { public static Node getOrCreateNode(Node parent, String name) { for (Object object : parent.children()) { - if (object instanceof Node && isSameName(((Node) object).name(), name)) { - return (Node) object; + if (object instanceof Node node && isSameName(node.name(), name)) { + return node; } } @@ -46,8 +46,8 @@ public final class GroovyXmlUtil { public static Optional<Node> getNode(Node parent, String name) { for (Object object : parent.children()) { - if (object instanceof Node && isSameName(((Node) object).name(), name)) { - return Optional.of((Node) object); + if (object instanceof Node node && isSameName(node.name(), name)) { + return Optional.of(node); } } @@ -59,13 +59,13 @@ public final class GroovyXmlUtil { return nodeName.equals(givenName); } - if (nodeName instanceof QName) { - return ((QName) nodeName).matches(givenName); + if (nodeName instanceof QName qName) { + return qName.matches(givenName); } // New groovy 3 (gradle 7) class - if (nodeName instanceof groovy.namespace.QName) { - return ((groovy.namespace.QName) nodeName).matches(givenName); + if (nodeName instanceof groovy.namespace.QName qName) { + return qName.matches(givenName); } throw new UnsupportedOperationException("Cannot determine if " + nodeName.getClass() + " is the same as a String"); diff --git a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java index e673d0a7..ed4957a5 100644 --- a/src/main/java/net/fabricmc/loom/util/SourceRemapper.java +++ b/src/main/java/net/fabricmc/loom/util/SourceRemapper.java @@ -234,7 +234,7 @@ public class SourceRemapper { } } else { 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()) { m.getClassPath().add(inputFile.toPath()); } } diff --git a/src/main/java/net/fabricmc/loom/util/StaticPathWatcher.java b/src/main/java/net/fabricmc/loom/util/StaticPathWatcher.java index 751d6ce0..2dd9b08d 100644 --- a/src/main/java/net/fabricmc/loom/util/StaticPathWatcher.java +++ b/src/main/java/net/fabricmc/loom/util/StaticPathWatcher.java @@ -61,8 +61,8 @@ public final class StaticPathWatcher { for (WatchEvent<?> event : key.pollEvents()) { Object ctx = event.context(); - if (ctx instanceof Path) { - changeCache.put(((Path) ctx).toAbsolutePath(), true); + if (ctx instanceof Path path) { + changeCache.put(path.toAbsolutePath(), true); } } } |