aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/net/fabricmc/loom/build/JarRemapper.java4
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java2
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java3
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java1
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/forge/MinecraftPatchedProvider.java1
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java40
-rw-r--r--src/main/java/net/fabricmc/loom/task/RemapJarTask.java2
7 files changed, 37 insertions, 16 deletions
diff --git a/src/main/java/net/fabricmc/loom/build/JarRemapper.java b/src/main/java/net/fabricmc/loom/build/JarRemapper.java
index fab51e2d..6d8f4287 100644
--- a/src/main/java/net/fabricmc/loom/build/JarRemapper.java
+++ b/src/main/java/net/fabricmc/loom/build/JarRemapper.java
@@ -35,6 +35,7 @@ import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import org.gradle.api.Action;
+import org.gradle.api.Project;
import org.objectweb.asm.commons.Remapper;
import net.fabricmc.loom.util.LoggerFilter;
@@ -64,9 +65,10 @@ public class JarRemapper {
return data;
}
- public void remap() throws IOException {
+ public void remap(Project project) throws IOException {
LoggerFilter.replaceSystemOut();
TinyRemapper.Builder remapperBuilder = TinyRemapper.newRemapper();
+ remapperBuilder.logger(project.getLogger()::lifecycle);
mappingProviders.forEach(remapperBuilder::withMappings);
if (remapOptions != null) {
diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
index d75dd318..01310e6d 100644
--- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
+++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
@@ -320,7 +320,7 @@ public final class CompileConfiguration {
rootProject.getTasks().register("remapAllJars", AbstractLoomTask.class, task -> {
task.doLast(t -> {
try {
- jarRemapper.remap();
+ jarRemapper.remap(rootProject);
} catch (IOException e) {
throw new RuntimeException("Failed to remap jars", e);
}
diff --git a/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java b/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java
index ae73c145..42f0e7bf 100644
--- a/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java
+++ b/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java
@@ -95,7 +95,8 @@ public class AccessWidenerJarProcessor implements JarProcessor {
throw new UnsupportedOperationException(String.format("Access Widener namespace '%s' is not a valid namespace, it must be one of: '%s'", accessWidener.getNamespace(), String.join(", ", validNamespaces)));
}
- TinyRemapper tinyRemapper = loomGradleExtension.getMinecraftMappedProvider().getTinyRemapper(null, "official", "named");
+ TinyRemapper tinyRemapper = loomGradleExtension.getMinecraftMappedProvider().getTinyRemapper();
+ tinyRemapper.replaceMappings(loomGradleExtension.getMinecraftMappedProvider().getMappings(null, "official", "named"));
loomGradleExtension.getMinecraftMappedProvider();
tinyRemapper.readClassPath(MinecraftMappedProvider.getRemapClasspath(project));
diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
index 14f14e88..990c042c 100644
--- a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
+++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
@@ -155,6 +155,7 @@ public class ModProcessor {
TinyTree mappings = extension.isForge() ? mappingsProvider.getMappingsWithSrg() : mappingsProvider.getMappings();
LoggerFilter.replaceSystemOut();
TinyRemapper remapper = TinyRemapper.newRemapper()
+ .logger(project.getLogger()::lifecycle)
.withMappings(TinyRemapperMappingsHelper.create(mappings, fromM, toM, false))
.renameInvalidLocals(false)
.build();
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 2afd3eed..cccfc7f8 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
@@ -428,6 +428,7 @@ public class MinecraftPatchedProvider extends DependencyProvider {
Files.deleteIfExists(output);
TinyRemapper remapper = TinyRemapper.newRemapper()
+ .logger(getProject().getLogger()::lifecycle)
.withMappings(TinyRemapperMappingsHelper.create(mappingsWithSrg, "srg", "official", true))
.withMappings(InnerClassRemapper.of(input, mappingsWithSrg, "srg", "official"))
.renameInvalidLocals(true)
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java
index 93068ba4..1a9a5db0 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftMappedProvider.java
@@ -35,7 +35,9 @@ import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import java.util.function.Consumer;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
@@ -48,12 +50,12 @@ import net.fabricmc.loom.configuration.DependencyProvider;
import net.fabricmc.loom.configuration.providers.MinecraftProvider;
import net.fabricmc.loom.configuration.providers.mappings.MappingsProvider;
import net.fabricmc.loom.util.Constants;
-import net.fabricmc.loom.util.ThreadingUtils;
import net.fabricmc.loom.util.TinyRemapperMappingsHelper;
import net.fabricmc.loom.util.srg.AtRemapper;
import net.fabricmc.loom.util.srg.CoreModClassRemapper;
import net.fabricmc.loom.util.srg.InnerClassRemapper;
import net.fabricmc.mapping.tree.TinyTree;
+import net.fabricmc.tinyremapper.IMappingProvider;
import net.fabricmc.tinyremapper.NonClassCopyMode;
import net.fabricmc.tinyremapper.OutputConsumerPath;
import net.fabricmc.tinyremapper.TinyRemapper;
@@ -137,14 +139,15 @@ public class MinecraftMappedProvider extends DependencyProvider {
Path outputSrg = minecraftSrgJar == null ? null : minecraftSrgJar.toPath();
Path[] libraries = getRemapClasspath(getProject());
+ TinyRemapper remapper = getTinyRemapper();
+ remapper.readClassPath(libraries);
+ remapper.prepareClasses();
- ThreadingUtils.run(getExtension().isForge() ? Arrays.asList("named", "intermediary", "srg") : Arrays.asList("named", "intermediary"), toM -> {
+ for (String toM : getExtension().isForge() ? Arrays.asList("named", "intermediary", "srg") : Arrays.asList("named", "intermediary")) {
Path output = "named".equals(toM) ? outputMapped : "srg".equals(toM) ? outputSrg : outputIntermediary;
getProject().getLogger().lifecycle(":remapping minecraft (TinyRemapper, " + fromM + " -> " + toM + ")");
- TinyRemapper remapper = getTinyRemapper(input, fromM, toM);
-
try (OutputConsumerPath outputConsumer = new OutputConsumerPath.Builder(output).build()) {
if (getExtension().isForge()) {
outputConsumer.addNonClassFiles(input, NonClassCopyMode.FIX_META_INF, remapper);
@@ -152,14 +155,14 @@ public class MinecraftMappedProvider extends DependencyProvider {
outputConsumer.addNonClassFiles(input);
}
- remapper.readClassPath(libraries);
+ remapper.replaceMappings(getMappings(input, fromM, toM));
remapper.readInputs(input);
remapper.apply(outputConsumer);
} catch (Exception e) {
Files.deleteIfExists(output);
throw new RuntimeException("Failed to remap JAR " + input + " with mappings from " + mappingsProvider.tinyMappings, e);
} finally {
- remapper.finish();
+ remapper.removeInput();
}
if (getExtension().isForge() && !"srg".equals(toM)) {
@@ -196,14 +199,18 @@ public class MinecraftMappedProvider extends DependencyProvider {
AtRemapper.remap(getProject().getLogger(), output, yarnWithSrg);
CoreModClassRemapper.remapJar(output, yarnWithSrg, getProject().getLogger());
}
- });
+ }
+
+ remapper.finish();
}
- public TinyRemapper getTinyRemapper(@Nullable Path fromJar, String fromM, String toM) throws IOException {
+ public TinyRemapper getTinyRemapper() throws IOException {
TinyRemapper.Builder builder = TinyRemapper.newRemapper()
- .withMappings(TinyRemapperMappingsHelper.create(getExtension().isForge() ? getExtension().getMappingsProvider().getMappingsWithSrg() : getExtension().getMappingsProvider().getMappings(), fromM, toM, true))
.renameInvalidLocals(true)
.ignoreConflicts(getExtension().isForge())
+ .cacheMappings(true)
+ .threads(Runtime.getRuntime().availableProcessors())
+ .logger(getProject().getLogger()::lifecycle)
.rebuildSourceFilenames(true);
if (getExtension().isForge()) {
@@ -211,15 +218,24 @@ public class MinecraftMappedProvider extends DependencyProvider {
* They won't get remapped to their proper packages, so IllegalAccessErrors will happen without ._.
*/
builder.fixPackageAccess(true);
+ }
+
+ return builder.build();
+ }
+
+ public Set<IMappingProvider> getMappings(@Nullable Path fromJar, String fromM, String toM) throws IOException {
+ Set<IMappingProvider> providers = new HashSet<>();
+ providers.add(TinyRemapperMappingsHelper.create(getExtension().isForge() ? getExtension().getMappingsProvider().getMappingsWithSrg() : getExtension().getMappingsProvider().getMappings(), fromM, toM, true));
+ if (getExtension().isForge()) {
if (fromJar != null) {
- builder.withMappings(InnerClassRemapper.of(fromJar, getExtension().getMappingsProvider().getMappingsWithSrg(), fromM, toM));
+ providers.add(InnerClassRemapper.of(fromJar, getExtension().getMappingsProvider().getMappingsWithSrg(), fromM, toM));
}
} else {
- builder.withMappings(out -> JSR_TO_JETBRAINS.forEach(out::acceptClass));
+ providers.add(out -> JSR_TO_JETBRAINS.forEach(out::acceptClass));
}
- return builder.build();
+ return providers;
}
public static Path[] getRemapClasspath(Project project) {
diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
index 62ffd1d4..0d06f9b9 100644
--- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
+++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java
@@ -119,7 +119,7 @@ public class RemapJarTask extends Jar {
LoggerFilter.replaceSystemOut();
TinyRemapper.Builder remapperBuilder = TinyRemapper.newRemapper();
-
+ remapperBuilder.logger(getProject().getLogger()::lifecycle);
remapperBuilder = remapperBuilder.withMappings(TinyRemapperMappingsHelper.create(extension.isForge() ? mappingsProvider.getMappingsWithSrg() : mappingsProvider.getMappings(), fromM, toM, false));
for (File mixinMapFile : extension.getAllMixinMappings()) {