Skip to content

Commit 477b868

Browse files
committed
Add net.minecraftforge.gradle.repo.attach flag to disable automatically attaching Forge/Mojang/Central mavens to let modder controll it.
1 parent 8a40eaf commit 477b868

File tree

6 files changed

+97
-45
lines changed

6 files changed

+97
-45
lines changed

src/common/java/net/minecraftforge/gradle/common/util/EnvironmentChecks.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class EnvironmentChecks {
3838
private static final String RECOMPILE_ARGS_VARIABLE = "net.minecraftforge.gradle.repo.recompile.args";
3939
private static final String ENABLE_RECOMPILE_FORK_VARIABLE = "net.minecraftforge.gradle.repo.recompile.fork";
4040
private static final String RECOMPILE_FORK_ARGS_VARIABLE = "net.minecraftforge.gradle.repo.recompile.fork.args";
41+
private static final String AUTOMATIC_ATTACH_REPOS_VARIABLE = "net.minecraftforge.gradle.repo.attach";
4142

4243
private static final EnvironmentFlag ENABLE_CERTIFICATE_CHECK = new EnvironmentFlag(ENABLE_CERTIFICATE_CHECK_VARIABLE, true);
4344
private static final EnvironmentFlag ENABLE_GRADLE_CHECK = new EnvironmentFlag(ENABLE_GRADLE_CHECK_VARIABLE, true);
@@ -116,6 +117,16 @@ public class EnvironmentChecks {
116117
*/
117118
public static final EnvironmentValue RECOMPILE_FORK_ARGS = new EnvironmentValue(RECOMPILE_FORK_ARGS_VARIABLE, null);
118119

120+
/**
121+
* This controls if the Forge, MavenCentral, and Mojang repositories are automatically attached to the project.
122+
* It is usually done during afterEvaluate, but can be disabled if you want to manage yourself.
123+
* <p>
124+
* Default is true.
125+
* <p>
126+
* Environment Flag: {@value #AUTOMATIC_ATTACH_REPOS_VARIABLE}
127+
*/
128+
public static final EnvironmentFlag AUTOMATIC_ATTACH_REPOS = new EnvironmentFlag(AUTOMATIC_ATTACH_REPOS_VARIABLE, true);
129+
119130
private static final Marker ENV_CHECK = MarkerFactory.getMarker("forgegradle.env_check");
120131

121132
public static final class EnvironmentFlag {

src/common/java/net/minecraftforge/gradle/common/util/MinecraftExtension.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55

66
package net.minecraftforge.gradle.common.util;
77

8+
import org.gradle.api.Action;
89
import org.gradle.api.NamedDomainObjectContainer;
910
import org.gradle.api.Project;
11+
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
1012
import org.gradle.api.file.ConfigurableFileCollection;
1113
import org.gradle.api.provider.Property;
1214
import org.gradle.api.provider.Provider;
@@ -146,4 +148,36 @@ public void accessTransformer(Object file) {
146148
* Default: {@code false}
147149
*/
148150
public abstract Property<Boolean> getGenerateRunFolders();
151+
152+
/**
153+
* Returns an action that can be used to configure the Forge maven.
154+
* This is typically automatically added by the FG plugin. But if
155+
* {@link net.minecraftforge.gradle.common.util.EnvironmentChecks#AUTOMATIC_ATTACH_REPOS AUTOMATIC_ATTACH_REPOS}
156+
* is disabled you'll have to do it yourself.
157+
*
158+
* <pre>{@code
159+
* repositories {
160+
* maven minecraft.forgeMaven
161+
* }
162+
* }</pre>
163+
*/
164+
public Action<? super MavenArtifactRepository> getForgeMaven() {
165+
return Utils.forgeMaven();
166+
}
167+
168+
/**
169+
* Returns an action that can be used to configure the Mojang maven.
170+
* This is typically automatically added by the FG plugin. But if
171+
* {@link net.minecraftforge.gradle.common.util.EnvironmentChecks#AUTOMATIC_ATTACH_REPOS AUTOMATIC_ATTACH_REPOS}
172+
* is disabled you'll have to do it yourself.
173+
*
174+
* <pre>{@code
175+
* repositories {
176+
* maven minecraft.mojangMaven
177+
* }
178+
* }</pre>
179+
*/
180+
public Action<? super MavenArtifactRepository> getMojangMaven() {
181+
return Utils.mojangMaven();
182+
}
149183
}

src/common/java/net/minecraftforge/gradle/common/util/Utils.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616

1717
import org.apache.commons.io.FileUtils;
1818
import org.apache.commons.io.IOUtils;
19+
import org.gradle.api.Action;
1920
import org.gradle.api.Project;
2021
import org.gradle.api.Task;
2122
import org.gradle.api.artifacts.repositories.ArtifactRepository;
23+
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
24+
import org.gradle.api.artifacts.repositories.MavenArtifactRepository.MetadataSources;
2225
import org.gradle.api.plugins.JavaPluginExtension;
2326
import org.gradle.api.tasks.SourceSet;
2427
import org.gradle.api.tasks.TaskProvider;
@@ -97,6 +100,31 @@ public class Utils {
97100
public static final long ZIPTIME = 628041600000L;
98101
public static final TimeZone GMT = TimeZone.getTimeZone("GMT");
99102

103+
public static final Action<? super MavenArtifactRepository> forgeMaven() {
104+
return e -> {
105+
e.setUrl(Utils.FORGE_MAVEN);
106+
e.metadataSources(m -> {
107+
m.gradleMetadata();
108+
m.mavenPom();
109+
m.artifact();
110+
});
111+
};
112+
}
113+
114+
public static final Action<? super MavenArtifactRepository> mojangMaven() {
115+
return e -> {
116+
e.setUrl(Utils.MOJANG_MAVEN);
117+
e.metadataSources(MetadataSources::artifact);
118+
filterForge().execute(e);
119+
};
120+
}
121+
122+
public static final Action<? super MavenArtifactRepository> filterForge() {
123+
return e -> {
124+
e.mavenContent(c -> c.excludeGroup("net.minecraftforge"));
125+
};
126+
}
127+
100128
private static final String art(String name, String ver, String classifier) {
101129
return "net.minecraftforge:" + name + ':' + ver + ':' + classifier;
102130
}

src/mcp/java/net/minecraftforge/gradle/mcp/MCPPlugin.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
package net.minecraftforge.gradle.mcp;
77

88
import net.minecraftforge.gradle.common.util.Artifact;
9+
import net.minecraftforge.gradle.common.util.EnvironmentChecks;
910
import net.minecraftforge.gradle.common.util.Utils;
1011
import net.minecraftforge.gradle.mcp.tasks.DownloadMCPConfig;
1112
import net.minecraftforge.gradle.mcp.tasks.SetupMCP;
1213

1314
import org.gradle.api.Plugin;
1415
import org.gradle.api.Project;
15-
import org.gradle.api.artifacts.repositories.MavenArtifactRepository.MetadataSources;
1616
import org.gradle.api.plugins.JavaPlugin;
1717
import org.gradle.api.tasks.TaskProvider;
1818

@@ -40,20 +40,12 @@ public void apply(@Nonnull Project project) {
4040
});
4141

4242
project.afterEvaluate(p -> {
43-
//Add Known repos
44-
project.getRepositories().maven(e -> {
45-
e.setUrl(Utils.MOJANG_MAVEN);
46-
e.metadataSources(MetadataSources::artifact);
47-
});
48-
project.getRepositories().maven(e -> {
49-
e.setUrl(Utils.FORGE_MAVEN);
50-
e.metadataSources(m -> {
51-
m.gradleMetadata();
52-
m.mavenPom();
53-
m.artifact();
54-
});
55-
});
56-
project.getRepositories().mavenCentral(e -> e.mavenContent(c -> c.excludeGroup("net.minecraftforge"))); //Needed for MCP Deps; we do not publish any artufacts to maven central
43+
if (EnvironmentChecks.AUTOMATIC_ATTACH_REPOS.isEnabled()) {
44+
//Add Known repos
45+
project.getRepositories().maven(Utils.mojangMaven());
46+
project.getRepositories().maven(Utils.forgeMaven());
47+
project.getRepositories().mavenCentral(Utils.filterForge()); //Needed for MCP Deps; we do not publish any artufacts to maven central
48+
}
5749
});
5850
}
5951
}

src/patcher/java/net/minecraftforge/gradle/patcher/PatcherPlugin.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -128,23 +128,16 @@ public void apply(@Nonnull Project project) {
128128
final TaskProvider<DefaultTask> release = tasks.register("release", DefaultTask.class);
129129

130130
//Add Known repos
131-
project.getRepositories().maven(e -> {
132-
e.setUrl(Utils.FORGE_MAVEN);
133-
e.metadataSources(m -> {
134-
m.gradleMetadata();
135-
m.mavenPom();
136-
m.artifact();
137-
});
138-
});
131+
if (EnvironmentChecks.AUTOMATIC_ATTACH_REPOS.isEnabled())
132+
project.getRepositories().maven(Utils.forgeMaven());
139133

140134
new BaseRepo.Builder()
141135
.add(MCPRepo.create(project))
142136
.add(MinecraftRepo.create(project))
143137
.attach(project);
144-
project.getRepositories().maven(e -> {
145-
e.setUrl(Utils.MOJANG_MAVEN);
146-
e.metadataSources(MetadataSources::artifact);
147-
});
138+
139+
if (EnvironmentChecks.AUTOMATIC_ATTACH_REPOS.isEnabled())
140+
project.getRepositories().maven(Utils.mojangMaven());
148141

149142
release.configure(task -> task.dependsOn(sourcesJar, universalJar, userdevJar));
150143

src/userdev/java/net/minecraftforge/gradle/userdev/UserDevPlugin.java

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -245,14 +245,8 @@ public void apply(@Nonnull Project project) {
245245
throw new IllegalStateException("Missing '" + minecraft.getName() + "' dependency.");
246246
}
247247

248-
project.getRepositories().maven(e -> {
249-
e.setUrl(Utils.FORGE_MAVEN);
250-
e.metadataSources(m -> {
251-
m.gradleMetadata();
252-
m.mavenPom();
253-
m.artifact();
254-
});
255-
});
248+
if (EnvironmentChecks.AUTOMATIC_ATTACH_REPOS.isEnabled())
249+
project.getRepositories().maven(Utils.forgeMaven());
256250

257251
remapper.attachMappings(extension.getMappings().get());
258252

@@ -267,11 +261,11 @@ public void apply(@Nonnull Project project) {
267261
.add(MinecraftRepo.create(project)) //Provides vanilla extra/slim/data jars. These don't care about OBF names.
268262
.attach(project);
269263

270-
project.getRepositories().maven(e -> {
271-
e.setUrl(Utils.MOJANG_MAVEN);
272-
e.metadataSources(MetadataSources::artifact);
273-
});
274-
project.getRepositories().mavenCentral(e -> e.mavenContent(c -> c.excludeGroup("net.minecraftforge"))); //Needed for MCP Deps; we do not publish any artufacts to maven central
264+
if (EnvironmentChecks.AUTOMATIC_ATTACH_REPOS.isEnabled()) {
265+
project.getRepositories().maven(Utils.mojangMaven());
266+
project.getRepositories().mavenCentral(Utils.filterForge()); //Needed for MCP Deps; we do not publish any artifacts to maven central
267+
}
268+
275269
mcrepo.validate(minecraft, extension.getRuns().getAsMap(), extractNatives.get(), downloadAssets.get(), createSrgToMcp.get()); //This will set the MC_VERSION property.
276270

277271
String mcVer = (String) project.getExtensions().getExtraProperties().get("MC_VERSION");
@@ -282,11 +276,11 @@ public void apply(@Nonnull Project project) {
282276

283277
// Register reobfJar for the 'jar' task
284278
if (extension.getReobf()) {
285-
reobfExtension.create(JavaPlugin.JAR_TASK_NAME);
286-
project.getTasks().withType(JarJar.class).all(jarJar -> {
287-
logger.info("Creating reobfuscation task for JarJar task: {}", jarJar.getName());
288-
reobfExtension.create(jarJar.getName()).setOnlyIf(task -> jarJar.isEnabled());
289-
});
279+
reobfExtension.create(JavaPlugin.JAR_TASK_NAME);
280+
project.getTasks().withType(JarJar.class).all(jarJar -> {
281+
logger.info("Creating reobfuscation task for JarJar task: {}", jarJar.getName());
282+
reobfExtension.create(jarJar.getName()).setOnlyIf(task -> jarJar.isEnabled());
283+
});
290284
}
291285

292286
String assetIndex = mcVer;

0 commit comments

Comments
 (0)