Skip to content

Commit 6663548

Browse files
authored
neoforge: correctly handle versioning that drops the ".0" (#440)
1 parent 47f0bb0 commit 6663548

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

src/main/java/me/itzg/helpers/forge/NeoForgeInstallerResolver.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@ else if (requestedNeoForgeVersion == null || requestedNeoForgeVersion.equalsIgno
108108
else {
109109
if (minecraftVersion != null) {
110110
// minor.patch of minecraft version != major.minor of neoforge version
111-
if (!(minecraftVersion[1].equals(parts[0]) && minecraftVersion[2].equals(parts[1]))) {
111+
final String minor = minecraftVersion[1];
112+
final String patch = minecraftVersion.length > 2 ? minecraftVersion[2] : "0";
113+
114+
if (!(minor.equals(parts[0]) && patch.equals(parts[1]))) {
112115
return false;
113116
}
114117
}
@@ -134,8 +137,9 @@ private boolean useForgeArtifactId(String minecraftVersion) {
134137
private static String deriveMinecraftVersion(String result) {
135138
final String[] resolvedParts = splitNeoforgeVersion(result);
136139

137-
return String.join(".",
138-
"1", resolvedParts[0], resolvedParts[1]
140+
// Minecraft versions never end with ".0"...they just leave it off
141+
return resolvedParts[1].equals("0") ? String.join(".", "1", resolvedParts[0])
142+
: String.join(".", "1", resolvedParts[0], resolvedParts[1]
139143
);
140144
}
141145

@@ -147,8 +151,8 @@ private static String[] splitNeoforgeVersion(String s) {
147151
@NotNull
148152
private String[] splitMinecraftVersion() {
149153
final String[] parts = requestedMinecraftVersion.split("\\.", 3);
150-
if (parts.length < 3) {
151-
throw new GenericException("Expected at least three parts to Minecraft version: " + requestedMinecraftVersion);
154+
if (parts.length < 2) {
155+
throw new GenericException("Expected at least two parts to Minecraft version: " + requestedMinecraftVersion);
152156
}
153157
return parts;
154158
}

src/test/java/me/itzg/helpers/forge/NeoForgeInstallerResolverTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ public static Stream<Arguments> resolve_args() {
2626
arguments("1.20.3", "beta", "1.20.3", "20.3.8-beta"),
2727
arguments("latest", "20.2.85-beta", "1.20.2", "20.2.85-beta"),
2828
arguments("latest", "20.2.88", "1.20.2", "20.2.88"),
29-
arguments("1.20.1", "latest", "1.20.1", "47.1.84")
29+
arguments("1.20.1", "latest", "1.20.1", "47.1.84"),
30+
arguments("1.21", "beta", "1.21", "21.0.42-beta")
3031
);
3132
}
3233

src/test/resources/__files/forge/neoforged-neoforge-maven-metadata.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@
147147
<version>20.2.88</version>
148148
<version>20.4.61-beta</version>
149149
<version>20.4.62-beta</version>
150+
<version>20.6.119</version>
151+
<version>21.0.41-beta</version>
152+
<version>21.0.42-beta</version>
150153
</versions>
151154
<lastUpdated>20231228145256</lastUpdated>
152155
</versioning>

0 commit comments

Comments
 (0)