Skip to content

Commit 423214c

Browse files
committed
Move all internal/impl classes to separate package (#1000)
Also, hide MinecraftMappings implementation and include built-in null-checks.
1 parent d720fec commit 423214c

40 files changed

+303
-303
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ gradlePlugin {
7575

7676
plugins.register('forgegradle') {
7777
id = 'net.minecraftforge.gradle'
78-
implementationClass = 'net.minecraftforge.gradle.ForgeGradlePlugin'
78+
implementationClass = 'net.minecraftforge.gradle.internal.ForgeGradlePlugin'
7979
displayName = gradleutils.displayName.get()
8080
description = project.description
8181
tags = ['minecraftforge', 'minecraft']

src/main/java/net/minecraftforge/gradle/ClosureOwner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ public interface ClosureOwner<D> {
2828
/// [ExternalModuleDependency].
2929
///
3030
/// @see ClosureOwner
31-
sealed interface MinecraftDependency extends ClosureOwner<net.minecraftforge.gradle.MinecraftDependency>, net.minecraftforge.gradle.MinecraftDependency, ExternalModuleDependency permits ClosureOwnerInternal.MinecraftDependency { }
31+
interface MinecraftDependency extends ClosureOwner<net.minecraftforge.gradle.MinecraftDependency>, net.minecraftforge.gradle.MinecraftDependency, ExternalModuleDependency { }
3232

3333
/// A closure owner that delegates to [net.minecraftforge.gradle.MinecraftDependencyWithAccessTransformers] and
3434
/// [ExternalModuleDependency].
3535
///
3636
/// @see ClosureOwner
37-
sealed interface MinecraftDependencyWithAccessTransformers extends ClosureOwner<net.minecraftforge.gradle.MinecraftDependencyWithAccessTransformers>, net.minecraftforge.gradle.MinecraftDependencyWithAccessTransformers, ExternalModuleDependency permits ClosureOwnerInternal.MinecraftDependencyWithAccessTransformers { }
37+
interface MinecraftDependencyWithAccessTransformers extends ClosureOwner<net.minecraftforge.gradle.MinecraftDependencyWithAccessTransformers>, net.minecraftforge.gradle.MinecraftDependencyWithAccessTransformers, ExternalModuleDependency { }
3838
}

src/main/java/net/minecraftforge/gradle/ForgeGradleExtension.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
/// The ForgeGradle extension contains a handful of helpers that are not directly related to development involving
1212
/// Minecraft.
13-
public sealed interface ForgeGradleExtension permits ForgeGradleExtensionInternal {
13+
public interface ForgeGradleExtension {
1414
/// The name for this extension in Gradle.
1515
String NAME = "fg";
1616

@@ -28,9 +28,7 @@ public sealed interface ForgeGradleExtension permits ForgeGradleExtensionInterna
2828
*
2929
* @return The closure
3030
*/
31-
default Action<MavenArtifactRepository> getForgeMaven() {
32-
return ForgeGradleExtensionInternal.forgeMaven;
33-
}
31+
Action<MavenArtifactRepository> getForgeMaven();
3432

3533
/**
3634
* A closure for the Minecraft libraries maven to be passed into
@@ -45,7 +43,5 @@ default Action<MavenArtifactRepository> getForgeMaven() {
4543
*
4644
* @return The closure
4745
*/
48-
default Action<MavenArtifactRepository> getMinecraftLibsMaven() {
49-
return ForgeGradleExtensionInternal.minecraftLibsMaven;
50-
}
46+
Action<MavenArtifactRepository> getMinecraftLibsMaven();
5147
}

src/main/java/net/minecraftforge/gradle/MinecraftDependency.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66

77
/// The Minecraft dependency contains information essential for how the
88
/// {@linkplain MinecraftExtensionForProject minecraft extension} processes Minecraft dependencies.
9-
public sealed interface MinecraftDependency extends MinecraftMappingsContainer permits ClosureOwner.MinecraftDependency, MinecraftDependencyWithAccessTransformers, MinecraftDependencyInternal { }
9+
public interface MinecraftDependency extends MinecraftMappingsContainer { }

src/main/java/net/minecraftforge/gradle/MinecraftDependencyWithAccessTransformers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/// AccessTransformers.
1111
///
1212
/// @see MinecraftDependency
13-
public sealed interface MinecraftDependencyWithAccessTransformers extends MinecraftDependency permits ClosureOwner.MinecraftDependencyWithAccessTransformers, MinecraftDependencyInternal.WithAccessTransformers {
13+
public interface MinecraftDependencyWithAccessTransformers extends MinecraftDependency {
1414
/// The default path, from the source set's [resources][org.gradle.api.tasks.SourceSet#getResources()], for the
1515
/// AccessTransformers config to be located in.
1616
String DEFAULT_PATH = "META-INF/accesstransformer.cfg";

src/main/java/net/minecraftforge/gradle/MinecraftExtension.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import org.gradle.api.artifacts.dsl.RepositoryHandler;
1010
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
1111
import org.gradle.api.attributes.Attribute;
12-
import org.gradle.nativeplatform.OperatingSystemFamily;
1312

1413
/// The main extension for ForgeGradle, where the Minecraft dependency resolution takes place.
1514
///
@@ -20,9 +19,9 @@
2019
/// supported.
2120
/// - The resulting Minecraft dependency is created by the Minecraft Mavenizer. It is not merely a dependency
2221
/// transformation, which means that it cannot use file and project dependencies to generate the Minecraft artifacts.
23-
/// - Attempting to provide a non-module dependency to [MinecraftExtensionForProject#dependency(Object)], will cause the
24-
/// build to fail.
25-
public sealed interface MinecraftExtension extends MinecraftMappingsContainer permits MinecraftExtensionInternal, MinecraftExtensionForProject {
22+
/// - Attempting to provide a non-module dependency to [MinecraftExtensionForProject#dependency(Object)], will cause
23+
/// the build to fail.
24+
public interface MinecraftExtension extends MinecraftMappingsContainer {
2625
/// The name for this extension in Gradle.
2726
String NAME = "minecraft";
2827

@@ -68,30 +67,34 @@ default MavenArtifactRepository mavenizer(RepositoryHandler repositories) {
6867
* @return The attributes object
6968
* @see Attributes
7069
*/
71-
default Attributes getAttributes() {
72-
return MinecraftExtensionInternal.AttributesInternal.INSTANCE;
73-
};
70+
Attributes getAttributes();
7471

7572
/// This interface contains the attributes used by the [Minecraft][MinecraftExtension] extension for resolving the
7673
/// Minecraft and deobfuscated dependencies.
7774
///
7875
/// @see MinecraftExtension#getAttributes()
79-
sealed interface Attributes permits MinecraftExtensionInternal.AttributesInternal {
80-
/// The [operating system family][OperatingSystemFamily] of the project's host.
76+
interface Attributes {
77+
/// The operating system of the project's host.
8178
///
8279
/// This is used to filter natives from the Minecraft repo.
83-
Attribute<String> os = Attribute.of("net.minecraftforge.native.operatingSystem", String.class);
80+
///
81+
/// @return The operating system attribute
82+
Attribute<String> getOs();
83+
8484
/// The requested mappings channel of the project.
8585
///
86-
/// This is determined using [MinecraftMappings#channel()] via [#getMappings()]
86+
/// This is determined using [MinecraftMappings#getChannel()] via [#getMappings()]
8787
///
88-
/// @see #mappingsVersion
89-
Attribute<String> mappingsChannel = Attribute.of("net.minecraftforge.mappings.channel", String.class);
88+
/// @return The mappings channel attribute
89+
/// @see #getMappingsVersion()
90+
Attribute<String> getMappingsChannel();
91+
9092
/// The requested mappings version of the project.
9193
///
92-
/// This is determined using [MinecraftMappings#version()] via [#getMappings()]
94+
/// This is determined using [MinecraftMappings#getVersion()] via [#getMappings()]
9395
///
94-
/// @see #mappingsChannel
95-
Attribute<String> mappingsVersion = Attribute.of("net.minecraftforge.mappings.version", String.class);
96+
/// @return The mappings channel version
97+
/// @see #getMappingsChannel()
98+
Attribute<String> getMappingsVersion();
9699
}
97100
}

src/main/java/net/minecraftforge/gradle/MinecraftExtensionForProject.java

Lines changed: 1 addition & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,13 @@
1212
import org.gradle.api.Action;
1313
import org.gradle.api.NamedDomainObjectContainer;
1414
import org.gradle.api.artifacts.ExternalModuleDependency;
15-
import org.gradle.api.provider.Provider;
16-
import org.gradle.api.provider.ProviderConvertible;
1715

1816
/// [Project][org.gradle.api.Project]-specific additions for the Minecraft extension. These will be accessible from the
1917
/// `minecraft` DSL object within your project's buildscript.
2018
///
2119
/// @param <T> The type of closure owner used for [#dependency]
2220
/// @see MinecraftExtension
23-
sealed public interface MinecraftExtensionForProject<T extends ClosureOwner<?>> extends MinecraftExtension permits MinecraftExtensionForProjectWithAccessTransformers, MinecraftExtensionInternal.ForProject {
21+
public interface MinecraftExtensionForProject<T extends ClosureOwner<?>> extends MinecraftExtension {
2422
/// The collection of Slime Launcher options with which to create the launcher tasks.
2523
///
2624
/// @return The collection of run task options
@@ -78,82 +76,4 @@ default ExternalModuleDependency dependency(Object value, Action<? super T> acti
7876
default ExternalModuleDependency dependency(Object value) {
7977
return this.dependency(value, Closures.empty(this));
8078
}
81-
82-
/// Creates (or marks if existing) the given dependency as a Minecraft dependency and configures it with the given
83-
/// closure.
84-
///
85-
/// @param value The dependency
86-
/// @param closure The closure to configure the dependency with
87-
/// @return The dependency
88-
/// @see <a href="https://docs.gradle.org/current/userguide/declaring_dependencies.html">Declaring Dependencies
89-
/// in Gradle</a>
90-
default ExternalModuleDependency dependency(
91-
Provider<?> value,
92-
@DelegatesTo(ExternalModuleDependency.class)
93-
@ClosureParams(value = FromString.class, options = "T")
94-
Closure<?> closure
95-
) {
96-
return this.dependency(value.get(), closure);
97-
}
98-
99-
/// Creates (or marks if existing) the given dependency as a Minecraft dependency and applies the given action to
100-
/// it.
101-
///
102-
/// @param value The dependency
103-
/// @param action The action to apply to the dependency attributes
104-
/// @return The dependency
105-
/// @see <a href="https://docs.gradle.org/current/userguide/declaring_dependencies.html">Declaring Dependencies
106-
/// in Gradle</a>
107-
default ExternalModuleDependency dependency(Provider<?> value, Action<? super T> action) {
108-
return this.dependency(value, Closures.action(this, action));
109-
}
110-
111-
/// Creates (or marks if existing) the given dependency as a Minecraft dependency.
112-
///
113-
/// @param value The dependency
114-
/// @return The dependency
115-
/// @see <a href="https://docs.gradle.org/current/userguide/declaring_dependencies.html">Declaring Dependencies
116-
/// in Gradle</a>
117-
default ExternalModuleDependency dependency(Provider<?> value) {
118-
return this.dependency(value, Closures.empty(this));
119-
}
120-
121-
/// Creates (or marks if existing) the given dependency as a Minecraft dependency and configures it with the given
122-
/// closure.
123-
///
124-
/// @param value The dependency
125-
/// @param closure The closure to configure the dependency with
126-
/// @return The dependency
127-
/// @see <a href="https://docs.gradle.org/current/userguide/declaring_dependencies.html">Declaring Dependencies
128-
/// in Gradle</a>
129-
default ExternalModuleDependency dependency(
130-
ProviderConvertible<?> value,
131-
@DelegatesTo(ExternalModuleDependency.class)
132-
@ClosureParams(value = FromString.class, options = "T")
133-
Closure<?> closure
134-
) {
135-
return this.dependency(value.asProvider(), closure);
136-
}
137-
138-
/// Creates (or marks if existing) the given dependency as a Minecraft dependency and applies the given action to
139-
/// it.
140-
///
141-
/// @param value The dependency
142-
/// @param action The action to apply to the dependency attributes
143-
/// @return The dependency
144-
/// @see <a href="https://docs.gradle.org/current/userguide/declaring_dependencies.html">Declaring Dependencies
145-
/// in Gradle</a>
146-
default ExternalModuleDependency dependency(ProviderConvertible<?> value, Action<? super T> action) {
147-
return this.dependency(value, Closures.action(this, action));
148-
}
149-
150-
/// Creates (or marks if existing) the given dependency as a Minecraft dependency.
151-
///
152-
/// @param value The dependency
153-
/// @return The dependency
154-
/// @see <a href="https://docs.gradle.org/current/userguide/declaring_dependencies.html">Declaring Dependencies
155-
/// in Gradle</a>
156-
default ExternalModuleDependency dependency(ProviderConvertible<?> value) {
157-
return this.dependency(value, Closures.empty(this));
158-
}
15979
}

src/main/java/net/minecraftforge/gradle/MinecraftExtensionForProjectWithAccessTransformers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/// the `net.minecraftforge.accesstransformers` plugin has been applied before ForgeGradle.
1111
///
1212
/// @see MinecraftExtensionForProject
13-
public sealed interface MinecraftExtensionForProjectWithAccessTransformers extends MinecraftExtensionForProject<ClosureOwner.MinecraftDependencyWithAccessTransformers> permits MinecraftExtensionInternal.ForProject.WithAccessTransformers {
13+
public interface MinecraftExtensionForProjectWithAccessTransformers extends MinecraftExtensionForProject<ClosureOwner.MinecraftDependencyWithAccessTransformers> {
1414
/// The path, relative to the related Minecraft dependency's [org.gradle.api.tasks.SourceSet#getResources()], to the
1515
/// AccessTransformers config file to use. If set, this will recursively enable access transformers for all
1616
/// Minecraft dependencies in the project.

src/main/java/net/minecraftforge/gradle/MinecraftExtensionInternal.java

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/main/java/net/minecraftforge/gradle/MinecraftMappings.java

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,19 @@
44
*/
55
package net.minecraftforge.gradle;
66

7-
import org.jetbrains.annotations.UnknownNullability;
8-
97
import java.io.Serializable;
10-
import java.util.Objects;
118

129
/// The mappings used for the Minecraft dependency.
1310
///
14-
/// @param channel The channel to use (i.e. `'official'`)
15-
/// @param version The version to use (i.e. `'1.21.5'`)
16-
/// @see MinecraftExtensionForProject#mappings(String, String)
17-
public record MinecraftMappings(String channel, String version) implements Serializable {
18-
/// Creates a new Mappings object.
19-
///
20-
/// Both the channel and version are required, and cannot be null.
11+
/// @see MinecraftMappingsContainer#mappings(String, String)
12+
public interface MinecraftMappings extends Serializable {
13+
/// Gets the channel for these mappings (i.e. `official`)
2114
///
22-
/// @param channel The channel to use
23-
/// @param version The version to use
24-
/// @throws NullPointerException If any parameter is `null`
25-
public MinecraftMappings(String channel, String version) {
26-
this.channel = Objects.requireNonNull(channel, "Mappings channel cannot be null");
27-
this.version = Objects.requireNonNull(version, "Mappings version cannot be null");
28-
}
15+
/// @return The channel
16+
String getChannel();
2917

30-
static String checkParam(ForgeGradleProblems problems, @UnknownNullability Object param, String name) {
31-
if (param == null)
32-
throw problems.nullMappingsParam(name);
33-
34-
return param.toString();
35-
}
18+
/// Gets the version for these mappings (i.e. `1.21.10`)
19+
///
20+
/// @return The version
21+
String getVersion();
3622
}

0 commit comments

Comments
 (0)