diff --git a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java index e466b2c..c514315 100644 --- a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java @@ -55,6 +55,7 @@ import net.fabricmc.stitch.commands.tinyv2.CommandMergeTinyV2; import net.fabricmc.stitch.commands.tinyv2.CommandReorderTinyV2; import net.fabricmc.loom.processors.JarProcessorManager; import net.fabricmc.loom.processors.MinecraftProcessedProvider; +import net.fabricmc.loom.util.DeletingFileVisitor; public class MappingsProvider extends DependencyProvider { public MinecraftMappedProvider mappedProvider; @@ -260,6 +261,18 @@ public class MappingsProvider extends DependencyProvider { mappingsMixinExport = new File(getExtension().getProjectBuildCache(), "mixin-map-" + minecraftVersion + "-" + mappingsVersion + ".tiny"); } + public void cleanFiles() { + try { + Files.walkFileTree(mappingsStepsDir, new DeletingFileVisitor()); + Files.deleteIfExists(baseTinyMappings); + mappingsMixinExport.delete(); + tinyMappings.delete(); + tinyMappingsJar.delete(); + } catch (IOException e) { + e.printStackTrace(); + } + } + @Override public String getTargetConfig() { return Constants.MAPPINGS; diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java index a584e19..d88a162 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java @@ -65,7 +65,15 @@ public class MinecraftMappedProvider extends DependencyProvider { minecraftIntermediaryJar.delete(); } - new MapJarsTiny().mapJars(minecraftProvider, this, this.minecraftMappedJar, this.minecraftIntermediaryJar, getProject()); + try { + new MapJarsTiny().mapJars(minecraftProvider, this, this.minecraftMappedJar, this.minecraftIntermediaryJar, getProject()); + } catch (Throwable t) { + //Cleanup some some things that may be in a bad state now + minecraftMappedJar.delete(); + minecraftIntermediaryJar.delete(); + getExtension().getMappingsProvider().cleanFiles(); + throw new RuntimeException("Failed to remap minecraft", t); + } } if (!minecraftMappedJar.exists()) { diff --git a/src/main/java/net/fabricmc/loom/task/CleanLoomMappings.java b/src/main/java/net/fabricmc/loom/task/CleanLoomMappings.java index 3e17399..57c7115 100644 --- a/src/main/java/net/fabricmc/loom/task/CleanLoomMappings.java +++ b/src/main/java/net/fabricmc/loom/task/CleanLoomMappings.java @@ -41,6 +41,7 @@ public class CleanLoomMappings extends AbstractLoomTask { extension.getMinecraftMappedProvider().getIntermediaryJar().delete(); extension.getMinecraftMappedProvider().getMappedJar().delete(); Files.walkFileTree(extension.getRootProjectBuildCache().toPath(), new DeletingFileVisitor()); + getExtension().getMappingsProvider().cleanFiles(); } catch (IOException e) { throw new RuntimeException(e); }