Skip to content

Commit b737e1c

Browse files
committed
Attributes are now requested via constraints
1 parent 8b90ecf commit b737e1c

File tree

4 files changed

+30
-36
lines changed

4 files changed

+30
-36
lines changed

src/main/groovy/net/minecraftforge/gradle/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
/// Looking for attributes? They are in [MinecraftExtension.Attributes].
1010
final class Constants {
1111
// Caches -- BE CAREFUL when changing this
12-
static final String CACHES_LOCATION = /* gradleUserHomeDir + */ "caches/forge_gradle_7";
12+
static final String CACHES_LOCATION = /* gradleUserHomeDir + */ "caches/minecraftforge/forgegradle";
1313

1414
static final String FORGE_MAVEN = "https://maven.minecraftforge.net/";
1515

src/main/groovy/net/minecraftforge/gradle/ForgeGradleExtensionImpl.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
import org.gradle.api.plugins.PluginAware;
99

1010
record ForgeGradleExtensionImpl() implements ForgeGradleExtension {
11+
private static final ForgeGradleExtensionImpl INSTANCE = new ForgeGradleExtensionImpl();
12+
1113
static void register(ExtensionAware target) {
1214
target.getExtensions().add(
1315
ForgeGradleExtension.class,
1416
ForgeGradleExtension.NAME,
15-
new ForgeGradleExtensionImpl()
17+
INSTANCE
1618
);
1719
}
1820
}

src/main/groovy/net/minecraftforge/gradle/MinecraftDependencyImpl.groovy

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ import java.util.function.Supplier
7575
private Util.ActionableLazy<AccessTransformersContainer> defaultAtContainer() {
7676
Util.lazy {
7777
this.project.pluginManager.apply('net.minecraftforge.accesstransformers')
78-
AccessTransformersContainer.register(this.project, Attribute.of('net.minecraftforge.gradle.accesstransformed.' + this.atContainerCount++, Boolean)) { }
78+
AccessTransformersContainer.register(this.project, Attribute.of('net.minecraftforge.gradle.accesstransformed.' + this.atContainerCount++, Boolean)) {}
7979
}
8080
}
8181

@@ -94,11 +94,19 @@ import java.util.function.Supplier
9494
@PackageScope void finish(Supplier<MinecraftExtension.Mappings> defaultMappings, Util.ActionableLazy<AccessTransformersContainer> defaultATs) {
9595
var mappings = this.mappingsProp.tap { finalizeValue() }.getOrElse(defaultMappings.get())
9696

97-
this.attributes { attributes ->
98-
attributes.attribute(MinecraftExtension.Attributes.os, objects.named(OperatingSystemFamily, OperatingSystem.current().familyName))
99-
attributes.attribute(MinecraftExtension.Attributes.mappingsChannel, mappings.channel())
100-
attributes.attribute(MinecraftExtension.Attributes.mappingsVersion, mappings.version())
97+
this.project.configurations.forEach { configuration ->
98+
if (!configuration.canBeDeclared) return
99+
100+
configuration.dependencyConstraints.add(this.project.dependencies.constraints.create(this.delegate) { constraint ->
101+
constraint.attributes { attributes ->
102+
attributes.attribute(MinecraftExtension.Attributes.os, objects.named(OperatingSystemFamily, OperatingSystem.current().familyName))
103+
attributes.attribute(MinecraftExtension.Attributes.mappingsChannel, mappings.channel())
104+
attributes.attribute(MinecraftExtension.Attributes.mappingsVersion, mappings.version())
105+
}
106+
})
107+
}
101108

109+
this.attributes { attributes ->
102110
this.atContainer.orElse(defaultATs).ifPresent { accessTransformers ->
103111
attributes.attribute(accessTransformers.attribute, true)
104112
}

src/main/groovy/net/minecraftforge/gradle/MinecraftExtensionImpl.groovy

Lines changed: 13 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,9 @@ import net.minecraftforge.util.data.json.JsonData
1616
import net.minecraftforge.util.data.json.RunConfig
1717
import org.gradle.api.NamedDomainObjectContainer
1818
import org.gradle.api.Project
19-
import org.gradle.api.artifacts.Configuration
20-
import org.gradle.api.artifacts.Dependency
2119
import org.gradle.api.artifacts.ExternalModuleDependency
2220
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
2321
import org.gradle.api.attributes.Attribute
24-
import org.gradle.api.attributes.AttributeContainer
2522
import org.gradle.api.file.ArchiveOperations
2623
import org.gradle.api.file.DirectoryProperty
2724
import org.gradle.api.file.FileSystemOperations
@@ -33,17 +30,12 @@ import org.gradle.api.initialization.Settings
3330
import org.gradle.api.model.ObjectFactory
3431
import org.gradle.api.plugins.ExtensionAware
3532
import org.gradle.api.plugins.JavaPluginExtension
36-
import org.gradle.api.plugins.PluginAware
3733
import org.gradle.api.provider.MapProperty
3834
import org.gradle.api.provider.Property
3935
import org.gradle.api.provider.Provider
4036
import org.gradle.api.provider.ProviderFactory
41-
import org.gradle.api.reflect.TypeOf
42-
import org.gradle.internal.os.OperatingSystem
43-
import org.gradle.nativeplatform.OperatingSystemFamily
4437

4538
import java.util.concurrent.Callable
46-
import java.util.function.BiFunction
4739

4840
@CompileStatic
4941
@PackageScope final class MinecraftExtensionImpl implements MinecraftExtension {
@@ -193,12 +185,6 @@ import java.util.function.BiFunction
193185
project.afterEvaluate { this.finish(it, flowScope, flowProviders, fileSystemOperations, archiveOperations) }
194186
}
195187

196-
private void applyAttributes(AttributeContainer a) {
197-
a.attribute(Attributes.os, objects.named(OperatingSystemFamily, OperatingSystem.current().familyName))
198-
a.attribute(Attributes.mappingsChannel, MinecraftExtensionImpl.this.mappings.channel())
199-
a.attribute(Attributes.mappingsVersion, MinecraftExtensionImpl.this.mappings.version())
200-
}
201-
202188
private void finish(Project project, FlowScope flowScope, FlowProviders flowProviders, FileSystemOperations fileSystemOperations, ArchiveOperations archiveOperations) {
203189
if (this.minecraftDependencies.isEmpty()) {
204190
MinecraftExtensionImpl.this.problems.reportMissingMinecraftDependency()
@@ -213,25 +199,12 @@ import java.util.function.BiFunction
213199
}
214200
}
215201

216-
project.configurations.configureEach {
217-
if (it.canBeResolved)
218-
it.attributes(this.&applyAttributes)
219-
}
220-
221202
SyncMinecraftMaven.register(project, this.minecraftDependencies)
222203

223-
var repositories = project.extensions.extraProperties.has(EXT_MAVEN_REPOS)
204+
var appliedRepos = project.extensions.extraProperties.has(EXT_MAVEN_REPOS)
224205
? new AppliedRepos(project.extensions.extraProperties.get(EXT_MAVEN_REPOS) as List<? extends MavenArtifactRepository>)
225206
: new AppliedRepos(project.repositories.withType(MavenArtifactRepository))
226-
227-
if (!repositories.mcmaven)
228-
MinecraftExtensionImpl.this.problems.reportMcMavenNotDeclared()
229-
230-
if (!repositories.forge)
231-
MinecraftExtensionImpl.this.problems.reportForgeMavenNotDeclared()
232-
233-
if (!repositories.mclibs)
234-
MinecraftExtensionImpl.this.problems.reportMcLibsMavenNotDeclared()
207+
appliedRepos.check()
235208

236209
var sourceSetsDir = objects.directoryProperty().value(this.layout.buildDirectory.dir('sourceSets'))
237210
this.project.getExtensions().getByType(JavaPluginExtension).sourceSets.configureEach { sourceSet ->
@@ -364,6 +337,17 @@ import java.util.function.BiFunction
364337
this.forge = contains 'maven.minecraftforge.net'
365338
this.mclibs = contains 'libraries.minecraft.net'
366339
}
340+
341+
private void check() {
342+
if (!this.mcmaven)
343+
MinecraftExtensionImpl.this.problems.reportMcMavenNotDeclared()
344+
345+
if (!this.forge)
346+
MinecraftExtensionImpl.this.problems.reportForgeMavenNotDeclared()
347+
348+
if (!this.mclibs)
349+
MinecraftExtensionImpl.this.problems.reportMcLibsMavenNotDeclared()
350+
}
367351
}
368352

369353

0 commit comments

Comments
 (0)