diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java index c870148e..bfb2f8b8 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java +++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java @@ -28,6 +28,7 @@ import java.nio.file.Path; import java.util.Collection; import java.util.List; +import org.gradle.api.GradleException; import org.gradle.api.Project; import org.gradle.api.file.ConfigurableFileCollection; import org.gradle.api.file.FileCollection; @@ -114,7 +115,10 @@ public interface LoomGradleExtension extends LoomGradleExtensionAPI { yield getSrgMinecraftProvider().getMinecraftJarPaths(); } case MOJANG -> { - ModPlatform.assertPlatform(this, ModPlatform.NEOFORGE, () -> "Mojang-mapped jars are only available on NeoForge."); + if (!this.isForgeLike() || !this.getForgeProvider().usesMojangAtRuntime()) { + throw new GradleException("Mojang-mapped jars are only available on NeoForge / Forge 50+."); + } + yield getMojangMappedMinecraftProvider().getMinecraftJarPaths(); } }; diff --git a/src/main/java/net/fabricmc/loom/build/IntermediaryNamespaces.java b/src/main/java/net/fabricmc/loom/build/IntermediaryNamespaces.java index f3a93922..7e83e24c 100644 --- a/src/main/java/net/fabricmc/loom/build/IntermediaryNamespaces.java +++ b/src/main/java/net/fabricmc/loom/build/IntermediaryNamespaces.java @@ -76,7 +76,7 @@ public final class IntermediaryNamespaces { /** * Potentially replaces the remapping target namespace for mixin refmaps. * - *
All {@linkplain #intermediary(Project) intermediary-like namespaces} are replaced + *
All {@linkplain #runtimeIntermediary(Project) intermediary-like namespaces} are replaced
* by {@code intermediary} since fabric-mixin-compile-extensions only supports intermediary.
* We transform the namespaces in the input mappings, e.g. {@code intermediary} -> {@code yraidemretni} and
* {@code srg} -> {@code intermediary}.
diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
index 37053c9a..9869ca33 100644
--- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
+++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java
@@ -268,7 +268,9 @@ public abstract class CompileConfiguration implements Runnable {
final SrgMinecraftProvider> srgMinecraftProvider = jarConfiguration.createSrgMinecraftProvider(project);
extension.setSrgMinecraftProvider(srgMinecraftProvider);
srgMinecraftProvider.provide(provideContext);
- } else if (extension.isNeoForge()) {
+ }
+
+ if (extension.isForge() && extension.getForgeProvider().usesMojangAtRuntime()) {
final MojangMappedMinecraftProvider> mojangMappedMinecraftProvider = jarConfiguration.createMojangMappedMinecraftProvider(project);
extension.setMojangMappedMinecraftProvider(mojangMappedMinecraftProvider);
mojangMappedMinecraftProvider.provide(provideContext);
diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ArtifactMetadata.java b/src/main/java/net/fabricmc/loom/configuration/mods/ArtifactMetadata.java
index 1c81d8ad..f954ab3c 100644
--- a/src/main/java/net/fabricmc/loom/configuration/mods/ArtifactMetadata.java
+++ b/src/main/java/net/fabricmc/loom/configuration/mods/ArtifactMetadata.java
@@ -55,10 +55,10 @@ public record ArtifactMetadata(boolean isFabricMod, RemapRequirements remapRequi
private static final String QUILT_INSTALLER_PATH = "quilt_installer.json";
public static ArtifactMetadata create(ArtifactRef artifact, String currentLoomVersion) throws IOException {
- return create(artifact, currentLoomVersion, ModPlatform.FABRIC);
+ return create(artifact, currentLoomVersion, ModPlatform.FABRIC, null);
}
- public static ArtifactMetadata create(ArtifactRef artifact, String currentLoomVersion, ModPlatform platform) throws IOException {
+ public static ArtifactMetadata create(ArtifactRef artifact, String currentLoomVersion, ModPlatform platform, @Nullable Boolean forcesStaticMixinRemap) throws IOException {
boolean isFabricMod;
RemapRequirements remapRequirements = RemapRequirements.DEFAULT;
InstallerData installerData = null;
@@ -93,11 +93,10 @@ public record ArtifactMetadata(boolean isFabricMod, RemapRequirements remapRequi
} catch (IllegalArgumentException e) {
throw new IllegalStateException("Unknown mixin remap type: " + mixinRemapType);
}
- } else if (platform == ModPlatform.FORGE) {
- // Use certain refmap remap types by the current platform
- refmapRemapType = MixinRemapType.MIXIN;
- } else if (platform == ModPlatform.NEOFORGE) {
- refmapRemapType = MixinRemapType.STATIC;
+ } else if (forcesStaticMixinRemap != null) {
+ // The mixin remap type is not specified in the manifest, but we have a forced value
+ // This is forced to be static on NeoForge or Forge 50+.
+ refmapRemapType = forcesStaticMixinRemap ? MixinRemapType.STATIC : MixinRemapType.MIXIN;
}
if (loomVersion != null && refmapRemapType != MixinRemapType.STATIC) {
diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java
index ff350dfe..b7d78334 100644
--- a/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java
+++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java
@@ -151,7 +151,8 @@ public class ModConfigurationRemapper {
artifactMetadata = metaCache.computeIfAbsent(artifact, a -> {
try {
- return ArtifactMetadata.create(a, LoomGradlePlugin.LOOM_VERSION, extension.getPlatform().get());
+ return ArtifactMetadata.create(a, LoomGradlePlugin.LOOM_VERSION, extension.getPlatform().get(),
+ extension.isForgeLike() && extension.getForgeProvider().usesMojangAtRuntime() ? true : null);
} catch (IOException e) {
throw ExceptionUtil.createDescriptiveWrapper(UncheckedIOException::new, "Failed to read metadata from " + a.path(), e);
}
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 b5fab0bc..952a5022 100644
--- a/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
+++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModProcessor.java
@@ -206,7 +206,7 @@ public class ModProcessor {
final TinyRemapper remapper = builder.build();
- remapper.readClassPath(extension.getMinecraftJars(IntermediaryNamespaces.intermediaryNamespace(project)).toArray(Path[]::new));
+ remapper.readClassPath(extension.getMinecraftJars(IntermediaryNamespaces.runtimeIntermediaryNamespace(project)).toArray(Path[]::new));
final Map