mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-03-30 21:05:58 -05:00
Set up dependency providers before mappings, clean up code
This lets us use the same order as in 1.1, so I can also clean up some
changes made for the ordering. Thanks to merging MinecraftProvider's
provideFirst() and provide(), I could safely move the dependency providers
back to where they belong. (Alternatively, I could've moved the libraries
to provideFirst() but it's better to just get rid of it anyway to reduce
isForge() checks.)
Partially reverts commit 3d74e11167.
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <em>without</em> 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}
|
||||
*
|
||||
* <p>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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user