diff options
Diffstat (limited to 'src/main/java/net')
5 files changed, 46 insertions, 4 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java index f11907dc..d74238b5 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java @@ -101,7 +101,7 @@ import net.fabricmc.mappingio.tree.MemoryMappingTree; public class MinecraftPatchedProvider extends DependencyProvider { private static final String LOOM_PATCH_VERSION_KEY = "Loom-Patch-Version"; - private static final String CURRENT_LOOM_PATCH_VERSION = "5"; + private static final String CURRENT_LOOM_PATCH_VERSION = "5+essential.2"; private static final String NAME_MAPPING_SERVICE_PATH = "/inject/META-INF/services/cpw.mods.modlauncher.api.INameMappingService"; // Step 1: Remap Minecraft to SRG (global) diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java index 3be857bd..fef7849b 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java @@ -285,7 +285,7 @@ public class MappingsProviderImpl extends DependencyProvider implements Mappings String yarnMinecraftVersion = yarnVersion.substring(0, yarnVersion.lastIndexOf(separator)); if (!yarnMinecraftVersion.equalsIgnoreCase(minecraftVersion)) { - throw new RuntimeException(String.format("Minecraft Version (%s) does not match yarn's minecraft version (%s)", minecraftVersion, yarnMinecraftVersion)); + getProject().getLogger().warn("Minecraft Version ({}) does not match yarn's minecraft version ({})", minecraftVersion, yarnMinecraftVersion); } // We can save reading the zip file + header by checking the file name diff --git a/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java b/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java index c393f997..335c6fba 100644 --- a/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java +++ b/src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java @@ -28,9 +28,12 @@ import java.io.File; import java.io.IOException; import java.io.PrintStream; import java.io.UncheckedIOException; +import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.SimpleFileVisitor; import java.nio.file.StandardOpenOption; +import java.nio.file.attribute.BasicFileAttributes; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -39,6 +42,7 @@ import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiConsumer; import java.util.stream.Collectors; +import java.util.stream.IntStream; import org.apache.commons.io.output.NullOutputStream; import org.cadixdev.lorenz.MappingSet; @@ -246,6 +250,7 @@ public class ForgeSourcesRemapper { try (FileSystemUtil.Delegate outputFs = FileSystemUtil.getJarFileSystem(tmpOutput, true)) { Path outputFsRoot = outputFs.get().getPath("/"); mercury.rewrite(tmpInput, outputFsRoot); + fixupLineNumbers(tmpInput, outputFsRoot); } catch (Exception e) { project.getLogger().warn("Could not remap " + tmpInput + " fully!", e); } @@ -273,4 +278,41 @@ public class ForgeSourcesRemapper { taskCompleter.complete(); return sources; } + + /** + * Mercury re-organizes imports during remapping, which can result in mismatching line information when debugging. + * This method works around the issue by forcefully re-aligning the output files with the input files by inserting + * empty lines or joining multiple lines into one. + */ + private static void fixupLineNumbers(Path srcRoot, Path outRoot) throws IOException { + Files.walkFileTree(srcRoot, new SimpleFileVisitor<>() { + @Override + public FileVisitResult visitFile(Path srcPath, BasicFileAttributes attrs) throws IOException { + Path outPath = outRoot.resolve(srcRoot.relativize(srcPath).toString()); + List<String> src = Files.readAllLines(srcPath); + List<String> out = Files.readAllLines(outPath); + int lastSrc = IntStream.range(0, src.size()).filter(i -> src.get(i).startsWith("import")).max().orElse(0); + int lastOut = IntStream.range(0, out.size()).filter(i -> out.get(i).startsWith("import")).max().orElse(0); + + if (lastSrc == lastOut) { + return FileVisitResult.CONTINUE; + } + + while (lastOut < lastSrc) { + out.add(lastOut + 1, ""); + lastOut++; + } + + while (lastSrc < lastOut && lastOut > 0) { + out.set(lastOut - 1, out.get(lastOut - 1) + out.get(lastOut)); + out.remove(lastOut); + lastOut--; + } + + Files.write(outPath, out); + + return FileVisitResult.CONTINUE; + } + }); + } } diff --git a/src/main/java/net/fabricmc/loom/task/ValidateAccessWidenerTask.java b/src/main/java/net/fabricmc/loom/task/ValidateAccessWidenerTask.java index 7fc9d227..a23bd92e 100644 --- a/src/main/java/net/fabricmc/loom/task/ValidateAccessWidenerTask.java +++ b/src/main/java/net/fabricmc/loom/task/ValidateAccessWidenerTask.java @@ -58,7 +58,7 @@ public abstract class ValidateAccessWidenerTask extends DefaultTask { final LoomGradleExtension extension = LoomGradleExtension.get(getProject()); getAccessWidener().convention(extension.getAccessWidenerPath()).finalizeValueOnRead(); - getTargetJar().convention(getProject().getObjects().fileProperty().fileValue(extension.getMinecraftMappedProvider().getMappedJar())).finalizeValueOnRead(); + getTargetJar().convention(getProject().getLayout().file(getProject().provider(() -> extension.getMinecraftMappedProvider().getMappedJar()))).finalizeValueOnRead(); } @TaskAction diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index 2ce96c46..75242026 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -34,7 +34,7 @@ import net.fabricmc.loom.configuration.RemappedConfigurationEntry; import net.fabricmc.loom.configuration.RemappedConfigurationEntry.PublishingMode; public class Constants { - public static final String PLUGIN_ID = "dev.architectury.loom"; + public static final String PLUGIN_ID = "gg.essential.loom"; public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; public static final String RESOURCES_BASE = "https://resources.download.minecraft.net/"; public static final String VERSION_MANIFESTS = "https://launchermeta.mojang.com/mc/game/version_manifest_v2.json"; |