feat: NeoForge BMCLAPI 版本列表获取
fix: 之前的排序方法会导致 IDE 警告
This commit is contained in:
@@ -746,18 +746,18 @@
|
|||||||
Select Case Setup.Get("ToolDownloadVersion")
|
Select Case Setup.Get("ToolDownloadVersion")
|
||||||
Case 0
|
Case 0
|
||||||
DlSourceLoader(Loader, New List(Of KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)) From {
|
DlSourceLoader(Loader, New List(Of KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)) From {
|
||||||
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 30),
|
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListBmclapiLoader, 30),
|
||||||
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 60)
|
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 60)
|
||||||
}, Loader.IsForceRestarting)
|
}, Loader.IsForceRestarting)
|
||||||
Case 1
|
Case 1
|
||||||
DlSourceLoader(Loader, New List(Of KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)) From {
|
DlSourceLoader(Loader, New List(Of KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)) From {
|
||||||
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 5),
|
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 5),
|
||||||
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 35)
|
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListBmclapiLoader, 35)
|
||||||
}, Loader.IsForceRestarting)
|
}, Loader.IsForceRestarting)
|
||||||
Case Else
|
Case Else
|
||||||
DlSourceLoader(Loader, New List(Of KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)) From {
|
DlSourceLoader(Loader, New List(Of KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)) From {
|
||||||
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 60),
|
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 60),
|
||||||
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListOfficialLoader, 60)
|
New KeyValuePair(Of LoaderTask(Of Integer, DlNeoForgeListResult), Integer)(DlNeoForgeListBmclapiLoader, 60)
|
||||||
}, Loader.IsForceRestarting)
|
}, Loader.IsForceRestarting)
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
@@ -806,15 +806,31 @@
|
|||||||
''' <summary>
|
''' <summary>
|
||||||
''' NeoForge 版本列表,BMCLAPI。
|
''' NeoForge 版本列表,BMCLAPI。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
'Public DlNeoForgeListBmclapiLoader As New LoaderTask(Of Integer, DlNeoForgeListResult)("DlNeoForgeList Bmclapi", AddressOf DlNeoForgeListBmclapiMain)
|
Public DlNeoForgeListBmclapiLoader As New LoaderTask(Of Integer, DlNeoForgeListResult)("DlNeoForgeList Bmclapi", AddressOf DlNeoForgeListBmclapiMain)
|
||||||
'Private Sub DlNeoForgeListBmclapiMain(Loader As LoaderTask(Of Integer, DlNeoForgeListResult))
|
Private Sub DlNeoForgeListBmclapiMain(Loader As LoaderTask(Of Integer, DlNeoForgeListResult))
|
||||||
' Dim Result As String = NetGetCodeByRequestRetry("https://bmclapi2.bangbang93.com/forge/minecraft", Encoding.Default)
|
Dim Versions As List(Of String) = New List(Of String)
|
||||||
' If Result.Length < 200 Then Throw New Exception("获取到的版本列表长度不足(" & Result & ")")
|
Dim ClientVersions As JArray = DlClientListLoader.Output.Value("versions") 'BMCLAPI 不能返回所有 NeoForge 版本,获取 MC 版本列表进行遍历
|
||||||
' '获取所有版本信息
|
Dim ClientReleases As List(Of String) = New List(Of String)
|
||||||
' Dim Names As List(Of String) = RegexSearch(Result, "[0-9.]+(_pre[0-9]?)?")
|
|
||||||
' If Names.Count < 10 Then Throw New Exception("获取到的版本数量不足(" & Result & ")")
|
For Each Client In ClientVersions '排除快照版或远古版等特殊版本
|
||||||
' Loader.Output = New DlNeoForgeListResult With {.IsOfficial = False, .SourceName = "BMCLAPI", .Value = Names}
|
Dim ClientVersionString = Client("id").ToString()
|
||||||
'End Sub
|
If Not (ClientVersionString.ContainsF("a") OrElse ClientVersionString.ContainsF("b") OrElse ClientVersionString.ContainsF("c") OrElse ClientVersionString.ContainsF("w") OrElse ClientVersionString.ContainsF("pre") OrElse ClientVersionString.ContainsF("Pre") OrElse ClientVersionString.ContainsF("rc") OrElse ClientVersionString.ContainsF("b") OrElse ClientVersionString.ContainsF("rd") OrElse ClientVersionString.ContainsF("inf")) Then
|
||||||
|
ClientReleases.Add(ClientVersionString)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
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 序列,这里直接用字符串处理了
|
||||||
|
Versions.Add(Release)
|
||||||
|
Versions.Remove("1.20")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Loader.Output = New DlNeoForgeListResult With {.IsOfficial = False, .SourceName = "BMCLAPI", .Value = Versions}
|
||||||
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "DlNeoForgeVersion | NeoForge 版本列表"
|
#Region "DlNeoForgeVersion | NeoForge 版本列表"
|
||||||
@@ -907,7 +923,7 @@
|
|||||||
''' <summary>
|
''' <summary>
|
||||||
''' NeoForge 版本列表,主加载器。
|
''' NeoForge 版本列表,主加载器。
|
||||||
''' </summary>
|
''' </summary>
|
||||||
Public Sub DlNeoForgeVersionMain(Loader As LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))) 'BMCLAPI 不会返回完整的 NeoForge 版本列表,而貌似也没有办法获取 NeoForge 支持的所有 Minecraft 版本
|
Public Sub DlNeoForgeVersionMain(Loader As LoaderTask(Of String, List(Of DlNeoForgeVersionEntry)))
|
||||||
Dim DlNeoForgeVersionOfficialLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Official", AddressOf DlNeoForgeVersionOfficialMain)
|
Dim DlNeoForgeVersionOfficialLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Official", AddressOf DlNeoForgeVersionOfficialMain)
|
||||||
Dim DlNeoForgeVersionBmclapiLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Bmclapi", AddressOf DlNeoForgeVersionBmclapiMain)
|
Dim DlNeoForgeVersionBmclapiLoader As New LoaderTask(Of String, List(Of DlNeoForgeVersionEntry))("DlNeoForgeVersion Bmclapi", AddressOf DlNeoForgeVersionBmclapiMain)
|
||||||
Select Case Setup.Get("ToolDownloadVersion")
|
Select Case Setup.Get("ToolDownloadVersion")
|
||||||
@@ -935,7 +951,6 @@
|
|||||||
Public Sub DlNeoForgeVersionOfficialMain(Loader As LoaderTask(Of String, List(Of DlNeoForgeVersionEntry)))
|
Public Sub DlNeoForgeVersionOfficialMain(Loader As LoaderTask(Of String, List(Of DlNeoForgeVersionEntry)))
|
||||||
Dim ResultLatest As String
|
Dim ResultLatest As String
|
||||||
Dim ResultLegacy As String
|
Dim ResultLegacy As String
|
||||||
Dim ResultJson As String
|
|
||||||
Dim ResultLatestJson As JObject
|
Dim ResultLatestJson As JObject
|
||||||
Dim ResultLegacyJson As JObject
|
Dim ResultLegacyJson As JObject
|
||||||
Dim VersionsJArray As JArray
|
Dim VersionsJArray As JArray
|
||||||
@@ -996,7 +1011,9 @@
|
|||||||
Throw New Exception("版本列表解析失败(" & VersionsJArray.ToString & ")", ex)
|
Throw New Exception("版本列表解析失败(" & VersionsJArray.ToString & ")", ex)
|
||||||
End Try
|
End Try
|
||||||
If Not Versions.Any() Then Throw New Exception("没有可用版本")
|
If Not Versions.Any() Then Throw New Exception("没有可用版本")
|
||||||
Loader.Output = Versions
|
Dim VersionsArray = Versions.ToList()
|
||||||
|
VersionsArray.Reverse()
|
||||||
|
Loader.Output = VersionsArray
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
''' <summary>
|
''' <summary>
|
||||||
@@ -1026,7 +1043,9 @@
|
|||||||
Throw New Exception("版本列表解析失败(" & Json.ToString & ")", ex)
|
Throw New Exception("版本列表解析失败(" & Json.ToString & ")", ex)
|
||||||
End Try
|
End Try
|
||||||
If Not Versions.Any() Then Throw New Exception("没有可用版本")
|
If Not Versions.Any() Then Throw New Exception("没有可用版本")
|
||||||
Loader.Output = Versions
|
Dim VersionsArray = Versions.ToList()
|
||||||
|
VersionsArray.Reverse()
|
||||||
|
Loader.Output = VersionsArray
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|||||||
@@ -2191,7 +2191,9 @@ Retry:
|
|||||||
Dim FreshStableVersion As DlNeoForgeVersionEntry = Nothing
|
Dim FreshStableVersion As DlNeoForgeVersionEntry = Nothing
|
||||||
Dim FreshBetaVersion As DlNeoForgeVersionEntry = Nothing
|
Dim FreshBetaVersion As DlNeoForgeVersionEntry = Nothing
|
||||||
If Entrys.Any Then
|
If Entrys.Any Then
|
||||||
For Each Entry In Entrys
|
Dim VersionsArray = Entrys.ToList()
|
||||||
|
VersionsArray.Reverse()
|
||||||
|
For Each Entry In VersionsArray
|
||||||
If Entry.IsBeta Then
|
If Entry.IsBeta Then
|
||||||
FreshBetaVersion = Entry
|
FreshBetaVersion = Entry
|
||||||
Else
|
Else
|
||||||
|
|||||||
@@ -974,11 +974,8 @@
|
|||||||
If Not Loader.Output.Any() Then Exit Sub
|
If Not Loader.Output.Any() Then Exit Sub
|
||||||
PanNeoForge.Children.Clear()
|
PanNeoForge.Children.Clear()
|
||||||
|
|
||||||
Dim VersionsArray As Array = Versions.ToArray()
|
|
||||||
VersionsArray.Reverse(VersionsArray)
|
|
||||||
'Versions = Sort(Versions, Function(a, b) New Version(a.Version) > New Version(b.Version)).ToList
|
|
||||||
NeoForgeDownloadListItemPreload(PanNeoForge, Versions, AddressOf NeoForge_Selected, False)
|
NeoForgeDownloadListItemPreload(PanNeoForge, Versions, AddressOf NeoForge_Selected, False)
|
||||||
For Each Version In VersionsArray
|
For Each Version In Versions
|
||||||
PanNeoForge.Children.Add(NeoForgeDownloadListItem(Version, AddressOf NeoForge_Selected, False))
|
PanNeoForge.Children.Add(NeoForgeDownloadListItem(Version, AddressOf NeoForge_Selected, False))
|
||||||
Next
|
Next
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
|
|||||||
Reference in New Issue
Block a user