aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net')
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java2
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java2
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/sources/ForgeSourcesRemapper.java42
-rw-r--r--src/main/java/net/fabricmc/loom/task/ValidateAccessWidenerTask.java2
-rw-r--r--src/main/java/net/fabricmc/loom/util/Constants.java2
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";