diff options
Diffstat (limited to 'src/main/java')
3 files changed, 29 insertions, 17 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java index 7e155ff4..8e0c28c5 100644 --- a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java @@ -28,6 +28,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; @@ -190,23 +191,24 @@ public class ModProcessor { // Apply this in a second loop as we need to ensure all the inputs are on the classpath before remapping. for (ModDependencyInfo info : remapList) { - OutputConsumerPath outputConsumer; - try { - outputConsumer = new OutputConsumerPath.Builder(info.getRemappedOutput().toPath()).build(); - } catch (Exception e) { - throw new IOException("Could not create output consumer for " + info.getRemappedOutput().getAbsolutePath()); - } + OutputConsumerPath outputConsumer = new OutputConsumerPath.Builder(info.getRemappedOutput().toPath()).build(); - outputConsumer.addNonClassFiles(info.getInputFile().toPath()); - outputConsumerMap.put(info, outputConsumer); - String accessWidener = info.getAccessWidener(); + outputConsumer.addNonClassFiles(info.getInputFile().toPath()); + outputConsumerMap.put(info, outputConsumer); + String accessWidener = info.getAccessWidener(); - if (accessWidener != null) { - accessWidenerMap.put(info, remapAccessWidener(ZipUtil.unpackEntry(info.inputFile, accessWidener), remapper.getRemapper())); - } + if (accessWidener != null) { + accessWidenerMap.put(info, remapAccessWidener(ZipUtil.unpackEntry(info.inputFile, accessWidener), remapper.getRemapper())); + } + + remapper.apply(outputConsumer, tagMap.get(info)); + } catch (Exception e) { + remapper.finish(); + Files.deleteIfExists(info.getRemappedOutput().toPath()); - remapper.apply(outputConsumer, tagMap.get(info)); + throw new RuntimeException("Failed to remap: " + info.getRemappedNotation(), e); + } } remapper.finish(); 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 21f1d2fd..fc0d3adc 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 @@ -38,18 +38,21 @@ import java.util.Objects; import java.util.Set; import org.gradle.api.Action; +import org.gradle.api.Project; import org.gradle.api.artifacts.Dependency; import org.gradle.api.artifacts.ExternalDependency; import org.gradle.api.artifacts.ExternalModuleDependency; import org.gradle.api.artifacts.ModuleIdentifier; import org.gradle.api.artifacts.ModuleVersionIdentifier; import org.gradle.api.artifacts.MutableVersionConstraint; +import org.gradle.api.artifacts.FileCollectionDependency; import org.gradle.api.artifacts.SelfResolvingDependency; import org.gradle.api.artifacts.VersionConstraint; import org.gradle.api.internal.artifacts.DefaultModuleIdentifier; import org.gradle.api.internal.artifacts.ModuleVersionSelectorStrictSpec; import org.gradle.api.internal.artifacts.dependencies.AbstractModuleDependency; import org.gradle.api.internal.artifacts.dependencies.DefaultMutableVersionConstraint; +import org.gradle.api.file.FileCollection; import org.gradle.api.tasks.TaskDependency; import org.zeroturnaround.zip.ByteSource; import org.zeroturnaround.zip.ZipEntrySource; @@ -64,16 +67,18 @@ import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch; import net.fabricmc.mappingio.format.Tiny2Writer; import net.fabricmc.mappingio.tree.MemoryMappingTree; -public class LayeredMappingsDependency extends AbstractModuleDependency implements SelfResolvingDependency, ExternalModuleDependency { +public class LayeredMappingsDependency extends AbstractModuleDependency implements SelfResolvingDependency, ExternalModuleDependency, FileCollectionDependency { private static final String GROUP = "loom"; private static final String MODULE = "mappings"; + private final Project project; private final MappingContext mappingContext; private final LayeredMappingSpec layeredMappingSpec; private final String version; - public LayeredMappingsDependency(MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec, String version) { + public LayeredMappingsDependency(Project project, MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec, String version) { super(null); + this.project = project; this.mappingContext = mappingContext; this.layeredMappingSpec = layeredMappingSpec; this.version = version; @@ -203,7 +208,7 @@ public class LayeredMappingsDependency extends AbstractModuleDependency implemen @Override public ExternalModuleDependency copy() { - return new LayeredMappingsDependency(mappingContext, layeredMappingSpec, version); + return new LayeredMappingsDependency(project, mappingContext, layeredMappingSpec, version); } @Override @@ -218,4 +223,9 @@ public class LayeredMappingsDependency extends AbstractModuleDependency implemen @Override public void because(String s) { } + + @Override + public FileCollection getFiles() { + return project.files(resolve()); + } } diff --git a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java index 2d31712d..66ddeb0b 100644 --- a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java @@ -165,7 +165,7 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA LayeredMappingSpecBuilderImpl builder = new LayeredMappingSpecBuilderImpl(this); action.execute(builder); LayeredMappingSpec builtSpec = builder.build(); - return new LayeredMappingsDependency(new GradleMappingContext(getProject(), builtSpec.getVersion().replace("+", "_").replace(".", "_")), builtSpec, builtSpec.getVersion()); + return new LayeredMappingsDependency(getProject(), new GradleMappingContext(getProject(), builtSpec.getVersion().replace("+", "_").replace(".", "_")), builtSpec, builtSpec.getVersion()); } protected abstract String getMinecraftVersion(); |