From 7002bb6ded1d1740e74f67954bf6428dad500623 Mon Sep 17 00:00:00 2001 From: Juuxel <6596629+Juuxel@users.noreply.github.com> Date: Mon, 27 Jul 2020 19:34:42 +0300 Subject: [PATCH] broken --- build.gradle | 2 +- .../loom/providers/MappingsProvider.java | 12 +++--- .../loom/providers/McpConfigProvider.java | 41 ++++++++++++++++--- .../loom/providers/MinecraftProvider.java | 12 +++++- 4 files changed, 54 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index dbb43543..9a323f41 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ if (ENV.BUILD_NUMBER) { build = 'jenkins #${ENV.BUILD_NUMBER}' version = baseVersion + '.' + ENV.BUILD_NUMBER } else { - version = baseVersion + '-forge.13' + version = baseVersion + '-forge.20' } repositories { diff --git a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java index 906547f2..135c3117 100644 --- a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java @@ -225,15 +225,15 @@ public class MappingsProvider extends DependencyProvider { extractMappings(unmergedYarnJarFs, unmergedYarn); } - Path invertedIntermediary = Paths.get(mappingsStepsDir.toString(), "inverted-intermediary.tiny"); - reorderMappings(unmergedIntermediary, invertedIntermediary, "intermediary", "official"); + //Path invertedIntermediary = Paths.get(mappingsStepsDir.toString(), "inverted-intermediary.tiny"); + //reorderMappings(unmergedIntermediary, invertedIntermediary, "intermediary", "official"); Path unorderedMergedMappings = Paths.get(mappingsStepsDir.toString(), "unordered-merged.tiny"); - Path intermediaryToSrg = Paths.get(mappingsStepsDir.toString(), "intermediary-to-srg.tiny"); + Path srgToIntermediary = Paths.get(mappingsStepsDir.toString(), "srg-to-intermediary.tiny"); Path srgToYarn = Paths.get(mappingsStepsDir.toString(), "srg-to-yarn.tiny"); - composeMappings(invertedIntermediary, getExtension().getMcpConfigProvider().getSrgTiny().toPath(), "tinyv2:intermediary:srg", intermediaryToSrg); - composeMappings(getExtension().getMcpConfigProvider().getInvertedSrgTiny().toPath(), unmergedYarn, "tinyv2:srg:named", srgToYarn); + composeMappings(getExtension().getMcpConfigProvider().getSrgTiny().toPath(), unmergedIntermediary, "tinyv2:srg:intermediary", srgToIntermediary); + composeMappings(srgToIntermediary, unmergedYarn, "tinyv2:srg:named", srgToYarn); project.getLogger().info(":merging"); - mergeMappings(intermediaryToSrg, srgToYarn, unorderedMergedMappings); + mergeMappings(srgToIntermediary, srgToYarn, unorderedMergedMappings); reorderMappings(unorderedMergedMappings, tinyMappings.toPath(), "srg", "intermediary", "named"); } diff --git a/src/main/java/net/fabricmc/loom/providers/McpConfigProvider.java b/src/main/java/net/fabricmc/loom/providers/McpConfigProvider.java index 1051ecf0..d07127c1 100644 --- a/src/main/java/net/fabricmc/loom/providers/McpConfigProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/McpConfigProvider.java @@ -31,18 +31,34 @@ import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.function.Consumer; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import cuchaz.enigma.command.ConvertMappingsCommand; import cuchaz.enigma.command.InvertMappingsCommand; import org.cadixdev.lorenz.MappingSet; import org.cadixdev.lorenz.io.enigma.EnigmaWriter; import org.cadixdev.lorenz.io.srg.tsrg.TSrgReader; +import org.cadixdev.lorenz.model.ClassMapping; +import org.cadixdev.lorenz.model.FieldMapping; +import org.cadixdev.lorenz.model.MethodMapping; +import org.cadixdev.lorenz.model.TopLevelClassMapping; import org.gradle.api.Project; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.DependencyProvider; +import net.fabricmc.mapping.tree.ClassDef; +import net.fabricmc.stitch.commands.CommandReorderTiny; +import net.fabricmc.stitch.commands.tinyv2.CommandReorderTinyV2; +import net.fabricmc.stitch.commands.tinyv2.TinyClass; +import net.fabricmc.stitch.commands.tinyv2.TinyField; +import net.fabricmc.stitch.commands.tinyv2.TinyMethod; public class McpConfigProvider extends DependencyProvider { private File mcp; @@ -75,21 +91,36 @@ public class McpConfigProvider extends DependencyProvider { } if (!srgTiny.exists()) { - Path enigma = Files.createTempFile(null, "-srg.enigma"); + List classes = new ArrayList<>(); try (TSrgReader reader = new TSrgReader(new FileReader(srg))) { MappingSet mappings = reader.read(); - try (EnigmaWriter writer = new EnigmaWriter(Files.newBufferedWriter(enigma))) { - writer.write(mappings); - } } new ConvertMappingsCommand().run("enigma_file", enigma.toString(), "tinyv2:official:srg", srgTiny.getAbsolutePath()); - new InvertMappingsCommand().run("tinyv2", srgTiny.getAbsolutePath(), "tinyv2:srg:official", invertedSrgTiny.getAbsolutePath()); + new CommandReorderTinyV2().run(new String[]{srgTiny.getAbsolutePath(), invertedSrgTiny.getAbsolutePath(), "srg", "official"}); } } + private > TinyClass toTinyClass(M mapping) { + List names = ImmutableList.of(mapping.getFullObfuscatedName(), mapping.getFullDeobfuscatedName()); + List methods = new ArrayList<>(); + List fields = new ArrayList<>(); + + for (MethodMapping method : mapping.getMethodMappings()) { + List methodNames = ImmutableList.of(method.getObfuscatedName(), method.getDeobfuscatedName()); + methods.add(new TinyMethod(method.getObfuscatedDescriptor(), methodNames, Collections.emptySet(), Collections.emptySet(), Collections.emptySet())); + } + + for (FieldMapping field : mapping.getFieldMappings()) { + List fieldNames = ImmutableList.of(field.getObfuscatedName(), field.getDeobfuscatedName()); + fields.add(new TinyField(field.get)) + } + + return new TinyClass(names, methods, fields, Collections.emptySet()); + } + private void init(String version) { mcp = new File(getExtension().getUserCache(), "mcp-" + version + ".zip"); srg = new File(getExtension().getUserCache(), "srg-" + version + ".tsrg"); diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java index bac4edd9..43015466 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MinecraftProvider.java @@ -34,8 +34,11 @@ import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; import java.nio.file.FileSystem; +import java.nio.file.FileSystemNotFoundException; import java.nio.file.FileSystems; import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.nio.file.StandardOpenOption; import java.util.Optional; import java.util.function.Consumer; import java.util.function.UnaryOperator; @@ -328,7 +331,14 @@ public class MinecraftProvider extends DependencyProvider { .filter(it -> !it.toString().endsWith(".class")) .forEach(it -> { try { - java.nio.file.Files.copy(it, targetFs.getPath(it.toString())); + Path targetFile = targetFs.getPath(it.toString()); + Path parent = targetFile.getParent(); + + if (parent != null) { + java.nio.file.Files.createDirectories(parent); + } + + java.nio.file.Files.copy(it, targetFile, StandardCopyOption.REPLACE_EXISTING); } catch (IOException e) { throw new UncheckedIOException(e); }