aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/configuration
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-08-14 02:31:16 +0800
committershedaniel <daniel@shedaniel.me>2021-08-14 02:31:16 +0800
commit83de8bbc9afaa8da8ec0df95de9430da6678a3c4 (patch)
tree86cdd94797bf046a609fbebfb5fd233c04bbc220 /src/main/java/net/fabricmc/loom/configuration
parentab4ae39664f5bbb5aa12d6be5b249bdd29e4c4e4 (diff)
parent159e573cade48ee649fc0dc2c9111cda77dd7816 (diff)
downloadarchitectury-loom-83de8bbc9afaa8da8ec0df95de9430da6678a3c4.tar.gz
architectury-loom-83de8bbc9afaa8da8ec0df95de9430da6678a3c4.tar.bz2
architectury-loom-83de8bbc9afaa8da8ec0df95de9430da6678a3c4.zip
Merge remote-tracking branch 'FabricMC/dev/0.9' into dev/0.9
# Conflicts: # build.gradle # src/main/java/net/fabricmc/loom/LoomGradleExtension.java # src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java # src/main/java/net/fabricmc/loom/build/JarRemapper.java # src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java # src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java # src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java # src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java # src/main/java/net/fabricmc/loom/task/AbstractLoomTask.java # src/main/java/net/fabricmc/loom/task/AbstractRunTask.java # src/main/java/net/fabricmc/loom/task/LoomTasks.java # src/main/java/net/fabricmc/loom/util/Constants.java # src/main/java/net/fabricmc/loom/util/SourceRemapper.java # src/test/groovy/net/fabricmc/loom/test/unit/layeredmappings/LayeredMappingSpecBuilderTest.groovy # src/test/resources/projects/kotlin/build.gradle.kts
Diffstat (limited to 'src/main/java/net/fabricmc/loom/configuration')
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java11
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java11
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java5
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java14
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java9
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java12
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java61
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java10
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java32
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java4
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java13
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java2
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java8
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java7
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java1
15 files changed, 158 insertions, 42 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
index 42d6e0fd..e6589da5 100644
--- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
+++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
@@ -29,7 +29,6 @@ import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.tasks.SourceSet;
-import org.gradle.api.tasks.compile.JavaCompile;
import org.gradle.api.tasks.javadoc.Javadoc;
import org.gradle.jvm.tasks.Jar;
@@ -147,11 +146,6 @@ public final class CompileConfiguration {
Javadoc javadoc = (Javadoc) p.getTasks().getByName(JavaPlugin.JAVADOC_TASK_NAME);
javadoc.setClasspath(main.getOutput().plus(main.getCompileClasspath()));
- p.getTasks().withType(JavaCompile.class).configureEach(compile -> {
- // Fork the java compiler to ensure that it does not keep any files open.
- compile.getOptions().setFork(true);
- });
-
p.afterEvaluate(project -> {
LoomGradleExtension extension = LoomGradleExtension.get(project);
@@ -186,9 +180,10 @@ public final class CompileConfiguration {
SetupIntelijRunConfigs.setup(project);
GenVsCodeProjectTask.generate(project);
+ extension.getRemapArchives().finalizeValue();
// Enables the default mod remapper
- if (extension.isRemapMod()) {
+ if (extension.getRemapArchives().get()) {
RemapConfiguration.setupDefaultRemap(project);
} else {
Jar jarTask = (Jar) project.getTasks().getByName("jar");
@@ -201,7 +196,7 @@ public final class CompileConfiguration {
System.setProperty("log4j.skipJansi", "true");
project.getLogger().info("Configuring compiler arguments for Java");
- MixinApExtension mixinApExtension = LoomGradleExtension.get(project).getMixinApExtension();
+ MixinApExtension mixinApExtension = LoomGradleExtension.get(project).getMixin();
mixinApExtension.init();
new JavaApInvoker(project).configureMixin();
diff --git a/src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java b/src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java
index b0568731..b14d2678 100644
--- a/src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java
+++ b/src/main/java/net/fabricmc/loom/configuration/LoomDependencyManager.java
@@ -25,6 +25,7 @@
package net.fabricmc.loom.configuration;
import java.io.File;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -170,7 +171,15 @@ public class LoomDependencyManager {
ModCompileRemapper.remapDependencies(project, mappingsKey, extension, sourceRemapper);
- sourceRemapper.remapAll();
+ long start = System.currentTimeMillis();
+
+ try {
+ sourceRemapper.remapAll();
+ } catch (IOException exception) {
+ throw new RuntimeException("Failed to remap mod sources", exception);
+ }
+
+ project.getLogger().info("Source remapping took: %dms".formatted(System.currentTimeMillis() - start));
for (Runnable runnable : afterTasks) {
runnable.run();
diff --git a/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java
index f8d45018..6afcf2c1 100644
--- a/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java
+++ b/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java
@@ -105,7 +105,7 @@ public class RemapConfiguration {
// TODO what is this for?
Task parentTask = project.getTasks().getByName("build");
- if (extension.isShareCaches()) {
+ if (extension.getShareRemapCaches().get()) {
Project rootProject = project.getRootProject();
if (extension.isRootProject()) {
@@ -116,7 +116,6 @@ public class RemapConfiguration {
rootProject.getTasks().register(remapAllSourcesTaskName, RemapAllSourcesTask.class, task -> {
task.sourceRemapper = sourceRemapper;
- task.doLast(t -> sourceRemapper.remapAll());
});
parentTask = rootProject.getTasks().getByName(remapAllSourcesTaskName);
@@ -165,7 +164,7 @@ public class RemapConfiguration {
});
}
- if (extension.isShareCaches()) {
+ if (extension.getShareRemapCaches().get()) {
remapSourcesJarTask.setSourceRemapper(remapper);
}
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 ef2f37e1..cecf4d34 100644
--- a/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java
+++ b/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java
@@ -71,16 +71,22 @@ public class AccessWidenerJarProcessor implements JarProcessor {
}
@Override
+ public String getId() {
+ return "loom:access_widener";
+ }
+
+ @Override
public void setup() {
LoomGradleExtension loomGradleExtension = LoomGradleExtension.get(project);
+ File awPath = loomGradleExtension.getAccessWidenerPath().get().getAsFile();
- if (!loomGradleExtension.getAccessWidener().exists()) {
- throw new RuntimeException("Could not find access widener file @ " + loomGradleExtension.getAccessWidener().getAbsolutePath());
+ if (!awPath.exists()) {
+ throw new RuntimeException("Could not find access widener file @ " + awPath.getAbsolutePath());
}
- inputHash = Checksum.sha256(loomGradleExtension.getAccessWidener());
+ inputHash = Checksum.sha256(awPath);
- try (BufferedReader reader = new BufferedReader(new FileReader(loomGradleExtension.getAccessWidener()))) {
+ try (BufferedReader reader = new BufferedReader(new FileReader(awPath))) {
accessWidenerReader.read(reader);
} catch (IOException e) {
throw new RuntimeException("Failed to read project access widener file");
diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java
index a9335764..8c60619f 100644
--- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java
+++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java
@@ -52,6 +52,7 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import net.fabricmc.loom.LoomGradleExtension;
+import net.fabricmc.loom.configuration.InstallerData;
import net.fabricmc.loom.util.OperatingSystem;
public class RunConfig {
@@ -269,7 +270,13 @@ public class RunConfig {
}
private static String getMainClass(String side, LoomGradleExtension extension, String defaultMainClass) {
- JsonObject installerJson = extension.getInstallerData() == null ? null : extension.getInstallerData().installerJson();
+ InstallerData installerData = extension.getInstallerData() == null ? null : extension.getInstallerData();
+
+ if (installerData == null) {
+ return defaultMainClass;
+ }
+
+ JsonObject installerJson = installerData.installerJson();
if (installerJson != null && installerJson.has("mainClass")) {
JsonElement mainClassJson = installerJson.get("mainClass");
diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java
index 33cde23b..71f9a6bf 100644
--- a/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java
+++ b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessor.java
@@ -27,6 +27,18 @@ package net.fabricmc.loom.configuration.processors;
import java.io.File;
public interface JarProcessor {
+ /**
+ * Returns a unique ID for this jar processor, containing all configuration details.
+ *
+ * <p>If the jar processor implementation class supports creating multiple jar processors with different effects,
+ * the needed configuration should also be included in this ID. Example: {@code path.to.MyJarProcessor#someOption}.
+ *
+ * @return the ID of this jar processor
+ */
+ default String getId() {
+ return getClass().getName();
+ }
+
void setup();
/**
diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java
index 9ee6864d..4c36c40d 100644
--- a/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java
+++ b/src/main/java/net/fabricmc/loom/configuration/processors/JarProcessorManager.java
@@ -25,9 +25,27 @@
package net.fabricmc.loom.configuration.processors;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UncheckedIOException;
+import java.nio.charset.StandardCharsets;
import java.util.List;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.stream.Collectors;
+import java.util.zip.ZipEntry;
+
+import com.google.common.hash.Hashing;
+import com.google.common.io.CharSource;
+import org.zeroturnaround.zip.ZipUtil;
+import org.zeroturnaround.zip.transform.StreamZipEntryTransformer;
+import org.zeroturnaround.zip.transform.ZipEntryTransformerEntry;
public class JarProcessorManager {
+ private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF";
+ private static final String JAR_PROCESSOR_HASH_ATTRIBUTE = "Loom-Jar-Processor-Hash";
private final List<JarProcessor> jarProcessors;
public JarProcessorManager(List<JarProcessor> jarProcessors) {
@@ -47,13 +65,56 @@ public class JarProcessorManager {
return true;
}
+ String jarProcessorHash = getJarProcessorHash();
+
+ try (JarFile jar = new JarFile(file)) {
+ Attributes attributes = jar.getManifest().getMainAttributes();
+
+ if (!jarProcessorHash.equals(attributes.getValue(JAR_PROCESSOR_HASH_ATTRIBUTE))) {
+ return true;
+ }
+ } catch (IOException e) {
+ throw new UncheckedIOException("Could not check jar manifest of " + file, e);
+ }
+
return jarProcessors.stream().anyMatch(jarProcessor -> jarProcessor.isInvalid(file));
}
+ private String getJarProcessorHash() {
+ String jarProcessorIds = jarProcessors.stream()
+ .map(JarProcessor::getId)
+ .sorted()
+ .collect(Collectors.joining(";"));
+
+ try {
+ return CharSource.wrap(jarProcessorIds)
+ .asByteSource(StandardCharsets.UTF_8)
+ .hash(Hashing.sha256())
+ .toString();
+ } catch (IOException e) {
+ throw new UncheckedIOException("Could not hash jar processor IDs", e);
+ }
+ }
+
public void process(File file) {
for (JarProcessor jarProcessor : jarProcessors) {
jarProcessor.process(file);
}
+
+ boolean manifestTransformed = ZipUtil.transformEntries(file, new ZipEntryTransformerEntry[] {
+ new ZipEntryTransformerEntry(MANIFEST_PATH, new StreamZipEntryTransformer() {
+ @Override
+ protected void transform(ZipEntry zipEntry, InputStream in, OutputStream out) throws IOException {
+ Manifest manifest = new Manifest(in);
+ manifest.getMainAttributes().putValue(JAR_PROCESSOR_HASH_ATTRIBUTE, getJarProcessorHash());
+ manifest.write(out);
+ }
+ })
+ });
+
+ if (!manifestTransformed) {
+ throw new RuntimeException("Could not add data to jar manifest in " + file);
+ }
}
public <T extends JarProcessor> T getByType(Class<T> tClass) {
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java
index fa6e5703..2ac31e06 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java
@@ -135,7 +135,7 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra
}
private void downloadMcJson(boolean offline) throws IOException {
- if (getExtension().isShareCaches() && !getExtension().isRootProject() && versionManifestJson.exists() && !isRefreshDeps()) {
+ if (getExtension().getShareRemapCaches().get() && !getExtension().isRootProject() && versionManifestJson.exists() && !isRefreshDeps()) {
return;
}
@@ -159,10 +159,10 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra
Optional<ManifestVersion.Versions> optionalVersion = Optional.empty();
- if (getExtension().getCustomManifest() != null) {
+ if (getExtension().getCustomMinecraftManifest().isPresent()) {
ManifestVersion.Versions customVersion = new ManifestVersion.Versions();
customVersion.id = minecraftVersion;
- customVersion.url = getExtension().getCustomManifest();
+ customVersion.url = getExtension().getCustomMinecraftManifest().get();
optionalVersion = Optional.of(customVersion);
getProject().getLogger().lifecycle("Using custom minecraft manifest");
}
@@ -226,7 +226,7 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra
}
private boolean hasRecentValidManifest() throws IOException {
- if (getExtension().getCustomManifest() != null) {
+ if (getExtension().getCustomMinecraftManifest().isPresent()) {
return false;
}
@@ -247,7 +247,7 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra
}
private void downloadJars(Logger logger) throws IOException {
- if (getExtension().isShareCaches() && !getExtension().isRootProject() && minecraftClientJar.exists() && minecraftServerJar.exists() && !isRefreshDeps()) {
+ if (getExtension().getShareRemapCaches().get() && !getExtension().isRootProject() && minecraftClientJar.exists() && minecraftServerJar.exists() && !isRefreshDeps()) {
return;
}
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java
index db478671..ced88424 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/GradleMappingContext.java
@@ -25,8 +25,9 @@
package net.fabricmc.loom.configuration.providers.mappings;
import java.io.File;
-import java.util.function.Supplier;
+import java.io.IOException;
+import org.apache.commons.io.FileUtils;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.logging.Logger;
@@ -37,12 +38,11 @@ import net.fabricmc.loom.configuration.providers.MinecraftProvider;
public class GradleMappingContext implements MappingContext {
private final Project project;
private final LoomGradleExtension extension;
- private final Supplier<String> workingDirName;
+ private File workingDir;
- public GradleMappingContext(Project project, Supplier<String> workingDirName) {
+ public GradleMappingContext(Project project) {
this.project = project;
this.extension = LoomGradleExtension.get(project);
- this.workingDirName = workingDirName;
}
@Override
@@ -62,10 +62,28 @@ public class GradleMappingContext implements MappingContext {
}
@Override
+ public File workingDirectory() {
+ if (workingDir == null) {
+ workingDir = new File(mappingsProvider().getMappingsDir().toFile(), "layered/" + minecraftProvider().minecraftVersion());
+
+ if (workingDir.exists()) {
+ try {
+ FileUtils.deleteDirectory(workingDir);
+ } catch (IOException e) {
+ getLogger().warn("Failed to cleanup layered mappings working directory: {}", e.getMessage());
+ }
+ }
+ }
+
+ return workingDir;
+ }
+
+ @Override
public File workingDirectory(String name) {
- File tempDir = new File(mappingsProvider().getMappingsDir().toFile(), workingDirName.get());
- tempDir.mkdirs();
- return new File(tempDir, name);
+ File file = new File(workingDirectory(), name);
+ file.mkdirs();
+
+ return file;
}
@Override
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java
index 2e47af39..f42a3289 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingSpec.java
@@ -27,8 +27,8 @@ package net.fabricmc.loom.configuration.providers.mappings;
import java.util.List;
public record LayeredMappingSpec(List<MappingsSpec<?>> layers) {
- public String getVersion() {
+ public String getVersion(MappingContext context) {
// TODO something better?
- return "layered+hash.%d".formatted(Math.abs(hashCode()));
+ return "layered+hash.%d.minecraft.%s".formatted(Math.abs(hashCode()), context.minecraftVersion());
}
}
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java
index 1b5d673f..b253a114 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/LayeredMappingsDependency.java
@@ -54,17 +54,16 @@ public class LayeredMappingsDependency implements SelfResolvingDependency {
private final MappingContext mappingContext;
private final LayeredMappingSpec layeredMappingSpec;
- private final String version;
+ private String version = null;
- public LayeredMappingsDependency(MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec, String version) {
+ public LayeredMappingsDependency(MappingContext mappingContext, LayeredMappingSpec layeredMappingSpec) {
this.mappingContext = mappingContext;
this.layeredMappingSpec = layeredMappingSpec;
- this.version = version;
}
@Override
public Set<File> resolve() {
- Path mappingsDir = mappingContext.mappingsProvider().getMappingsDir();
+ Path mappingsDir = mappingContext.workingDirectory().toPath();
Path mappingsFile = mappingsDir.resolve(String.format("%s.%s-%s.tiny", GROUP, MODULE, getVersion()));
if (!Files.exists(mappingsFile) || LoomGradlePlugin.refreshDeps) {
@@ -115,6 +114,10 @@ public class LayeredMappingsDependency implements SelfResolvingDependency {
@Override
public String getVersion() {
+ if (version == null) {
+ version = layeredMappingSpec.getVersion(mappingContext);
+ }
+
return version;
}
@@ -129,7 +132,7 @@ public class LayeredMappingsDependency implements SelfResolvingDependency {
@Override
public Dependency copy() {
- return new LayeredMappingsDependency(mappingContext, layeredMappingSpec, version);
+ return new LayeredMappingsDependency(mappingContext, layeredMappingSpec);
}
@Override
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java
index 3fbfb655..0ccd61ea 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingContext.java
@@ -41,6 +41,8 @@ public interface MappingContext {
return minecraftProvider().minecraftVersion();
}
+ File workingDirectory();
+
/**
* Creates a temporary working dir to be used to store working files.
*/
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 1de460e8..f15f6eca 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
@@ -277,11 +277,13 @@ public class MappingsProviderImpl extends DependencyProvider implements Mappings
LoomGradleExtension extension = getExtension();
- if (extension.getAccessWidener() != null) {
- extension.addJarProcessor(new AccessWidenerJarProcessor(getProject()));
+ if (extension.getAccessWidenerPath().isPresent()) {
+ extension.getGameJarProcessors().add(new AccessWidenerJarProcessor(getProject()));
}
- JarProcessorManager processorManager = new JarProcessorManager(extension.getJarProcessors());
+ extension.getAccessWidenerPath().finalizeValue();
+ extension.getGameJarProcessors().finalizeValue();
+ JarProcessorManager processorManager = new JarProcessorManager(extension.getGameJarProcessors().get());
extension.setJarProcessorManager(processorManager);
processorManager.setupProcessors();
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java
index 251ff986..4b4d407b 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java
@@ -44,15 +44,16 @@ import net.fabricmc.mappingio.MappingVisitor;
import net.fabricmc.mappingio.adapter.MappingSourceNsSwitch;
import net.fabricmc.mappingio.format.ProGuardReader;
-public record MojangMappingLayer(MinecraftVersionMeta.Download clientDownload,
+public record MojangMappingLayer(String minecraftVersion,
+ MinecraftVersionMeta.Download clientDownload,
MinecraftVersionMeta.Download serverDownload,
File workingDir,
Logger logger,
MojangMappingsSpec.SilenceLicenseOption silenceLicense) implements MappingLayer {
@Override
public void visit(MappingVisitor mappingVisitor) throws IOException {
- var clientMappings = new File(workingDir(), "client.txt");
- var serverMappings = new File(workingDir(), "server.txt");
+ var clientMappings = new File(workingDir(), "%s.client.txt".formatted(minecraftVersion));
+ var serverMappings = new File(workingDir(), "%s.server.txt".formatted(minecraftVersion));
download(clientMappings, serverMappings);
diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java
index 67f22460..f304530f 100644
--- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java
+++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java
@@ -78,6 +78,7 @@ public record MojangMappingsSpec(SilenceLicenseOption silenceLicense) implements
}
return new MojangMappingLayer(
+ context.minecraftVersion(),
versionInfo.download(MANIFEST_CLIENT_MAPPINGS),
versionInfo.download(MANIFEST_SERVER_MAPPINGS),
context.workingDirectory("mojang"),