fix: BMCLAPI 获取支持的 Neo 列表时会意外的包含 1.20

fix: NeoForge 1.20.1 官方源版本列表不能正常解析
This commit is contained in:
Pigeon0v0
2024-06-27 14:09:31 +08:00
parent ac6ed8d986
commit 1b53489cf3
2 changed files with 16 additions and 10 deletions
@@ -822,9 +822,8 @@
For Each Release In ClientReleases For Each Release In ClientReleases
If Int(Release.Split(".")(1)) > 19 Then '如果游戏版本低于 1.20 就不进行请求 If Int(Release.Split(".")(1)) > 19 Then '如果游戏版本低于 1.20 就不进行请求
Dim Json As String = NetGetCodeByRequestRetry("https://bmclapi2.bangbang93.com/neoforge/list/" & Release) 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.Add(Release)
Versions.Remove("1.20")
End If End If
End If End If
Next Next
@@ -954,6 +953,7 @@
Dim ResultLatestJson As JObject Dim ResultLatestJson As JObject
Dim ResultLegacyJson As JObject Dim ResultLegacyJson As JObject
Dim VersionsJArray As JArray Dim VersionsJArray As JArray
Dim IsLegacyNeo As Boolean = False
Try Try
ResultLatest = NetGetCodeByDownload("https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/neoforge", UseBrowserUserAgent:=True) 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) ResultLegacy = NetGetCodeByDownload("https://maven.neoforged.net/api/maven/versions/releases/net/neoforged/forge", UseBrowserUserAgent:=True)
@@ -968,8 +968,9 @@
ResultLatestJson = GetJson(ResultLatest) ResultLatestJson = GetJson(ResultLatest)
ResultLegacyJson = GetJson(ResultLegacy) ResultLegacyJson = GetJson(ResultLegacy)
If Loader.Input IsNot Nothing Then 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") VersionsJArray = ResultLegacyJson("versions")
IsLegacyNeo = True
Else Else
VersionsJArray = ResultLatestJson("versions") VersionsJArray = ResultLatestJson("versions")
End If End If
@@ -983,26 +984,30 @@
Dim IsBeta As Boolean Dim IsBeta As Boolean
Dim rawVersion As String = Token Dim rawVersion As String = Token
If rawVersion.Contains("-beta") Then If rawVersion.Contains("-beta") Then
StdVersion = Token.Replace("neoforge-", "").Replace("-beta", "") StdVersion = Token.Replace("neoforge-", "").Replace("-beta", "").Replace("1.20.1-", "")
IsBeta = True IsBeta = True
Else Else
StdVersion = Token.Replace("neoforge-", "") StdVersion = Token.Replace("neoforge-", "").Replace("1.20.1-", "")
IsBeta = False IsBeta = False
End If End If
Dim Inherit As String = "1." & StdVersion.Split(".")(0) & "." & StdVersion.Split(".")(1) Dim Inherit As String = "1." & StdVersion.Split(".")(0) & "." & StdVersion.Split(".")(1)
Inherit = Inherit.Replace(".0", "") Inherit = Inherit.Replace(".0", "")
If IsLegacyNeo Then Inherit = "1.20.1"
Dim Entry = New DlNeoForgeVersionEntry Dim Entry = New DlNeoForgeVersionEntry
If Loader.Input IsNot Nothing Then If Loader.Input IsNot Nothing Then
If IsLegacyNeo Then
Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion}
Versions.Add(Entry)
Else
If Inherit.Contains(Loader.Input.ToString().Replace("1.", "")) Then If Inherit.Contains(Loader.Input.ToString().Replace("1.", "")) Then
Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion} Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion}
Versions.Add(Entry) Versions.Add(Entry)
Continue For End If
End If
Else Else
Continue For
End If
End If
Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion} Entry = New DlNeoForgeVersionEntry With {.Version = rawVersion, .Inherit = Inherit, .IsBeta = IsBeta, .StdVersion = StdVersion}
Versions.Add(Entry) Versions.Add(Entry)
End If
Next Next
Catch ex As Exception Catch ex As Exception
MyMsgBox(ex.ToString(), "错误") MyMsgBox(ex.ToString(), "错误")
@@ -2197,6 +2197,7 @@ Retry:
If Entry.IsBeta Then If Entry.IsBeta Then
FreshBetaVersion = Entry FreshBetaVersion = Entry
Else Else
If Entry.StdVersion.Contains("47.1.82") Then Continue For
FreshStableVersion = Entry FreshStableVersion = Entry
End If End If
Next Next