aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/configuration
diff options
context:
space:
mode:
authormodmuss50 <modmuss50@gmail.com>2021-08-11 22:08:36 +0100
committerGitHub <noreply@github.com>2021-08-11 22:08:36 +0100
commit159e573cade48ee649fc0dc2c9111cda77dd7816 (patch)
tree4eecc9f893056dd29a946a852f162579427351e5 /src/main/java/net/fabricmc/loom/configuration
parent2b5d3d4a3a7ba5d1fcc85e890267157faa09291b (diff)
downloadarchitectury-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')
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java31
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java4
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java13
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java2
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java7
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java1
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"),