Skip to content

Commit 9d3a358

Browse files
committed
Continue working on using neoforge separately in dev.
1 parent 2aeb2b5 commit 9d3a358

File tree

11 files changed

+41
-39
lines changed

11 files changed

+41
-39
lines changed

src/main/java/net/neoforged/moddevgradle/internal/ArtifactNamingStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ static ArtifactNamingStrategy createVanilla(String version) {
1313
}
1414

1515
static ArtifactNamingStrategy createVanillaPatched(String loaderVersion) {
16-
return artifact -> "vanilla-patched-%s%s.jar".formatted(loaderVersion, artifact.defaultSuffix);
16+
return artifact -> "minecraft-patched-%s%s.jar".formatted(loaderVersion, artifact.defaultSuffix);
1717
}
1818

1919
static ArtifactNamingStrategy createNeoForge(VersionCapabilitiesInternal versionCapabilities, String loader, String version) {

src/main/java/net/neoforged/moddevgradle/internal/ModDevArtifactsWorkflow.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,11 @@ public static ModDevArtifactsWorkflow create(Project project,
141141

142142
Function<WorkflowArtifact, Provider<RegularFile>> artifactPathStrategy = artifact -> artifactsBuildDir.map(dir -> dir.file(artifactNamingStrategy.getFilename(artifact)));
143143

144-
if (moddingDependencies.gameLibrariesContainUniversalJar()) {
145-
task.getPutNeoForgeInTheMcJar().set(false);
146-
}
144+
task.getIncludeNeoForgeInMainArtifact().set(versionCapabilities.needsNeoForgeInMinecraftJar());
147145
task.getCompiledArtifact().set(artifactPathStrategy.apply(WorkflowArtifact.COMPILED));
148146
task.getCompiledWithSourcesArtifact().set(artifactPathStrategy.apply(WorkflowArtifact.COMPILED_WITH_SOURCES));
149147
task.getSourcesArtifact().set(artifactPathStrategy.apply(WorkflowArtifact.SOURCES));
150-
if (!moddingDependencies.gameLibrariesContainUniversalJar()) {
148+
if (versionCapabilities.needsNeoForgeInMinecraftJar()) {
151149
task.getResourcesArtifact().set(artifactPathStrategy.apply(WorkflowArtifact.CLIENT_RESOURCES));
152150
}
153151

@@ -188,8 +186,10 @@ public static ModDevArtifactsWorkflow create(Project project,
188186
config.setCanBeConsumed(false);
189187

190188
config.getDependencies().addLater(minecraftClassesDependency);
191-
if (!moddingDependencies.gameLibrariesContainUniversalJar()) {
189+
if (versionCapabilities.needsNeoForgeInMinecraftJar()) {
192190
config.getDependencies().addLater(createArtifacts.map(task -> project.files(task.getResourcesArtifact())).map(dependencyFactory::create));
191+
} else {
192+
config.getDependencies().add(moddingDependencies.neoForgeDependency());
193193
}
194194
// Technically, the Minecraft dependencies do not strictly need to be on the classpath because they are pulled from the legacy class path.
195195
// However, we do it anyway because this matches production environments, and allows launch proxies such as DevLogin to use Minecraft's libraries.
@@ -204,6 +204,9 @@ public static ModDevArtifactsWorkflow create(Project project,
204204
config.setCanBeConsumed(false);
205205
config.getDependencies().addLater(minecraftClassesDependency);
206206
config.getDependencies().add(moddingDependencies.gameLibrariesDependency());
207+
if (!versionCapabilities.needsNeoForgeInMinecraftJar()) {
208+
config.getDependencies().add(moddingDependencies.neoForgeDependency());
209+
}
207210
});
208211

209212
// For IDEs that support it, link the source/binary artifacts if we use separated ones

src/main/java/net/neoforged/moddevgradle/internal/ModDevPlugin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ public void enable(
8282
// It's helpful to be able to differentiate the Vanilla jar and the NeoForge jar in classic multiloader setups.
8383
if (neoForge == null) {
8484
artifactNamingStrategy = ArtifactNamingStrategy.createVanilla(neoFormVersion);
85-
} else if (dependencies.gameLibrariesContainUniversalJar()) {
86-
artifactNamingStrategy = ArtifactNamingStrategy.createVanillaPatched(neoForgeVersion);
87-
} else {
85+
} else if (versionCapabilities.needsNeoForgeInMinecraftJar()) {
8886
artifactNamingStrategy = ArtifactNamingStrategy.createNeoForge(versionCapabilities, "neoforge", neoForgeVersion);
87+
} else {
88+
artifactNamingStrategy = ArtifactNamingStrategy.createVanillaPatched(neoForgeVersion);
8989
}
9090

9191
var artifacts = ModDevArtifactsWorkflow.create(

src/main/java/net/neoforged/moddevgradle/internal/ModDevRunWorkflow.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private ModDevRunWorkflow(Project project,
104104
spec.setCanBeConsumed(false);
105105

106106
spec.getDependencies().add(gameLibrariesDependency);
107-
if (!artifactsWorkflow.dependencies().gameLibrariesContainUniversalJar()) {
107+
if (artifactsWorkflow.versionCapabilities().needsNeoForgeInMinecraftJar()) {
108108
addClientResources(project, spec, artifactsWorkflow.createArtifacts());
109109
}
110110
if (!versionCapabilities.modLocatorRework()) {
@@ -223,7 +223,7 @@ public void configureTesting(Provider<ModModel> testedMod, Provider<Set<ModModel
223223
},
224224
legacyClassPath -> {
225225
legacyClassPath.getDependencies().add(gameLibrariesDependency);
226-
if (!artifactsWorkflow.dependencies().gameLibrariesContainUniversalJar()) {
226+
if (artifactsWorkflow.versionCapabilities().needsNeoForgeInMinecraftJar()) {
227227
addClientResources(project, legacyClassPath, artifactsWorkflow.createArtifacts());
228228
}
229229
},

src/main/java/net/neoforged/moddevgradle/internal/ModdingDependencies.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import java.util.Map;
44
import net.neoforged.moddevgradle.internal.utils.VersionCapabilitiesInternal;
5-
import org.gradle.api.Project;
65
import org.gradle.api.artifacts.ModuleDependency;
7-
import org.gradle.api.attributes.LibraryElements;
86
import org.jetbrains.annotations.Nullable;
97

108
public record ModdingDependencies(
@@ -13,8 +11,6 @@ public record ModdingDependencies(
1311
@Nullable ModuleDependency neoFormDependency,
1412
@Nullable String neoFormDependencyNotation,
1513
ModuleDependency gameLibrariesDependency,
16-
// TODO: terrible name
17-
boolean gameLibrariesContainUniversalJar,
1814
@Nullable ModuleDependency modulePathDependency,
1915
@Nullable ModuleDependency runTypesConfigDependency,
2016
@Nullable ModuleDependency testFixturesDependency) {
@@ -29,16 +25,9 @@ public static ModdingDependencies create(ModuleDependency neoForge,
2925
.capabilities(caps -> caps.requireCapability("net.neoforged:neoforge-moddev-module-path"))
3026
// TODO: this is ugly; maybe make the configuration transitive in neoforge, or fix the SJH dep.
3127
.exclude(Map.of("group", "org.jetbrains", "module", "annotations"));
32-
// TODO: configure based on version
33-
boolean gameLibrariesContainUniversalJar = true;
3428
ModuleDependency librariesDependency;
35-
if (gameLibrariesContainUniversalJar) {
36-
librariesDependency = neoForge.copy()
37-
.capabilities(c -> c.requireCapability("net.neoforged:neoforge-universal-and-dependencies"));
38-
} else {
39-
librariesDependency = neoForge.copy()
40-
.capabilities(c -> c.requireCapability("net.neoforged:neoforge-dependencies"));
41-
}
29+
librariesDependency = neoForge.copy()
30+
.capabilities(c -> c.requireCapability("net.neoforged:neoforge-dependencies"));
4231

4332
ModuleDependency testFixturesDependency = null;
4433
if (versionCapabilities.testFixtures()) {
@@ -52,7 +41,6 @@ public static ModdingDependencies create(ModuleDependency neoForge,
5241
neoForm,
5342
neoFormNotation,
5443
librariesDependency,
55-
gameLibrariesContainUniversalJar,
5644
modulePathDependency,
5745
runTypesDataDependency,
5846
testFixturesDependency);
@@ -68,7 +56,6 @@ public static ModdingDependencies createVanillaOnly(ModuleDependency neoForm, St
6856
neoForm,
6957
neoFormNotation,
7058
librariesDependency,
71-
true, // TODO: might not work on old NeoForm versions?
7259
null,
7360
null,
7461
null);

src/main/java/net/neoforged/moddevgradle/internal/utils/VersionCapabilitiesInternal.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
* @param javaVersion Which Java version Vanilla uses to compile and run.
1515
* @param splitDataRuns Whether Vanilla has separate main classes for generating client and server data.
1616
* @param testFixtures If the NeoForge version for this Minecraft version supports test fixtures.
17+
* @param needsNeoForgeInMinecraftJar The FML version shipped by NeoForge in this Minecraft version requires NeoForge
18+
* classes to be merged into the Minecraft jar to work.
1719
*/
1820
public record VersionCapabilitiesInternal(String minecraftVersion, int javaVersion, boolean splitDataRuns,
19-
boolean testFixtures, boolean modLocatorRework, boolean legacyClasspath) implements VersionCapabilities, Serializable {
21+
boolean testFixtures, boolean modLocatorRework, boolean legacyClasspath, boolean needsNeoForgeInMinecraftJar) implements VersionCapabilities, Serializable {
2022

2123
private static final Logger LOG = Logging.getLogger(VersionCapabilitiesInternal.class);
2224

@@ -58,8 +60,9 @@ public static VersionCapabilitiesInternal ofVersionIndex(int versionIndex, Strin
5860
var testFixtures = hasTestFixtures(versionIndex);
5961
var modLocatorRework = hasModLocatorRework(versionIndex);
6062
var legacyClasspath = hasLegacyClasspath(versionIndex);
63+
var needsNeoForgeInMinecraftJar = needsNeoForgeInMinecraftJar(versionIndex);
6164

62-
return new VersionCapabilitiesInternal(minecraftVersion, javaVersion, splitData, testFixtures, modLocatorRework, legacyClasspath);
65+
return new VersionCapabilitiesInternal(minecraftVersion, javaVersion, splitData, testFixtures, modLocatorRework, legacyClasspath, needsNeoForgeInMinecraftJar);
6366
}
6467

6568
static int getJavaVersion(int versionIndex) {
@@ -90,6 +93,10 @@ static boolean hasLegacyClasspath(int versionIndex) {
9093
return versionIndex > MC_1_21_9_INDEX;
9194
}
9295

96+
static boolean needsNeoForgeInMinecraftJar(int versionIndex) {
97+
return versionIndex > MC_1_21_9_INDEX;
98+
}
99+
93100
static int indexOfNeoForgeVersion(String version) {
94101
// NeoForge omits the "1." at the start of the Minecraft version and just adds an incrementing last digit
95102
var matcher = NEOFORGE_PATTERN.matcher(version);
@@ -175,6 +182,7 @@ public VersionCapabilitiesInternal withMinecraftVersion(String minecraftVersion)
175182
splitDataRuns,
176183
testFixtures,
177184
modLocatorRework,
178-
legacyClasspath);
185+
legacyClasspath,
186+
needsNeoForgeInMinecraftJar);
179187
}
180188
}

src/main/java/net/neoforged/nfrtgradle/CreateMinecraftArtifacts.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ public CreateMinecraftArtifacts() {
4242
getAnalyzeCacheMisses().convention(false);
4343
getValidateAccessTransformers().convention(false);
4444
getParchmentEnabled().convention(false);
45-
getPutNeoForgeInTheMcJar().convention(true);
45+
getIncludeNeoForgeInMainArtifact().convention(true);
46+
getIncludeResourcesInMainArtifact().convention(false);
4647
}
4748

4849
/**
@@ -193,10 +194,11 @@ public CreateMinecraftArtifacts() {
193194
@Optional
194195
public abstract RegularFileProperty getResourcesArtifact();
195196

196-
// TODO: better name
197-
// TODO: we should however put the resources in the MC jar
198197
@Input
199-
public abstract Property<Boolean> getPutNeoForgeInTheMcJar();
198+
public abstract Property<Boolean> getIncludeNeoForgeInMainArtifact();
199+
200+
@Input
201+
public abstract Property<Boolean> getIncludeResourcesInMainArtifact();
200202

201203
@Inject
202204
protected abstract Problems getProblems();
@@ -287,7 +289,7 @@ public void createArtifacts() {
287289
}
288290

289291
// NOTE: When we use NeoForm standalone, the result-ids also change, a.k.a. "Vanilla Mode"
290-
if (getNeoForgeArtifact().isPresent() && getPutNeoForgeInTheMcJar().get()) {
292+
if (getNeoForgeArtifact().isPresent() && getIncludeNeoForgeInMainArtifact().get()) {
291293
if (getCompiledArtifact().isPresent()) {
292294
requestedResults.add(new RequestedResult("compiledWithNeoForge", getCompiledArtifact().get().getAsFile()));
293295
}
@@ -298,7 +300,7 @@ public void createArtifacts() {
298300
requestedResults.add(new RequestedResult("sourcesAndCompiledWithNeoForge", getCompiledWithSourcesArtifact().get().getAsFile()));
299301
}
300302
} else {
301-
boolean withResources = !getPutNeoForgeInTheMcJar().get();
303+
boolean withResources = getIncludeResourcesInMainArtifact().get();
302304
if (getCompiledArtifact().isPresent()) {
303305
requestedResults.add(new RequestedResult(withResources ? "compiledWithResources" : "compiled", getCompiledArtifact().get().getAsFile()));
304306
}

src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
public abstract class NeoFormRuntimeExtension {
1313
public static final String NAME = "neoFormRuntime";
1414

15-
private static final String DEFAULT_NFRT_VERSION = "1.0.44-mc-resources-in-jar";
15+
private static final String DEFAULT_NFRT_VERSION = "1.0.43";
1616

1717
@Inject
1818
public NeoFormRuntimeExtension(Project project) {

testproject/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
org.gradle.configuration-cache=true
22

33
# Dependency versions
4-
neoforge_version=21.10.49-beta-more-caps
4+
neoforge_version=21.10.48-beta

testproject/jijtest/src/main/java/jijtest/AccessPluginClass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package jijtest;
22

3-
import cpw.mods.modlauncher.TransformingClassLoader;
43
import jijtestplugin.Plugin;
4+
import net.neoforged.fml.classloading.transformation.TransformingClassLoader;
55
import net.neoforged.fml.common.Mod;
66

77
@Mod("jijtest")

0 commit comments

Comments
 (0)