Make LayeredMappingsDependency not error because of uninitialized MappingsProvider

Signed-off-by: shedaniel <daniel@shedaniel.me>
This commit is contained in:
shedaniel
2021-08-26 21:50:19 +08:00
parent 960c7de6e4
commit d819b1cc47
5 changed files with 11 additions and 32 deletions

View File

@@ -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

View File

@@ -27,8 +27,8 @@ package net.fabricmc.loom.configuration.providers.mappings;
import java.util.List;
public record LayeredMappingSpec(List<MappingsSpec<?>> 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()));
}
}

View File

@@ -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

View File

@@ -41,8 +41,6 @@ public interface MappingContext {
return minecraftProvider().minecraftVersion();
}
File workingDirectory();
/**
* Creates a temporary working dir to be used to store working files.
*/

View File

@@ -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();