From 5a8cd5ce9ff8e680c91d4f23f461659859171e08 Mon Sep 17 00:00:00 2001 From: Juuxel <6596629+Juuxel@users.noreply.github.com> Date: Wed, 2 Dec 2020 21:30:27 +0200 Subject: [PATCH] Switch to TR (once again) for remapping srg -> official It works now :^) --- build.gradle | 3 +- .../providers/MinecraftMappedProvider.java | 1 - .../providers/MinecraftPatchedProvider.java | 56 ++++++++++--------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/build.gradle b/build.gradle index 36448d44..2a32b6f6 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ if (ENV.BUILD_NUMBER) { build = "release #${ENV.BUILD_NUMBER}" version = baseVersion + '.' + ENV.BUILD_NUMBER } else { - version = baseVersion + '-forge.34' + version = baseVersion + '-forge.36' } configurations { @@ -87,7 +87,6 @@ dependencies { implementation ('net.minecraftforge:binarypatcher:1.1.1') implementation ('org.cadixdev:lorenz:0.5.3') implementation ('org.cadixdev:lorenz-asm:0.5.3') - implementation ('org.cadixdev:atlas:0.2.0') implementation ('net.minecraftforge.gradle:ForgeGradle:3.0.179') implementation ('net.minecraftforge:accesstransformers:2.2.0') diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java index ac3099cf..aa590205 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java @@ -148,7 +148,6 @@ public class MinecraftMappedProvider extends DependencyProvider { // TODO: Relocate this to its own class try (FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + output.toUri()), ImmutableMap.of("create", false))) { Path manifestPath = fs.getPath("META-INF", "MANIFEST.MF"); - ForgeProvider.ForgeVersion version = getExtension().getForgeProvider().getVersion(); Manifest minecraftManifest; Manifest forgeManifest; diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftPatchedProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftPatchedProvider.java index dc394415..583c662e 100644 --- a/src/main/java/net/fabricmc/loom/providers/MinecraftPatchedProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MinecraftPatchedProvider.java @@ -25,10 +25,8 @@ package net.fabricmc.loom.providers; import java.io.File; -import java.io.FileReader; import java.io.IOException; import java.io.InputStream; -import java.io.Reader; import java.io.UncheckedIOException; import java.net.URI; import java.net.URISyntaxException; @@ -40,7 +38,6 @@ import java.util.Collections; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; -import java.util.function.UnaryOperator; import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; @@ -49,19 +46,16 @@ import net.minecraftforge.binarypatcher.ConsoleTool; import net.minecraftforge.gradle.mcp.util.MCPRuntime; import net.minecraftforge.gradle.mcp.util.MCPWrapper; import org.apache.commons.io.FileUtils; -import org.cadixdev.atlas.Atlas; -import org.cadixdev.bombe.asm.jar.JarEntryRemappingTransformer; -import org.cadixdev.lorenz.MappingSet; -import org.cadixdev.lorenz.asm.LorenzRemapper; -import org.cadixdev.lorenz.io.srg.tsrg.TSrgReader; import org.gradle.api.Project; import org.gradle.api.logging.Logger; import net.fabricmc.loom.util.Constants; import net.fabricmc.loom.util.DependencyProvider; import net.fabricmc.loom.util.JarUtil; +import net.fabricmc.loom.util.TinyRemapperMappingsHelper; import net.fabricmc.loom.util.function.FsPathConsumer; -import net.fabricmc.loom.util.function.IoConsumer; +import net.fabricmc.tinyremapper.OutputConsumerPath; +import net.fabricmc.tinyremapper.TinyRemapper; public class MinecraftPatchedProvider extends DependencyProvider { private File minecraftClientSrgJar; @@ -115,6 +109,7 @@ public class MinecraftPatchedProvider extends DependencyProvider { } private void createSrgJars(Logger logger) throws Exception { + // TODO: FORGE: Get rid of *this* logger.lifecycle(":remapping minecraft (MCP, official -> srg)"); McpConfigProvider volde = getExtension().getMcpConfigProvider(); @@ -169,29 +164,36 @@ public class MinecraftPatchedProvider extends DependencyProvider { } private void remapPatchedJars(Logger logger) throws IOException { - logger.lifecycle(":remapping minecraft (Atlas, srg -> official)"); + boolean[] bools = { true, false }; + Path[] libraries = getExtension() + .getMinecraftProvider() + .getLibraryProvider() + .getLibraries() + .stream() + .map(File::toPath) + .toArray(Path[]::new); - useAtlas(MappingSet::reverse, atlas -> { - atlas.run(minecraftClientPatchedSrgJar.toPath(), minecraftClientPatchedJar.toPath()); - atlas.run(minecraftServerPatchedSrgJar.toPath(), minecraftServerPatchedJar.toPath()); - }); - } + for (boolean isClient : bools) { + logger.lifecycle(":remapping minecraft (TinyRemapper, " + (isClient ? "client" : "server") + ", srg -> official)"); - private void useAtlas(UnaryOperator mappingOp, IoConsumer action) throws IOException { - try (Reader mappingReader = new FileReader(getExtension().getMcpConfigProvider().getSrg()); - TSrgReader reader = new TSrgReader(mappingReader); - Atlas atlas = new Atlas()) { - MappingSet mappings = mappingOp.apply(reader.read()); + TinyRemapper remapper = TinyRemapper.newRemapper() + .withMappings(TinyRemapperMappingsHelper.create(getExtension().getMappingsProvider().getMappingsWithSrg(), "srg", "official", true)) + .renameInvalidLocals(true) + .rebuildSourceFilenames(true) + .build(); - atlas.install(ctx -> new JarEntryRemappingTransformer( - new LorenzRemapper(mappings, ctx.inheritanceProvider()) - )); + Path input = (isClient ? minecraftClientPatchedSrgJar : minecraftServerPatchedSrgJar).toPath(); + Path output = (isClient ? minecraftClientPatchedJar : minecraftServerPatchedJar).toPath(); - for (File library : getExtension().getMinecraftProvider().getLibraryProvider().getLibraries()) { - atlas.use(library.toPath()); + try (OutputConsumerPath outputConsumer = new OutputConsumerPath.Builder(output).build()) { + outputConsumer.addNonClassFiles(input); + + remapper.readClassPath(libraries); + remapper.readInputs(input); + remapper.apply(outputConsumer); + } finally { + remapper.finish(); } - - action.accept(atlas); } }