From d819b1cc47b26572ab6af85258e54d5737bead69 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 26 Aug 2021 21:50:19 +0800 Subject: [PATCH] Make LayeredMappingsDependency not error because of uninitialized MappingsProvider Signed-off-by: shedaniel --- .../mappings/GradleMappingContext.java | 24 ++++--------------- .../mappings/LayeredMappingSpec.java | 4 ++-- .../mappings/LayeredMappingsDependency.java | 11 ++++----- .../providers/mappings/MappingContext.java | 2 -- .../extension/LoomGradleExtensionApiImpl.java | 2 +- 5 files changed, 11 insertions(+), 32 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java index bb2de17d..047d75af 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java @@ -38,11 +38,12 @@ import net.fabricmc.loom.configuration.providers.MinecraftProvider; public class GradleMappingContext implements MappingContext { private final Project project; private final LoomGradleExtension extension; - private File workingDir; + private final String workingDirName; - public GradleMappingContext(Project project) { + public GradleMappingContext(Project project, String workingDirName) { this.project = project; this.extension = LoomGradleExtension.get(project); + this.workingDirName = workingDirName; } @Override @@ -61,26 +62,9 @@ public class GradleMappingContext implements MappingContext { return extension.getMinecraftProvider(); } - @Override - public File workingDirectory() { - if (workingDir == null) { - workingDir = new File(mappingsProvider().mappingsWorkingDir().toFile(), "layered/" + minecraftProvider().minecraftVersion()); - - if (workingDir.exists()) { - try { - FileUtils.deleteDirectory(workingDir); - } catch (IOException e) { - getLogger().warn("Failed to cleanup layered mappings working directory: {}", e.getMessage()); - } - } - } - - return workingDir; - } - @Override public File workingDirectory(String name) { - return new File(workingDirectory(), name); + return new File(minecraftProvider().dir("layered/working_dir/" + workingDirName), name); } @Override diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java index f42a3289..2e47af39 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java @@ -27,8 +27,8 @@ package net.fabricmc.loom.configuration.providers.mappings; import java.util.List; public record LayeredMappingSpec(List> layers) { - public String getVersion(MappingContext context) { + public String getVersion() { // TODO something better? - return "layered+hash.%d.minecraft.%s".formatted(Math.abs(hashCode()), context.minecraftVersion()); + return "layered+hash.%d".formatted(Math.abs(hashCode())); } } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java index 35a159d7..878a37e4 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java @@ -54,11 +54,12 @@ public class LayeredMappingsDependency implements SelfResolvingDependency { private final MappingContext mappingContext; private final LayeredMappingSpec layeredMappingSpec; - private String version = null; + private final String version; - public LayeredMappingsDependency(MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec) { + public LayeredMappingsDependency(MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec, String version) { this.mappingContext = mappingContext; this.layeredMappingSpec = layeredMappingSpec; + this.version = version; } @Override @@ -114,10 +115,6 @@ public class LayeredMappingsDependency implements SelfResolvingDependency { @Override public String getVersion() { - if (version == null) { - version = layeredMappingSpec.getVersion(mappingContext); - } - return version; } @@ -132,7 +129,7 @@ public class LayeredMappingsDependency implements SelfResolvingDependency { @Override public Dependency copy() { - return new LayeredMappingsDependency(mappingContext, layeredMappingSpec); + return new LayeredMappingsDependency(mappingContext, layeredMappingSpec, version); } @Override diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java index 0ccd61ea..3fbfb655 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java @@ -41,8 +41,6 @@ public interface MappingContext { return minecraftProvider().minecraftVersion(); } - File workingDirectory(); - /** * Creates a temporary working dir to be used to store working files. */ diff --git a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java index 6ff2c826..5feeafbe 100644 --- a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java @@ -166,7 +166,7 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA LayeredMappingSpecBuilder builder = new LayeredMappingSpecBuilder(this); action.execute(builder); LayeredMappingSpec builtSpec = builder.build(); - return new LayeredMappingsDependency(new GradleMappingContext(getProject()), builtSpec); + return new LayeredMappingsDependency(new GradleMappingContext(getProject(), builtSpec.getVersion().replace("+", "_").replace(".", "_")), builtSpec, builtSpec.getVersion()); } protected abstract String getMinecraftVersion();