diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 285df770..a4f95d28 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -212,6 +212,7 @@ public abstract class CompileConfiguration implements Runnable { if (extension.isForgeLike() && !(minecraftProvider instanceof ForgeMinecraftProvider)) { throw new UnsupportedOperationException("Using Forge with split jars is not supported!"); } + extension.setMinecraftProvider(minecraftProvider); minecraftProvider.provide(); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/minecraft/SingleJarForgeMinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/minecraft/SingleJarForgeMinecraftProvider.java index 0fc6d517..ed421294 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/minecraft/SingleJarForgeMinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/minecraft/SingleJarForgeMinecraftProvider.java @@ -37,99 +37,99 @@ import net.fabricmc.loom.configuration.providers.minecraft.SingleJarMinecraftPro public abstract class SingleJarForgeMinecraftProvider extends SingleJarMinecraftProvider implements ForgeMinecraftProvider { private final MinecraftPatchedProvider patchedProvider; - + private SingleJarForgeMinecraftProvider(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) { super(metadataProvider, configContext, MappingsNamespace.OFFICIAL); this.patchedProvider = new MinecraftPatchedProvider(configContext.project(), this, provideServer() ? MinecraftPatchedProvider.Type.SERVER_ONLY : MinecraftPatchedProvider.Type.CLIENT_ONLY); } - + public static SingleJarForgeMinecraftProvider.Server forgeServer(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) { return new SingleJarForgeMinecraftProvider.Server(metadataProvider, configContext); } - + public static SingleJarForgeMinecraftProvider.Client forgeClient(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) { return new SingleJarForgeMinecraftProvider.Client(metadataProvider, configContext); } - + @Override protected boolean provideClient() { // the client jar is needed for client-extra which the Forge userdev launch thing always checks for return true; } - + @Override protected void processJar() throws Exception { // don't process the jar, it's created by the patched provider } - + @Override public MinecraftPatchedProvider getPatchedProvider() { return patchedProvider; } - + @Override public Path getMinecraftEnvOnlyJar() { return patchedProvider.getMinecraftPatchedJar(); } - + @Override public List getMinecraftJars() { return List.of(patchedProvider.getMinecraftPatchedJar()); } - + public static final class Server extends SingleJarForgeMinecraftProvider { private Server(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) { super(metadataProvider, configContext); } - + @Override public SingleJarEnvType type() { return SingleJarEnvType.SERVER; } - + @Override public Path getInputJar(SingleJarMinecraftProvider provider) throws Exception { BundleMetadata serverBundleMetadata = provider.getServerBundleMetadata(); - + if (serverBundleMetadata == null) { return provider.getMinecraftServerJar().toPath(); } - + provider.extractBundledServerJar(); return provider.getMinecraftExtractedServerJar().toPath(); } - + @Override protected boolean provideServer() { return true; } - + @Override protected boolean provideClient() { return false; } } - + public static final class Client extends SingleJarForgeMinecraftProvider { private Client(MinecraftMetadataProvider metadataProvider, ConfigContext configContext) { super(metadataProvider, configContext); } - + @Override public SingleJarEnvType type() { return SingleJarEnvType.CLIENT; } - + @Override public Path getInputJar(SingleJarMinecraftProvider provider) throws Exception { return provider.getMinecraftClientJar().toPath(); } - + @Override protected boolean provideServer() { return false; } - + @Override protected boolean provideClient() { return true; diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java index b704390e..33efeba6 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftJarConfiguration.java @@ -176,7 +176,7 @@ public record MinecraftJarConfiguration< private interface NamedMinecraftProviderFactory { NamedMinecraftProvider create(Project project, M minecraftProvider); } - + private interface SrgMinecraftProviderFactory { SrgMinecraftProvider create(Project project, M minecraftProvider); } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java index 2e69858a..6b0f8415 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java @@ -134,7 +134,7 @@ public abstract class MinecraftProvider { } } } - + public final void extractBundledServerJar() throws IOException { Preconditions.checkArgument(provideServer(), "Not configured to provide server jar"); Objects.requireNonNull(getServerBundleMetadata(), "Cannot bundled mc jar from none bundled server jar"); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/SingleJarMinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/SingleJarMinecraftProvider.java index d3e88b96..684527e9 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/SingleJarMinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/SingleJarMinecraftProvider.java @@ -128,7 +128,7 @@ public abstract class SingleJarMinecraftProvider extends MinecraftProvider { } protected abstract SingleJarEnvType type(); - + protected abstract Path getInputJar(SingleJarMinecraftProvider provider) throws Exception; public static final class Server extends SingleJarMinecraftProvider { diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/MojangMappedMinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/MojangMappedMinecraftProvider.java index 22c03edc..e8c707a1 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/MojangMappedMinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/MojangMappedMinecraftProvider.java @@ -26,11 +26,10 @@ package net.fabricmc.loom.configuration.providers.minecraft.mapped; import java.util.List; -import net.fabricmc.loom.configuration.providers.minecraft.LegacyMergedMinecraftProvider; - import org.gradle.api.Project; import net.fabricmc.loom.api.mappings.layered.MappingsNamespace; +import net.fabricmc.loom.configuration.providers.minecraft.LegacyMergedMinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.MergedMinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.SingleJarEnvType; diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java index 44e2cab6..ae1ad4ad 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/mapped/SrgMinecraftProvider.java @@ -26,11 +26,10 @@ package net.fabricmc.loom.configuration.providers.minecraft.mapped; import java.util.List; -import net.fabricmc.loom.configuration.providers.minecraft.LegacyMergedMinecraftProvider; - import org.gradle.api.Project; import net.fabricmc.loom.api.mappings.layered.MappingsNamespace; +import net.fabricmc.loom.configuration.providers.minecraft.LegacyMergedMinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.MergedMinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.MinecraftProvider; import net.fabricmc.loom.configuration.providers.minecraft.SingleJarEnvType; diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java index da508638..42be11ea 100644 --- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java @@ -433,12 +433,15 @@ public abstract class GenerateSourcesTask extends AbstractLoomTask { // Remove Forge and NeoForge classes from linemap // TODO: We should instead not decompile Forge's classes at all var lineMap = new HashMap(); + for (Map.Entry entry : lineNumbers.lineMap().entrySet()) { String name = entry.getKey(); + if (!name.startsWith("net/minecraftforge/") && !name.startsWith("net/neoforged/")) { lineMap.put(name, entry.getValue()); } } + return new ClassLineNumbers(lineMap); } else { return lineNumbers;