Explorar o código

fix: BMCLAPI 获取支持的 Neo 列表时会意外的包含 1.20
fix: NeoForge 1.20.1 官方源版本列表不能正常解析

Pigeon0v0 %!s(int64=2) %!d(string=hai) anos
pai
achega
1b53489cf3

+ 15 - 10
Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb

@@ -822,9 +822,8 @@
         For Each Release In ClientReleases
             If Int(Release.Split(".")(1)) > 19 Then          '如果游戏版本低于 1.20 就不进行请求
                 Dim Json As String = NetGetCodeByRequestRetry("https://bmclapi2.bangbang93.com/neoforge/list/" & Release)
-                If Json IsNot "[]" Then          '如果这个版本不支持 NeoForge,BMCLAPI 会直接返回一个空的 Json 序列,这里直接用字符串处理了
+                If Not Json.Contains("[]") Then          '如果这个版本不支持 NeoForge,BMCLAPI 会直接返回一个空的 Json 序列,这里直接用字符串处理了
                     Versions.Add(Release)
-                    Versions.Remove("1.20")
                 End If
             End If
         Next
@@ -954,6 +953,7 @@
         Dim ResultLatestJson As JObject
         Dim ResultLegacyJson As JObject
         Dim VersionsJArray As JArray
+        Dim IsLegacyNeo As Boolean = False
         Try
             ResultLatest = NetGetCodeByDownload("https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/neoforge", UseBrowserUserAgent:=True)
             ResultLegacy = NetGetCodeByDownload("https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/forge", UseBrowserUserAgent:=True)
@@ -968,8 +968,9 @@
         ResultLatestJson = GetJson(ResultLatest)
         ResultLegacyJson = GetJson(ResultLegacy)
         If Loader.Input IsNot Nothing Then
-            If Loader.Input Is "1.20.1" Then
+            If Loader.Input.ToString().Contains("1.20.1") Then
                 VersionsJArray = ResultLegacyJson("versions")
+                IsLegacyNeo = True
             Else
                 VersionsJArray = ResultLatestJson("versions")
             End If
@@ -983,26 +984,30 @@
                 Dim IsBeta As Boolean
                 Dim rawVersion As String = Token
                 If rawVersion.Contains("-beta") Then
-                    StdVersion = Token.Replace("neoforge-", "").Replace("-beta", "")
+                    StdVersion = Token.Replace("neoforge-", "").Replace("-beta", "").Replace("1.20.1-", "")
                     IsBeta = True
                 Else
-                    StdVersion = Token.Replace("neoforge-", "")
+                    StdVersion = Token.Replace("neoforge-", "").Replace("1.20.1-", "")
                     IsBeta = False
                 End If
                 Dim Inherit As String = "1." & StdVersion.Split(".")(0) & "." & StdVersion.Split(".")(1)
                 Inherit = Inherit.Replace(".0", "")
+                If IsLegacyNeo Then Inherit = "1.20.1"
                 Dim Entry = New DlNeoForgeVersionEntry
                 If Loader.Input IsNot Nothing Then
-                    If Inherit.Contains(Loader.Input.ToString().Replace("1.", "")) Then
+                    If IsLegacyNeo Then
                         Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion}
                         Versions.Add(Entry)
-                        Continue For
                     Else
-                        Continue For
+                        If Inherit.Contains(Loader.Input.ToString().Replace("1.", "")) Then
+                            Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion}
+                            Versions.Add(Entry)
+                        End If
                     End If
+                Else
+                    Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion}
+                    Versions.Add(Entry)
                 End If
-                Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion}
-                Versions.Add(Entry)
             Next
         Catch ex As Exception
             MyMsgBox(ex.ToString(), "错误")

+ 1 - 0
Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb

@@ -2197,6 +2197,7 @@ Retry:
                 If Entry.IsBeta Then
                     FreshBetaVersion = Entry
                 Else
+                    If Entry.StdVersion.Contains("47.1.82") Then Continue For
                     FreshStableVersion = Entry
                 End If
             Next