diff --git a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/dsl/LegacyForgeModdingSettings.java b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/dsl/LegacyForgeModdingSettings.java index 1e082ee0..0f567855 100644 --- a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/dsl/LegacyForgeModdingSettings.java +++ b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/dsl/LegacyForgeModdingSettings.java @@ -20,6 +20,8 @@ public abstract class LegacyForgeModdingSettings { private Set enabledSourceSets = new HashSet<>(); + private boolean obfuscateJar = true; + @Inject public LegacyForgeModdingSettings(Project project) { // By default, enable modding deps only for the main source set @@ -64,11 +66,6 @@ public void setMcpVersion(String version) { this.mcpVersion = version; } - /** - * Contains the list of source sets for which access to Minecraft classes should be configured. - * Defaults to the main source set, but can also be set to an empty list. - */ - /** * Contains the list of source sets for which access to Minecraft classes should be configured. * Defaults to the main source set, but can also be set to an empty list. @@ -80,4 +77,15 @@ public Set getEnabledSourceSets() { public void setEnabledSourceSets(Set enabledSourceSets) { this.enabledSourceSets = enabledSourceSets; } + + /** + * {@return true if default reobfuscation task should be created} + */ + public boolean isObfuscateJar() { + return obfuscateJar; + } + + public void setObfuscateJar(boolean obfuscateJar) { + this.obfuscateJar = obfuscateJar; + } } diff --git a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java index 2b0e8035..d9663c21 100644 --- a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java +++ b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java @@ -183,11 +183,13 @@ public void enable(Project project, LegacyForgeModdingSettings settings, LegacyF run.getProgramArguments().addAll(mixin.getConfigs().map(cfgs -> cfgs.stream().flatMap(config -> Stream.of("--mixin.config", config)).toList())); }); - var reobfJar = obf.reobfuscate( - project.getTasks().named(JavaPlugin.JAR_TASK_NAME, Jar.class), - project.getExtensions().getByType(SourceSetContainer.class).getByName(SourceSet.MAIN_SOURCE_SET_NAME)); + if (settings.isObfuscateJar()) { + var reobfJar = obf.reobfuscate( + project.getTasks().named(JavaPlugin.JAR_TASK_NAME, Jar.class), + project.getExtensions().getByType(SourceSetContainer.class).getByName(SourceSet.MAIN_SOURCE_SET_NAME)); - project.getTasks().named("assemble", assemble -> assemble.dependsOn(reobfJar)); + project.getTasks().named("assemble", assemble -> assemble.dependsOn(reobfJar)); + } // Forge expects the mapping csv files on the root classpath artifacts.runtimeDependencies() diff --git a/src/test/java/net/neoforged/moddevgradle/legacyforge/LegacyModDevPluginTest.java b/src/test/java/net/neoforged/moddevgradle/legacyforge/LegacyModDevPluginTest.java index 71e0583d..d1e0ee6f 100644 --- a/src/test/java/net/neoforged/moddevgradle/legacyforge/LegacyModDevPluginTest.java +++ b/src/test/java/net/neoforged/moddevgradle/legacyforge/LegacyModDevPluginTest.java @@ -2,6 +2,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.Set; @@ -113,6 +114,16 @@ void testAddModdingDependenciesTo() { assertContainsModdingRuntimeDependencies(testSourceSet.getRuntimeClasspathConfigurationName()); } + @Test + void testEnableWithoutReobfTask() { + extension.enable(settings -> { + settings.setForgeVersion(VERSION); + settings.setObfuscateJar(false); + }); + + assertNull(project.getTasks().findByName("reobfJar")); + } + private void assertDoesNotContainModdingDependencies(String configurationName) { assertThatDependencies(configurationName).doesNotContain(MODDING_COMPILE_DEPENDENCIES); assertThatDependencies(configurationName).doesNotContain(MODDING_RUNTIME_ONLY_DEPENDENCIES);