Sfoglia il codice sorgente

ui: 显示 NeoForge 版本属性(测试版 / 稳定版)

Pigeon0v0 2 anni fa
parent
commit
e731ef69d4

+ 14 - 3
Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb

@@ -748,6 +748,10 @@
         ''' 版本分支。若无分支则为 Nothing。
         ''' 版本分支。若无分支则为 Nothing。
         ''' </summary>
         ''' </summary>
         Public Branch As String = Nothing
         Public Branch As String = Nothing
+        ''' <summary>
+        ''' 是否是 Beta 版。若未提供则默认为 False。
+        ''' </summary>
+        Public IsBeta As Boolean = False
         Public Structure DlNeoForgeListResult
         Public Structure DlNeoForgeListResult
             ''' <summary>
             ''' <summary>
             ''' 数据来源名称,如“Official”,“BMCLAPI”。
             ''' 数据来源名称,如“Official”,“BMCLAPI”。
@@ -857,7 +861,6 @@
         ResultJson = GetJson(Result)
         ResultJson = GetJson(Result)
         Dim Versions As New List(Of DlNeoForgeVersionEntry)
         Dim Versions As New List(Of DlNeoForgeVersionEntry)
         Dim VersionList As String = ResultJson("versions")
         Dim VersionList As String = ResultJson("versions")
-        MyMsgBox(VersionList, "VersionList 获取测试")
         'Try
         'Try
         '    Try
         '    Try
         '        '基础信息获取
         '        '基础信息获取
@@ -894,9 +897,17 @@
         Dim Versions As New List(Of DlNeoForgeVersionEntry)
         Dim Versions As New List(Of DlNeoForgeVersionEntry)
         Try
         Try
             For Each Token As JObject In Json
             For Each Token As JObject In Json
-                Dim Name As String = Token("version")
+                Dim Name As String
+                Dim IsBeta As Boolean
+                If Token("version").Contains("-beta") Then
+                    Name = Token("version").ToString() - "-beta"
+                    IsBeta = True
+                Else
+                    Name = Token("version")
+                    IsBeta = False
+                End If
                 Dim Inherit As String = Token("mcversion")
                 Dim Inherit As String = Token("mcversion")
-                Dim Entry = New DlNeoForgeVersionEntry With {.Version = Name, .Inherit = Inherit}
+                Dim Entry = New DlNeoForgeVersionEntry With {.Version = Name, .Inherit = Inherit, .IsBeta = IsBeta}
                 Versions.Add(Entry)
                 Versions.Add(Entry)
             Next
             Next
             'For Each Token As JObject In Json
             'For Each Token As JObject In Json

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

@@ -2258,8 +2258,9 @@ Retry:
     Public Function NeoForgeDownloadListItem(Entry As DlNeoForgeVersionEntry, OnClick As MyListItem.ClickEventHandler, IsSaveOnly As Boolean) As MyListItem
     Public Function NeoForgeDownloadListItem(Entry As DlNeoForgeVersionEntry, OnClick As MyListItem.ClickEventHandler, IsSaveOnly As Boolean) As MyListItem
         '建立控件
         '建立控件
         Dim NewItem As New MyListItem With {
         Dim NewItem As New MyListItem With {
-            .Title = Entry.Version, .SnapsToDevicePixels = True, .Height = 42, .Type = MyListItem.CheckType.Clickable, .Tag = Entry,
-            .Info = If(Entry.ReleaseTime = "",
+            .Title = If(Entry.IsBeta, Entry.Version & "-beta", Entry.Version), .SnapsToDevicePixels = True, .Height = 42, .Type = MyListItem.CheckType.Clickable, .Tag = Entry,
+            .Info = If(Entry.IsBeta, "稳定版", "测试版") &
+                If(Entry.ReleaseTime = "",
                 If(ModeDebug, "种类:" & Entry.Category & If(Entry.Branch Is Nothing, "", ",开发分支:" & Entry.Branch), ""),
                 If(ModeDebug, "种类:" & Entry.Category & If(Entry.Branch Is Nothing, "", ",开发分支:" & Entry.Branch), ""),
                 "发布于 " & Entry.ReleaseTime & If(ModeDebug, ",种类:" & Entry.Category & If(Entry.Branch Is Nothing, "", ",开发分支:" & Entry.Branch), "")),
                 "发布于 " & Entry.ReleaseTime & If(ModeDebug, ",种类:" & Entry.Category & If(Entry.Branch Is Nothing, "", ",开发分支:" & Entry.Branch), "")),
             .Logo = PathImage & "Blocks/Anvil.png"
             .Logo = PathImage & "Blocks/Anvil.png"

+ 4 - 0
Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml.vb

@@ -787,6 +787,7 @@
         If LoadLiteLoader Is Nothing OrElse LoadLiteLoader.State.LoadingState = MyLoading.MyLoadingState.Run Then Return "正在获取版本列表……"
         If LoadLiteLoader Is Nothing OrElse LoadLiteLoader.State.LoadingState = MyLoading.MyLoadingState.Run Then Return "正在获取版本列表……"
         If LoadLiteLoader.State.LoadingState = MyLoading.MyLoadingState.Error Then Return "获取版本列表失败:" & CType(LoadLiteLoader.State, Object).Error.Message
         If LoadLiteLoader.State.LoadingState = MyLoading.MyLoadingState.Error Then Return "获取版本列表失败:" & CType(LoadLiteLoader.State, Object).Error.Message
         For Each Version As DlLiteLoaderListEntry In DlLiteLoaderListLoader.Output.Value
         For Each Version As DlLiteLoaderListEntry In DlLiteLoaderListLoader.Output.Value
+            If SelectedNeoForge IsNot Nothing Then Return "与 NeoForge 不兼容"
             If Version.Inherit = SelectedMinecraftId Then Return Nothing
             If Version.Inherit = SelectedMinecraftId Then Return Nothing
         Next
         Next
         Return "没有可用版本"
         Return "没有可用版本"
@@ -857,6 +858,7 @@
         Dim NotSuitForOptiFine As Boolean = False
         Dim NotSuitForOptiFine As Boolean = False
         For Each Version In Loader.Output
         For Each Version In Loader.Output
             If Version.Category = "universal" OrElse Version.Category = "client" Then Continue For '跳过无法自动安装的版本
             If Version.Category = "universal" OrElse Version.Category = "client" Then Continue For '跳过无法自动安装的版本
+            If SelectedNeoForge IsNot Nothing Then Return "与 NeoForge 不兼容"
             If SelectedFabric IsNot Nothing Then Return "与 Fabric 不兼容"
             If SelectedFabric IsNot Nothing Then Return "与 Fabric 不兼容"
             If SelectedOptiFine IsNot Nothing AndAlso
             If SelectedOptiFine IsNot Nothing AndAlso
                 VersionSortInteger(SelectedMinecraftId, "1.13") >= 0 AndAlso VersionSortInteger("1.14.3", SelectedMinecraftId) >= 0 Then
                 VersionSortInteger(SelectedMinecraftId, "1.13") >= 0 AndAlso VersionSortInteger("1.14.3", SelectedMinecraftId) >= 0 Then
@@ -945,6 +947,7 @@
         If Loader.State <> LoadState.Finished Then Return "获取版本列表失败:未知错误,状态为 " & GetStringFromEnum(Loader.State)
         If Loader.State <> LoadState.Finished Then Return "获取版本列表失败:未知错误,状态为 " & GetStringFromEnum(Loader.State)
         For Each Version In Loader.Output
         For Each Version In Loader.Output
             If Version.Category = "universal" OrElse Version.Category = "client" Then Continue For '跳过无法自动安装的版本
             If Version.Category = "universal" OrElse Version.Category = "client" Then Continue For '跳过无法自动安装的版本
+            If SelectedForge IsNot Nothing Then Return "与 Forge 不兼容"
             If SelectedFabric IsNot Nothing Then Return "与 Fabric 不兼容"
             If SelectedFabric IsNot Nothing Then Return "与 Fabric 不兼容"
             Return Nothing
             Return Nothing
         Next
         Next
@@ -1008,6 +1011,7 @@
         If LoadFabric.State.LoadingState = MyLoading.MyLoadingState.Error Then Return "获取版本列表失败:" & CType(LoadFabric.State, Object).Error.Message
         If LoadFabric.State.LoadingState = MyLoading.MyLoadingState.Error Then Return "获取版本列表失败:" & CType(LoadFabric.State, Object).Error.Message
         For Each Version As JObject In DlFabricListLoader.Output.Value("game")
         For Each Version As JObject In DlFabricListLoader.Output.Value("game")
             If Version("version").ToString = SelectedMinecraftId.Replace("∞", "infinite").Replace("Combat Test 7c", "1.16_combat-3") Then
             If Version("version").ToString = SelectedMinecraftId.Replace("∞", "infinite").Replace("Combat Test 7c", "1.16_combat-3") Then
+                If SelectedNeoForge IsNot Nothing Then Return "与 NeoForge 不兼容"
                 If SelectedForge IsNot Nothing Then Return "与 Forge 不兼容"
                 If SelectedForge IsNot Nothing Then Return "与 Forge 不兼容"
                 'If SelectedOptiFine IsNot Nothing Then Return "与 OptiFine 不兼容"
                 'If SelectedOptiFine IsNot Nothing Then Return "与 OptiFine 不兼容"
                 Return Nothing
                 Return Nothing