diff options
author | modmuss50 <modmuss50@gmail.com> | 2021-08-11 22:08:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-11 22:08:36 +0100 |
commit | 159e573cade48ee649fc0dc2c9111cda77dd7816 (patch) | |
tree | 4eecc9f893056dd29a946a852f162579427351e5 /src/main/java/net/fabricmc/loom/configuration | |
parent | 2b5d3d4a3a7ba5d1fcc85e890267157faa09291b (diff) | |
download | architectury-loom-159e573cade48ee649fc0dc2c9111cda77dd7816.tar.gz architectury-loom-159e573cade48ee649fc0dc2c9111cda77dd7816.tar.bz2 architectury-loom-159e573cade48ee649fc0dc2c9111cda77dd7816.zip |
Fix #469 (#470)
Diffstat (limited to 'src/main/java/net/fabricmc/loom/configuration')
6 files changed, 42 insertions, 16 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 e7998e48..ced88424 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 @@ -25,7 +25,9 @@ package net.fabricmc.loom.configuration.providers.mappings; import java.io.File; +import java.io.IOException; +import org.apache.commons.io.FileUtils; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.logging.Logger; @@ -36,12 +38,11 @@ import net.fabricmc.loom.configuration.providers.MinecraftProvider; public class GradleMappingContext implements MappingContext { private final Project project; private final LoomGradleExtension extension; - private final String workingDirName; + private File workingDir; - public GradleMappingContext(Project project, String workingDirName) { + public GradleMappingContext(Project project) { this.project = project; this.extension = LoomGradleExtension.get(project); - this.workingDirName = workingDirName; } @Override @@ -61,10 +62,28 @@ public class GradleMappingContext implements MappingContext { } @Override + public File workingDirectory() { + if (workingDir == null) { + workingDir = new File(mappingsProvider().getMappingsDir().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) { - File tempDir = new File(mappingsProvider().getMappingsDir().toFile(), workingDirName); - tempDir.mkdirs(); - return new File(tempDir, name); + File file = new File(workingDirectory(), name); + file.mkdirs(); + + return file; } @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 2e47af39..f42a3289 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<MappingsSpec<?>> layers) { - public String getVersion() { + public String getVersion(MappingContext context) { // TODO something better? - return "layered+hash.%d".formatted(Math.abs(hashCode())); + return "layered+hash.%d.minecraft.%s".formatted(Math.abs(hashCode()), context.minecraftVersion()); } } 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 1b5d673f..b253a114 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,17 +54,16 @@ public class LayeredMappingsDependency implements SelfResolvingDependency { private final MappingContext mappingContext; private final LayeredMappingSpec layeredMappingSpec; - private final String version; + private String version = null; - public LayeredMappingsDependency(MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec, String version) { + public LayeredMappingsDependency(MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec) { this.mappingContext = mappingContext; this.layeredMappingSpec = layeredMappingSpec; - this.version = version; } @Override public Set<File> resolve() { - Path mappingsDir = mappingContext.mappingsProvider().getMappingsDir(); + Path mappingsDir = mappingContext.workingDirectory().toPath(); Path mappingsFile = mappingsDir.resolve(String.format("%s.%s-%s.tiny", GROUP, MODULE, getVersion())); if (!Files.exists(mappingsFile) || LoomGradlePlugin.refreshDeps) { @@ -115,6 +114,10 @@ public class LayeredMappingsDependency implements SelfResolvingDependency { @Override public String getVersion() { + if (version == null) { + version = layeredMappingSpec.getVersion(mappingContext); + } + return version; } @@ -129,7 +132,7 @@ public class LayeredMappingsDependency implements SelfResolvingDependency { @Override public Dependency copy() { - return new LayeredMappingsDependency(mappingContext, layeredMappingSpec, version); + return new LayeredMappingsDependency(mappingContext, layeredMappingSpec); } @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 3fbfb655..0ccd61ea 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,6 +41,8 @@ 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/configuration/providers/mappings/mojmap/MojangMappingLayer.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java index 03d0c010..fe96ef93 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java @@ -44,14 +44,15 @@ import net.fabricmc.mappingio.MappingVisitor; import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch; import net.fabricmc.mappingio.format.ProGuardReader; -public record MojangMappingLayer(MinecraftVersionMeta.Download clientDownload, +public record MojangMappingLayer(String minecraftVersion, + MinecraftVersionMeta.Download clientDownload, MinecraftVersionMeta.Download serverDownload, File workingDir, Logger logger) implements MappingLayer { @Override public void visit(MappingVisitor mappingVisitor) throws IOException { - var clientMappings = new File(workingDir(), "client.txt"); - var serverMappings = new File(workingDir(), "server.txt"); + var clientMappings = new File(workingDir(), "%s.client.txt".formatted(minecraftVersion)); + var serverMappings = new File(workingDir(), "%s.server.txt".formatted(minecraftVersion)); download(clientMappings, serverMappings); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java index 61bec479..8af54e53 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java @@ -42,6 +42,7 @@ public record MojangMappingsSpec() implements MappingsSpec<MojangMappingLayer> { } return new MojangMappingLayer( + context.minecraftVersion(), versionInfo.download(MANIFEST_CLIENT_MAPPINGS), versionInfo.download(MANIFEST_SERVER_MAPPINGS), context.workingDirectory("mojang"), |