diff --git a/common/src/main/java/net/neoforged/gradle/common/extensions/base/WithPropertyLookup.java b/common/src/main/java/net/neoforged/gradle/common/extensions/base/WithPropertyLookup.java index c91811ea9..2ae1547d9 100644 --- a/common/src/main/java/net/neoforged/gradle/common/extensions/base/WithPropertyLookup.java +++ b/common/src/main/java/net/neoforged/gradle/common/extensions/base/WithPropertyLookup.java @@ -19,8 +19,11 @@ public WithPropertyLookup(Project project) { } protected Provider getStringProperty(String propertyName, String defaultValue) { - return this.project.getProviders().gradleProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName) - .orElse(defaultValue); + final Provider property = this.project.getProviders().gradleProperty(SUBSYSTEM_PROPERTY_PREFIX + propertyName); + if (defaultValue == null) + return property; + + return property.orElse(defaultValue); } protected Provider getDirectoryProperty(String propertyName, Provider defaultValue) { diff --git a/common/src/main/java/net/neoforged/gradle/common/extensions/subsystems/SubsystemsExtension.java b/common/src/main/java/net/neoforged/gradle/common/extensions/subsystems/SubsystemsExtension.java index d9df0ff0e..c5dbd2525 100644 --- a/common/src/main/java/net/neoforged/gradle/common/extensions/subsystems/SubsystemsExtension.java +++ b/common/src/main/java/net/neoforged/gradle/common/extensions/subsystems/SubsystemsExtension.java @@ -140,25 +140,25 @@ public ParchmentExtensions(Project project) { super(project, "parchment"); getParchmentArtifact().convention( - getStringLocalProperty("parchmentArtifact", "").orElse( + getStringLocalProperty("parchmentArtifact", null).orElse( getMinecraftVersion() .zip(getMappingsVersion(), (minecraftVersion, mappingVersion) -> { return DEFAULT_PARCHMENT_GROUP + ":" + DEFAULT_PARCHMENT_ARTIFACT_PREFIX + minecraftVersion + ":" + mappingVersion + "@zip"; - }) + }).orElse("") ) ); getConflictPrefix().convention("p_"); getMinecraftVersion().convention( - getStringProperty("minecraftVersion", null) + getStringLocalProperty("minecraftVersion", null) ); getMappingsVersion().convention( - getStringProperty("mappingsVersion", null) + getStringLocalProperty("mappingsVersion", null) ); getAddRepository().convention( - getBooleanProperty("addRepository", true, false) + getBooleanLocalProperty("addRepository", true) ); getIsEnabled().set(getParchmentArtifact() .map(s -> !s.isEmpty()).orElse(getBooleanLocalProperty("enabled", true)) diff --git a/userdev/src/functionalTest/groovy/net/neoforged/gradle/userdev/ParchmentTests.groovy b/userdev/src/functionalTest/groovy/net/neoforged/gradle/userdev/ParchmentTests.groovy new file mode 100644 index 000000000..1dec2bd5b --- /dev/null +++ b/userdev/src/functionalTest/groovy/net/neoforged/gradle/userdev/ParchmentTests.groovy @@ -0,0 +1,59 @@ +package net.neoforged.gradle.userdev + +import net.neoforged.trainingwheels.gradle.functional.BuilderBasedTestSpecification +import org.gradle.testkit.runner.TaskOutcome + +class ParchmentTests extends BuilderBasedTestSpecification { + + @Override + protected void configurePluginUnderTest() { + pluginUnderTest = "net.neoforged.gradle.neoform"; + injectIntoAllProject = true; + } + + def "parchment can be used"() { + given: + def project = create("parchment_can_be_used", { + it.property("neogradle.subsystems.parchment.minecraftVersion", "1.21") + it.property("neogradle.subsystems.parchment.mappingsVersion", "2024.07.28") + it.build(""" + plugins { + id 'net.neoforged.gradle.userdev' + } + + java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } + } + + dependencies { + implementation 'net.neoforged:neoforge:+' + } + """) + it.file("src/main/java/net/neoforged/gradle/userdev/ConfigurationCacheTests.java", """ + package net.neoforged.gradle.userdev; + + import net.minecraft.client.Minecraft; + + public class ConfigurationCacheTests { + public static void main(String[] args) { + System.out.println(Minecraft.getInstance().getClass().toString()); + } + } + """) + it.withToolchains() + it.withGlobalCacheDirectory(tempDir) + }) + + when: + def run = project.run { + it.tasks('compileJava') + it.arguments('--warning-mode', 'fail', '--stacktrace') + } + + then: + run.task(':compileJava').outcome == TaskOutcome.SUCCESS + run.task(':neoFormApplyParchment').outcome == TaskOutcome.SUCCESS + } +}