diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 5e2fd47d..d074c698 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -194,14 +194,14 @@ public abstract class CompileConfiguration implements Runnable { extension.setMinecraftProvider(minecraftProvider); minecraftProvider.provide(); - final DependencyInfo mappingsDep = DependencyInfo.create(getProject(), Configurations.MAPPINGS); - final MappingConfiguration mappingConfiguration = MappingConfiguration.create(getProject(), configContext.serviceManager(), mappingsDep, minecraftProvider); - extension.setMappingConfiguration(mappingConfiguration); - // This needs to run after MinecraftProvider.initFiles and MinecraftLibraryProvider.provide // but before MinecraftPatchedProvider.provide. setupDependencyProviders(project, extension); + final DependencyInfo mappingsDep = DependencyInfo.create(getProject(), Configurations.MAPPINGS); + final MappingConfiguration mappingConfiguration = MappingConfiguration.create(getProject(), configContext.serviceManager(), mappingsDep, minecraftProvider); + extension.setMappingConfiguration(mappingConfiguration); + if (extension.isForge()) { ForgeLibrariesProvider.provide(mappingConfiguration, project); ((ForgeMinecraftProvider) minecraftProvider).getPatchedProvider().provide(); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingConfiguration.java index 67c6f728..72304ffb 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/FieldMigratedMappingConfiguration.java @@ -77,7 +77,7 @@ public final class FieldMigratedMappingConfiguration extends MappingConfiguratio @Override protected void setup(Project project, SharedServiceManager serviceManager, MinecraftProvider minecraftProvider, Path inputJar) throws IOException { - final Path forgeCache = ForgeProvider.getCurrentForgeCache(project); + final Path forgeCache = ForgeProvider.getForgeCache(project); Files.createDirectories(forgeCache); migratedFieldsCache = forgeCache.resolve("migrated-fields.json"); migratedFields.clear(); @@ -99,8 +99,8 @@ public final class FieldMigratedMappingConfiguration extends MappingConfiguratio super.setup(project, serviceManager, minecraftProvider, inputJar); } - public static String createForgeMappingsIdentifier(Project project, String mappingsName, String version, String classifier, String minecraftVersion) { - return FieldMigratedMappingConfiguration.createMappingsIdentifier(mappingsName, version, classifier, minecraftVersion) + "-forge-" + ForgeProvider.getCombinedForgeVersion(project); + public static String createForgeMappingsIdentifier(LoomGradleExtension extension, String mappingsName, String version, String classifier, String minecraftVersion) { + return FieldMigratedMappingConfiguration.createMappingsIdentifier(mappingsName, version, classifier, minecraftVersion) + "-forge-" + extension.getForgeProvider().getVersion().getCombined(); } @Override diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java index 21acb204..b4af73f5 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java @@ -28,8 +28,6 @@ import java.io.File; import java.nio.file.Path; import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.Dependency; import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.configuration.DependencyInfo; @@ -78,53 +76,18 @@ public class ForgeProvider extends DependencyProvider { return Constants.Configurations.FORGE; } - /** - * Gets the full/combined Forge version without resolving dependencies - * that haven't been resolved yet. - * - * @param project the Gradle project - * @return the Forge version - */ - public static String getCombinedForgeVersion(Project project) { - final LoomGradleExtension extension = LoomGradleExtension.get(project); - - if (extension.getDependencyProviders() != null) { - return extension.getForgeProvider().getVersion().getCombined(); - } - - final Configuration configuration = project.getConfigurations().getByName(Constants.Configurations.FORGE); - - for (Dependency dependency : configuration.getDependencies()) { - if (dependency.getVersion() != null) { - return dependency.getVersion(); - } - } - - throw new RuntimeException("Could not find Forge version. Searched " + configuration.getDependencies().size() + " dependencies"); - } - /** * {@return the Forge cache directory}. * * @param project the project - * @param version the Forge version */ - public static Path getForgeCache(Project project, String version) { + public static Path getForgeCache(Project project) { + final LoomGradleExtension extension = LoomGradleExtension.get(project); + final String version = extension.getForgeProvider().getVersion().getCombined(); return LoomGradleExtension.get(project).getMinecraftProvider() .dir("forge/" + version).toPath(); } - /** - * {@return the cache directory for the current Forge version} - * - *
This method is slower than {@link #getForgeCache} if you already know the Forge version. - * - * @param project the project - */ - public static Path getCurrentForgeCache(Project project) { - return getForgeCache(project, getCombinedForgeVersion(project)); - } - public static final class ForgeVersion { private final String combined; private final String minecraftVersion; diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java index 9bf38678..02cc5803 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java @@ -134,7 +134,7 @@ public class MinecraftPatchedProvider { private void initPatchedFiles() { String forgeVersion = getExtension().getForgeProvider().getVersion().getCombined(); - Path forgeWorkingDir = ForgeProvider.getForgeCache(project, forgeVersion); + Path forgeWorkingDir = ForgeProvider.getForgeCache(project); String patchId = "forge-" + forgeVersion + "-"; minecraftProvider.setJarPrefix(patchId); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/PatchProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/PatchProvider.java index 4a13fc18..1a420d0f 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/PatchProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/PatchProvider.java @@ -1,7 +1,7 @@ /* * This file is part of fabric-loom, licensed under the MIT License (MIT). * - * Copyright (c) 2020-2021 FabricMC + * Copyright (c) 2020-2023 FabricMC * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -46,7 +46,7 @@ public class PatchProvider extends DependencyProvider { @Override public void provide(DependencyInfo dependency) throws Exception { - init(dependency.getDependency().getVersion()); + init(); if (Files.notExists(clientPatches) || Files.notExists(serverPatches) || refreshDeps()) { getProject().getLogger().info(":extracting forge patches"); @@ -60,8 +60,8 @@ public class PatchProvider extends DependencyProvider { } } - private void init(String forgeVersion) { - final Path projectCacheFolder = ForgeProvider.getForgeCache(getProject(), forgeVersion); + private void init() { + final Path projectCacheFolder = ForgeProvider.getForgeCache(getProject()); clientPatches = projectCacheFolder.resolve("patches-client.lzma"); serverPatches = projectCacheFolder.resolve("patches-server.lzma"); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingConfiguration.java index 8c7ec1b6..a2716566 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingConfiguration.java @@ -125,7 +125,7 @@ public class MappingConfiguration { String mappingsIdentifier; if (extension.isForge()) { - mappingsIdentifier = FieldMigratedMappingConfiguration.createForgeMappingsIdentifier(project, mappingsName, version, getMappingsClassifier(dependency, jarInfo.v2()), minecraftProvider.minecraftVersion()); + mappingsIdentifier = FieldMigratedMappingConfiguration.createForgeMappingsIdentifier(extension, mappingsName, version, getMappingsClassifier(dependency, jarInfo.v2()), minecraftProvider.minecraftVersion()); } else { mappingsIdentifier = createMappingsIdentifier(mappingsName, version, getMappingsClassifier(dependency, jarInfo.v2()), minecraftProvider.minecraftVersion()); }