Skip to content

Commit 17c24d0

Browse files
committed
Force IntelliJ to "download" our sources variant, fixes #1008
Also bumps minimum required Gradle to 9.3.0-rc-1, for usage of `AttributeContainer#named`.
1 parent 3656cab commit 17c24d0

File tree

4 files changed

+32
-3
lines changed

4 files changed

+32
-3
lines changed

gradle/wrapper/gradle-wrapper.jar

176 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-rc-1-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

settings.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ dependencyResolutionManagement.versionCatalogs.register('libs') {
3535
// Gradle API
3636
// Original: https://github.com/remal-gradle-api/packages/packages/760197?version=9.0.0
3737
// Mirror: https://repos.moddinglegacy.com/#/modding-legacy/name/remal/gradle-api/gradle-api/9.0.0
38-
version 'gradle', '9.2.0'
38+
version 'gradle', '9.3.0-rc-1'
3939
library 'gradle', 'name.remal.gradle-api', 'gradle-api' versionRef 'gradle'
4040

4141
// GradleUtils Shared Base
@@ -45,7 +45,7 @@ dependencyResolutionManagement.versionCatalogs.register('libs') {
4545
// https://plugins.gradle.org/plugin/net.minecraftforge.accesstransformers
4646
library 'accesstransformers-gradle', 'net.minecraftforge.accesstransformers', 'net.minecraftforge.accesstransformers.gradle.plugin' version '5.0.1'
4747

48-
library 'utils-data', 'net.minecraftforge', 'json-data-utils' version '0.4.0' // https://files.minecraftforge.net/net/minecraftforge/json-data-utils/index.html
48+
library 'utils-data', 'net.minecraftforge', 'json-data-utils' version '0.4.1' // https://files.minecraftforge.net/net/minecraftforge/json-data-utils/index.html
4949
library 'utils-os', 'net.minecraftforge', 'os-utils' version '0.1.0' // https://files.minecraftforge.net/net/minecraftforge/os-utils/index.html
5050
library 'utils-hash', 'net.minecraftforge', 'hash-utils' version '0.1.12' // https://files.minecraftforge.net/net/minecraftforge/hash-utils/index.html
5151
library 'utils-download', 'net.minecraftforge', 'download-utils' version '0.4.0' // https://files.minecraftforge.net/net/minecraftforge/download-utils/index.html

src/main/java/net/minecraftforge/gradle/internal/MinecraftExtensionImpl.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import org.gradle.api.artifacts.ExternalModuleDependency;
2626
import org.gradle.api.artifacts.ExternalModuleDependencyBundle;
2727
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
28+
import org.gradle.api.attributes.Category;
29+
import org.gradle.api.attributes.DocsType;
2830
import org.gradle.api.file.DirectoryProperty;
2931
import org.gradle.api.file.ProjectLayout;
3032
import org.gradle.api.flow.FlowProviders;
@@ -247,6 +249,33 @@ private void finish(Project project) {
247249
if (mavenizer == null) continue;
248250

249251
syncMavenizer.configure(task -> task.dependsOn(mavenizer));
252+
253+
var dependency = minecraftDependency.asDependency();
254+
if (dependency == null) continue;
255+
256+
// See https://github.com/MinecraftForge/ForgeGradle/issues/1008#issuecomment-3623727384
257+
// Basically, if IntelliJ can't immediately find a sources JAR next to the main jar, it tries to use this scuffed task
258+
// Intercept the configuration that the task uses and replace any dependencies we have with our own
259+
project.getConfigurations().named(name -> name.startsWith("downloadArtifact_")).configureEach(configuration -> {
260+
var itor = configuration.getDependencies().iterator();
261+
while (itor.hasNext()) {
262+
var existing = itor.next();
263+
if (!Objects.equals(dependency.getGroup(), existing.getGroup())
264+
|| !dependency.getName().equals(existing.getName())
265+
|| !Objects.equals(dependency.getVersion(), existing.getVersion()))
266+
continue;
267+
268+
itor.remove();
269+
var replacement = dependency.copy();
270+
replacement.attributes(a -> {
271+
a.attribute(Category.CATEGORY_ATTRIBUTE, a.named(Category.class, Category.DOCUMENTATION));
272+
a.attribute(DocsType.DOCS_TYPE_ATTRIBUTE, a.named(DocsType.class, DocsType.SOURCES));
273+
});
274+
configuration.withDependencies(dependencies ->
275+
dependencies.add(replacement)
276+
);
277+
}
278+
});
250279
}
251280

252281
project.getPluginManager().withPlugin("eclipse", eclipsePlugin -> {

0 commit comments

Comments
 (0)