diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 34e3d6da..71bfe2ef 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -275,6 +275,10 @@ public abstract class CompileConfiguration implements Runnable { mappingConfiguration.applyToProject(getProject(), mappingsDep); } + if (extension.isForgeLike() && extension.getForgeProvider().usesMojangAtRuntime()) { + extension.getRuntimeIntermediaryNamespace().set(MappingsNamespace.MOJANG.toString()); + } + if (extension.isForgeLike()) { extension.setForgeRunsProvider(ForgeRunsProvider.create(project)); } @@ -312,8 +316,6 @@ public abstract class CompileConfiguration implements Runnable { } if (extension.isForgeLike() && extension.getForgeProvider().usesMojangAtRuntime()) { - extension.getRuntimeIntermediaryNamespace().set(MappingsNamespace.MOJANG.toString()); - final MojangMappedMinecraftProvider mojangMappedMinecraftProvider = jarConfiguration.createMojangMappedMinecraftProvider(project); extension.setMojangMappedMinecraftProvider(mojangMappedMinecraftProvider); mojangMappedMinecraftProvider.provide(provideContext); diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java index 6c301b13..6e6b16cb 100644 --- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java @@ -240,8 +240,6 @@ public abstract class GenerateSourcesTask extends AbstractLoomTask { getDaemonUtilsContext().set(getProject().getObjects().newInstance(DaemonUtils.Context.class, getProject())); - getUnpickOptions().set(UnpickService.createOptions(this)); - getForgeSourcesOptions().set(ForgeSourcesService.createOptions(getProject())); mustRunAfter(getProject().getTasks().withType(AbstractRemapJarTask.class)); diff --git a/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java b/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java index 53420130..b1bbb02c 100644 --- a/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java +++ b/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java @@ -121,10 +121,12 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask { @ApiStatus.Internal @InputFile + @Optional protected abstract RegularFileProperty getPlatformMappingFile(); @ApiStatus.Internal @InputFiles + @Optional protected abstract ConfigurableFileCollection getMappingJars(); @ApiStatus.Internal @@ -151,9 +153,11 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask { getDevLauncherConfig().set(getExtension().getFiles().getDevLauncherConfig()); getProductionNamespace().set(getExtension().getProductionNamespaceEnum().toString()); - getPlatformMappingFile().set(getProject().getLayout().file(getProject().provider(() -> getExtension().getPlatformMappingFile().toFile()))); - getPlatformMappingFile().finalizeValue(); - getMappingJars().from(getProject().getConfigurations().getByName(Constants.Configurations.MAPPINGS_FINAL)); + if (!getExtension().disableObfuscation()) { + getPlatformMappingFile().set(getProject().getLayout().file(getProject().provider(() -> getExtension().getPlatformMappingFile().toFile()))); + getPlatformMappingFile().finalizeValue(); + getMappingJars().from(getProject().getConfigurations().getByName(Constants.Configurations.MAPPINGS_FINAL)); + } if (getExtension().isForgeLike()) { getRunTemplates().addAll(getProject().provider(() -> { @@ -164,7 +168,7 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask { .toList(); })); - if (getExtension().isForge()) { + if (getExtension().isForge() && !getExtension().disableObfuscation()) { getForgeInputs().set(getProject().provider(() -> new ForgeInputs(getProject(), getExtension()))); } } else { @@ -230,54 +234,56 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask { } if (platform.isForgeLike()) { - // Find the mapping files for Unprotect to use for figuring out - // which classes are from Minecraft. - String unprotectMappings = getMappingJars() - .getFiles() - .stream() - .map(File::getAbsolutePath) - .collect(Collectors.joining(File.pathSeparator)); + if (getPlatformMappingFile().isPresent()) { + // Find the mapping files for Unprotect to use for figuring out + // which classes are from Minecraft. + String unprotectMappings = getMappingJars() + .getFiles() + .stream() + .map(File::getAbsolutePath) + .collect(Collectors.joining(File.pathSeparator)); - final String intermediateNs = IntermediaryNamespaces.intermediaryNamespace(platform).toString(); - final String mappingsPath = getPlatformMappingFile().get().getAsFile().getAbsolutePath(); + final String intermediateNs = IntermediaryNamespaces.intermediaryNamespace(platform).toString(); + final String mappingsPath = getPlatformMappingFile().get().getAsFile().getAbsolutePath(); - launchConfig - .property("unprotect.mappings", unprotectMappings) - // See ArchitecturyNamingService in forge-runtime - .property("architectury.naming.sourceNamespace", intermediateNs) - .property("architectury.naming.mappingsPath", mappingsPath); + launchConfig + .property("unprotect.mappings", unprotectMappings) + // See ArchitecturyNamingService in forge-runtime + .property("architectury.naming.sourceNamespace", intermediateNs) + .property("architectury.naming.mappingsPath", mappingsPath); - if (platform == ModPlatform.FORGE) { - final ForgeInputs forgeInputs = Objects.requireNonNull(getForgeInputs().getOrNull()); - final List dataGenMods = forgeInputs.dataGenMods(); + if (platform == ModPlatform.FORGE) { + final ForgeInputs forgeInputs = Objects.requireNonNull(getForgeInputs().getOrNull()); + final List dataGenMods = forgeInputs.dataGenMods(); - // Only apply the hardcoded data arguments if the deprecated data generator API is being used. - if (!dataGenMods.isEmpty()) { - launchConfig - .argument("data", "--all") - .argument("data", "--mod") - .argument("data", String.join(",", dataGenMods)) - .argument("data", "--output") - .argument("data", forgeInputs.legacyDataGenDir()); - } + // Only apply the hardcoded data arguments if the deprecated data generator API is being used. + if (!dataGenMods.isEmpty()) { + launchConfig + .argument("data", "--all") + .argument("data", "--mod") + .argument("data", String.join(",", dataGenMods)) + .argument("data", "--output") + .argument("data", forgeInputs.legacyDataGenDir()); + } - launchConfig.property("mixin.env.remapRefMap", "true"); + launchConfig.property("mixin.env.remapRefMap", "true"); - if (forgeInputs.useCustomMixin()) { - // See mixin remapper service in forge-runtime - launchConfig - .property("architectury.mixinRemapper.sourceNamespace", intermediateNs) - .property("architectury.mixinRemapper.mappingsPath", mappingsPath); - } else { - launchConfig.property("net.minecraftforge.gradle.GradleStart.srg.srg-mcp", forgeInputs.srgToNamedSrg()); - } + if (forgeInputs.useCustomMixin()) { + // See mixin remapper service in forge-runtime + launchConfig + .property("architectury.mixinRemapper.sourceNamespace", intermediateNs) + .property("architectury.mixinRemapper.mappingsPath", mappingsPath); + } else { + launchConfig.property("net.minecraftforge.gradle.GradleStart.srg.srg-mcp", forgeInputs.srgToNamedSrg()); + } - Set mixinConfigs = forgeInputs.mixinConfigs(); + Set mixinConfigs = forgeInputs.mixinConfigs(); - if (!mixinConfigs.isEmpty()) { - for (String config : mixinConfigs) { - launchConfig.argument("-mixin.config"); - launchConfig.argument(config); + if (!mixinConfigs.isEmpty()) { + for (String config : mixinConfigs) { + launchConfig.argument("-mixin.config"); + launchConfig.argument(config); + } } } } diff --git a/src/test/groovy/net/fabricmc/loom/test/integration/neoforge/NeoForge1210Test.groovy b/src/test/groovy/net/fabricmc/loom/test/integration/neoforge/NeoForge1210Test.groovy index a05c831a..832a7626 100644 --- a/src/test/groovy/net/fabricmc/loom/test/integration/neoforge/NeoForge1210Test.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/integration/neoforge/NeoForge1210Test.groovy @@ -59,5 +59,7 @@ class NeoForge1210Test extends Specification implements GradleProjectTestTrait { '1.21' | '21.0.77-beta' | "'net.fabricmc:yarn:1.21+build.1:v2'" | "'dev.architectury:yarn-mappings-patch-neoforge:1.21+build.4'" '1.21.10' | '21.10.63' | 'loom.officialMojangMappings()' | '' '1.21.10' | '21.10.64' | 'loom.officialMojangMappings()' | '' + '1.21.11' | '21.11.38-beta' | 'loom.officialMojangMappings()' | '' + '1.21.11' | '21.11.38-beta' | "'net.fabricmc:yarn:1.21.11+build.1:v2'" | "'dev.architectury:yarn-mappings-patch-neoforge:1.21+build.6'" } }