Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ gradle.beforeProject { Project project ->

//@formatter:off
dependencyResolutionManagement.versionCatalogs.register('libs') {
version 'gradleutils', '3.4.5'
version 'gradleutils', '3.4.9'

plugin 'licenser', 'net.minecraftforge.licenser' version '1.2.0' // https://plugins.gradle.org/plugin/net.minecraftforge.licenser
plugin 'gradleutils', 'net.minecraftforge.gradleutils' versionRef 'gradleutils'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@

import org.jspecify.annotations.Nullable;

import java.io.Serializable;

record ForgeGradleSharedData(
@Nullable MinecraftMappingsInternal mappings
) {
) implements Serializable {
static final String NAME = "__fg_shared_data";
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.gradle.api.tasks.TaskProvider;
import org.gradle.jvm.toolchain.JavaLauncher;
import org.gradle.plugins.ide.eclipse.model.EclipseModel;
import org.jspecify.annotations.Nullable;

import javax.inject.Inject;
import java.util.ArrayList;
Expand Down Expand Up @@ -151,21 +152,25 @@ static abstract class ForSettingsImpl extends MinecraftExtensionImpl {
@Inject
public ForSettingsImpl(ForgeGradlePlugin plugin, Settings settings) {
super(plugin);
settings.getGradle().settingsEvaluated(this::finish);

// Add component rules, even if they aren't used
// RulesMode.PREFER_PROJECT && !projectRules.isEmpty() -> use projectRules
applyComponentRules(settings.getDependencyResolutionManagement().getComponents());

// Add shared data to each project before it is evaluated
var sharedData = new ForgeGradleSharedData(
this.getMappingsProperty().getOrNull()
);
settings.getGradle().getLifecycle().beforeProject(project -> beforeProject(project, sharedData));
}

private void finish(Settings settings) {
// This has to be static for serialization / isolation purposes
private static void beforeProject(Project project, ForgeGradleSharedData sharedData) {
// Attach shared data to Gradle instance (accessible to project)
settings.getGradle().getExtensions().add(
project.getExtensions().add(
ForgeGradleSharedData.NAME,
new ForgeGradleSharedData(
this.getMappingsProperty().getOrNull()
)
sharedData
);

// Add component rules, even if they aren't used
// RulesMode.PREFER_PROJECT && !projectRules.isEmpty() -> use projectRules
applyComponentRules(settings.getDependencyResolutionManagement().getComponents());
}
}

Expand Down Expand Up @@ -214,7 +219,7 @@ public ForProjectImpl(ForgeGradlePlugin plugin) {
});
}

var sharedData = getProject().getGradle().getExtensions().findByType(ForgeGradleSharedData.class);
var sharedData = getProject().getExtensions().findByType(ForgeGradleSharedData.class);
if (sharedData != null) {
this.getMappingsProperty().value(sharedData.mappings());
}
Expand Down