From d09dd0b76ab0615dbe3b44ec4720158e410455d7 Mon Sep 17 00:00:00 2001 From: Dave Pusey Date: Thu, 18 Dec 2025 09:06:36 +0000 Subject: [PATCH 1/4] Add metadata sources for unobfuscated versions --- .../MojangLauncherMetadataProvider.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java b/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java index d7d78a0b..55c0788c 100644 --- a/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java +++ b/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java @@ -140,6 +140,51 @@ public MojangLauncherMetadataProvider() { "24w14potato_original", "https://maven.fabricmc.net/net/minecraft/24w14potato_original.json", "4e54c25e6eafdf0a2f1f6e86fb1b8c1d239dd8d5"); + // support unobfuscated versions + this.addMetadataSource( + "25w45a_unobfuscated", + "https://piston-data.mojang.com/v1/objects/de334d80d9ddc5abb94c611b8ad10f9125c4c421/25w45a_unobfuscated.zip", + "de334d80d9ddc5abb94c611b8ad10f9125c4c421"); + this.addMetadataSource( + "25w46a_unobfuscated", + "https://piston-data.mojang.com/v1/objects/f9c5e4f9c1469296299635b498438e94d312f0c6/25w46a_unobfuscated.zip", + "f9c5e4f9c1469296299635b498438e94d312f0c6"); + this.addMetadataSource( + "1.21.11-pre1_unobfuscated", + "https://piston-data.mojang.com/v1/objects/f98a0c053a8246cce12f8f29f2ba4ce00872fd53/1_21_11-pre1_unobfuscated.zip", + "f98a0c053a8246cce12f8f29f2ba4ce00872fd53"); + this.addMetadataSource( + "1.21.11-pre2_unobfuscated", + "https://piston-data.mojang.com/v1/objects/528731e05b7be26c90fedf8f2ef6470abb0d1994/1_21_11-pre2_unobfuscated.zip", + "528731e05b7be26c90fedf8f2ef6470abb0d1994"); + this.addMetadataSource( + "1.21.11-pre3_unobfuscated", + "https://piston-data.mojang.com/v1/objects/7717a481468cc33d2414d82ee9c0450f56264db0/1_21_11-pre3_unobfuscated.zip", + "7717a481468cc33d2414d82ee9c0450f56264db0"); + this.addMetadataSource( + "1.21.11-pre4_unobfuscated", + "https://piston-data.mojang.com/v1/objects/834666571f1e1374923b73f4baec4203d44e9c0d/1_21_11-pre4_unobfuscated.zip", + "834666571f1e1374923b73f4baec4203d44e9c0d"); + this.addMetadataSource( + "1.21.11-pre5_unobfuscated", + "https://piston-data.mojang.com/v1/objects/931df659128f913ce356d6036c318c5d9a039e85/1_21_11-pre5_unobfuscated.zip", + "931df659128f913ce356d6036c318c5d9a039e85"); + this.addMetadataSource( + "1.21.11-rc1_unobfuscated", + "https://piston-data.mojang.com/v1/objects/38712002b9d02061e662b69c44753a47d24da516/1_21_11-rc1_unobfuscated.zip", + "38712002b9d02061e662b69c44753a47d24da516"); + this.addMetadataSource( + "1.21.11-rc2_unobfuscated", + "https://piston-data.mojang.com/v1/objects/fb70de3ae3e19825622b7687d2fd783d78c4b05f/1_21_11-rc2_unobfuscated.zip", + "fb70de3ae3e19825622b7687d2fd783d78c4b05f"); + this.addMetadataSource( + "1.21.11-rc3_unobfuscated", + "https://piston-data.mojang.com/v1/objects/7abe399a1b3c07754c5dc3ec4e5c6f50ee03c10e/1_21_11-rc3_unobfuscated.zip", + "7abe399a1b3c07754c5dc3ec4e5c6f50ee03c10e"); + this.addMetadataSource( + "1.21.11_unobfuscated", + "https://piston-data.mojang.com/v1/objects/82332dfb17146de34cb7a36d2b910e3b2009191a/1_21_11_unobfuscated.zip", + "82332dfb17146de34cb7a36d2b910e3b2009191a"); } protected MojangLauncherMetadataProvider(String manifestUrl) { @@ -247,6 +292,12 @@ private Path clientJarArtifactParentPath(VersionInfo versionMeta) { } private String fixupSemver(String proposedSemVer) { + if (proposedSemVer.equals("1.21.11+unobfuscated")) { // support unobfuscated versions (release) + return proposedSemVer.replace("+unobfuscated", "-unobfuscated"); + } + if (proposedSemVer.endsWith("+unobfuscated")) { // support unobfuscated versions (snapshot) + return proposedSemVer.replace("+unobfuscated", ".unobfuscated"); + } if (proposedSemVer.contains("-Experimental")) { return proposedSemVer.replace("-Experimental", "-alpha.0.0.Experimental"); } From 99dcba618e3f27754a65a19c4fb5fe4d2ccaa4ed Mon Sep 17 00:00:00 2001 From: Dave Pusey Date: Thu, 18 Dec 2025 09:08:25 +0000 Subject: [PATCH 2/4] Always use IDENTITY_UNMAPPED for unobfuscated versions --- .../winplay02/gitcraft/config/ApplicationConfiguration.java | 3 +++ .../github/winplay02/gitcraft/mappings/MojangMappings.java | 2 +- .../com/github/winplay02/gitcraft/types/OrderedVersion.java | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/groovy/com/github/winplay02/gitcraft/config/ApplicationConfiguration.java b/src/main/groovy/com/github/winplay02/gitcraft/config/ApplicationConfiguration.java index 8a3fae4d..ded692f7 100644 --- a/src/main/groovy/com/github/winplay02/gitcraft/config/ApplicationConfiguration.java +++ b/src/main/groovy/com/github/winplay02/gitcraft/config/ApplicationConfiguration.java @@ -170,6 +170,9 @@ public boolean isAnyVersionExcluded() { } public Optional getMappingsForMinecraftVersion(OrderedVersion mcVersion) { + if (mcVersion.isUnobfuscated()) { + return Optional.of(MappingFlavour.IDENTITY_UNMAPPED); + } if (this.usedMapping().exists(mcVersion)) { return Optional.of(this.usedMapping()); } diff --git a/src/main/groovy/com/github/winplay02/gitcraft/mappings/MojangMappings.java b/src/main/groovy/com/github/winplay02/gitcraft/mappings/MojangMappings.java index f27bd825..3c3fdfa5 100644 --- a/src/main/groovy/com/github/winplay02/gitcraft/mappings/MojangMappings.java +++ b/src/main/groovy/com/github/winplay02/gitcraft/mappings/MojangMappings.java @@ -43,7 +43,7 @@ public boolean needsPackageFixingForLaunch() { @Override public boolean doMappingsExist(OrderedVersion mcVersion) { - return mcVersion.hasClientMojMaps() || mcVersion.hasServerMojMaps(); + return mcVersion.isUnobfuscated() || mcVersion.hasClientMojMaps() || mcVersion.hasServerMojMaps(); } @Override diff --git a/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java b/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java index 2193e50d..c39ad942 100644 --- a/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java +++ b/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java @@ -112,6 +112,10 @@ public int javaVersion() { return this.versionInfo().javaVersion() != null ? this.versionInfo().javaVersion().majorVersion() : 8; } + public boolean isUnobfuscated() { + return Objects.equals(this.versionInfo().type(), "unobfuscated"); + } + public boolean isSnapshot() { return Objects.equals(this.versionInfo().type(), "snapshot"); } From 5d6df4b090a79c539fe2c328a3815c7bf4b280e9 Mon Sep 17 00:00:00 2001 From: Dave Pusey Date: Thu, 18 Dec 2025 09:46:24 +0000 Subject: [PATCH 3/4] Add support for the new 26.x versions --- .../vanilla/MojangLauncherMetadataProvider.java | 2 +- .../winplay02/gitcraft/types/OrderedVersion.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java b/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java index 55c0788c..bfb536f8 100644 --- a/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java +++ b/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java @@ -422,7 +422,7 @@ protected List getParentVersionIds(String versionId) { } } - private static final Pattern NORMAL_SNAPSHOT_PATTERN = Pattern.compile("(^\\d\\dw\\d\\d[a-z]$)|(^\\d.\\d+(.\\d+)?(-(pre|rc)\\d+|_[a-z_\\-]+snapshot-\\d+| Pre-Release \\d+)?$)"); + private static final Pattern NORMAL_SNAPSHOT_PATTERN = Pattern.compile("(^\\d\\dw\\d\\d[a-z]$)|(^\\d+.\\d+(.\\d+)?(-(snapshot-|pre|rc)\\d+|_[a-z_\\-]+snapshot-\\d+| Pre-Release \\d+)?$)"); @Override public boolean shouldExcludeFromMainBranch(OrderedVersion mcVersion) { diff --git a/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java b/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java index c39ad942..875594cd 100644 --- a/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java +++ b/src/main/groovy/com/github/winplay02/gitcraft/types/OrderedVersion.java @@ -113,7 +113,17 @@ public int javaVersion() { } public boolean isUnobfuscated() { - return Objects.equals(this.versionInfo().type(), "unobfuscated"); + if (Objects.equals(this.versionInfo().type(), "unobfuscated")) { + return true; + } + try { + if (SemanticVersion.parse(this.semanticVersion()).getVersionComponent(0) >= 26) { + return true; + } + } catch (VersionParsingException e) { + MiscHelper.panicBecause(e, "Could not parse version %s (%s) as semantic version", launcherFriendlyVersionName(), semanticVersion()); + } + return false; } public boolean isSnapshot() { From c2a07c18ef6d9d6414ef83d64ac6783fab21f272 Mon Sep 17 00:00:00 2001 From: Dave Pusey Date: Thu, 18 Dec 2025 10:03:59 +0000 Subject: [PATCH 4/4] Fix parent version assignments for "25w45a_unobfuscated" through "26.1-snapshot-1" --- .../MojangLauncherMetadataProvider.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java b/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java index bfb536f8..ba4ef47a 100644 --- a/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java +++ b/src/main/groovy/com/github/winplay02/gitcraft/manifest/vanilla/MojangLauncherMetadataProvider.java @@ -416,6 +416,49 @@ protected List getParentVersionIds(String versionId) { case "1.9.2" -> { return List.of("1.9.1"); } + // support unobfuscated versions + case "25w45a_unobfuscated" -> { + return List.of("25w44a"); + } + case "25w46a_unobfuscated" -> { + return List.of("25w45a_unobfuscated"); + } + case "1.21.11-pre1_unobfuscated" -> { + return List.of("25w46a_unobfuscated"); + } + case "1.21.11-pre2_unobfuscated" -> { + return List.of("1.21.11-pre1_unobfuscated"); + } + case "1.21.11-pre3_unobfuscated" -> { + return List.of("1.21.11-pre2_unobfuscated"); + } + case "1.21.11-pre4_unobfuscated" -> { + return List.of("1.21.11-pre3_unobfuscated"); + } + case "1.21.11-pre5_unobfuscated" -> { + return List.of("1.21.11-pre4_unobfuscated"); + } + case "1.21.11-rc1_unobfuscated" -> { + return List.of("1.21.11-pre5_unobfuscated"); + } + case "1.21.11-rc2_unobfuscated" -> { + return List.of("1.21.11-rc1_unobfuscated"); + } + case "1.21.11-rc3_unobfuscated" -> { + return List.of("1.21.11-rc2_unobfuscated"); + } + case "1.21.11_unobfuscated" -> { + return List.of("1.21.10", "1.21.11-rc3_unobfuscated"); + } + case "1.21.11-rc3" -> { + return List.of("1.21.11-rc2"); + } + case "1.21.11" -> { + return List.of("1.21.10", "1.21.11-rc3"); + } + case "26.1-snapshot-1" -> { + return List.of("1.21.11_unobfuscated"); + } default -> { return null; }