Skip to content

Commit

Permalink
feat: 允许 Quilt 安装 Fabric API
Browse files Browse the repository at this point in the history
fix: 自动安装选择 1.14.4 时 Quilt 卡片可能显示异常
  • Loading branch information
Pigeon0v0 committed Jul 19, 2024
1 parent 64d5304 commit 6d88559
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
<local:MyCard Title="安装预览" Margin="0,15,0,0" UseAnimation="False">
<StackPanel Margin="25,37,25,15">
<local:MyHint Text="你尚未选择安装 Fabric API,这会导致大多数 Mod 无法使用!" Margin="0,1,0,7" x:Name="HintFabricAPI" IsWarn="True" />
<local:MyHint Text="你尚未选择安装 QFAPI / QSL,这会导致大多数 Mod 无法使用!" Margin="0,1,0,7" x:Name="HintQSL" IsWarn="True" />
<local:MyHint Text="你尚未选择安装 QFAPI / QSL,这会导致大多数 Mod 无法使用!如果 QFAPI / QSL 无可用版本,你可以选择安装 Fabric API。" Margin="0,1,0,7" x:Name="HintQSL" IsWarn="True" />
<local:MyHint Text="你选择了在 Quilt 中安装 Fabric API,而当前存在适配的 QFAPI / QSL 可供安装。请优先考虑安装 QFAPI / QSL。" Margin="0,1,0,7" x:Name="HintQuiltFabricAPI" IsWarn="False" />
<local:MyHint Text="你尚未选择安装 OptiFabric,这会导致 OptiFine 无法使用!" Margin="0,1,0,7" x:Name="HintOptiFabric" IsWarn="True" />
<local:MyHint Text="安装结束后,请在 Mod 下载中搜索 OptiFabric Origins 并下载,否则 OptiFine 会无法使用!" Margin="0,1,0,7" x:Name="HintOptiFabricOld" IsWarn="False" />
<local:MyHint Text="OptiFine 与一部分 Mod 的兼容性不佳,请谨慎安装。" Margin="0,1,0,7" x:Name="HintModOptiFine" IsWarn="False" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,9 @@ Public Class PageDownloadInstall
'Mod Loader 统一判断,内容应为 Forge / NeoForge / Fabric / Quilt
Private SelectedLoaderName As String = Nothing

'Mod Loader API 统一判断,内容应为 Fabric API 或 QFAPI / QSL
Private SelectedAPIName As String = Nothing

'LiteLoader
Private SelectedLiteLoader As DlLiteLoaderListEntry = Nothing
Private Sub SetLiteLoaderInfoShow(IsShow As String)
Expand Down Expand Up @@ -465,13 +468,13 @@ Public Class PageDownloadInstall
End If
End If
'FabricApi
If SelectedFabric Is Nothing Then
If SelectedFabric Is Nothing AndAlso SelectedQuilt Is Nothing Then
CardFabricApi.Visibility = Visibility.Collapsed
Else
CardFabricApi.Visibility = Visibility.Visible
Dim FabricApiError As String = LoadFabricApiGetError()
CardFabricApi.MainSwap.Visibility = If(FabricApiError Is Nothing, Visibility.Visible, Visibility.Collapsed)
If FabricApiError IsNot Nothing OrElse SelectedFabric Is Nothing Then CardFabricApi.IsSwaped = True
If FabricApiError IsNot Nothing OrElse SelectedFabric Is Nothing AndAlso SelectedQuilt Is Nothing Then CardFabricApi.IsSwaped = True
SetFabricApiInfoShow(CardFabricApi.IsSwaped)
If SelectedFabricApi Is Nothing Then
BtnFabricApiClear.Visibility = Visibility.Collapsed
Expand All @@ -486,9 +489,7 @@ Public Class PageDownloadInstall
End If
End If
'Quilt
If SelectedMinecraftId.Contains("1.14.4") Then
CardQuilt.Visibility = Visibility.Visible
ElseIf SelectedMinecraftId.Contains("1.") AndAlso Val(SelectedMinecraftId.Split(".")(1)) <= 14 Then
If SelectedMinecraftId.Contains("1.") AndAlso Val(SelectedMinecraftId.Split(".")(1)) <= 14 AndAlso Not SelectedMinecraftId.Contains("1.14.4") Then
CardQuilt.Visibility = Visibility.Collapsed
Else
CardQuilt.Visibility = Visibility.Visible
Expand Down Expand Up @@ -556,11 +557,23 @@ Public Class PageDownloadInstall
Else
HintFabricAPI.Visibility = Visibility.Collapsed
End If
If SelectedQuilt IsNot Nothing AndAlso SelectedQSL Is Nothing Then
If SelectedQuilt IsNot Nothing AndAlso SelectedQSL Is Nothing AndAlso SelectedFabricApi Is Nothing Then
HintQSL.Visibility = Visibility.Visible
Else
HintQSL.Visibility = Visibility.Collapsed
End If
If SelectedQuilt IsNot Nothing AndAlso SelectedFabricApi IsNot Nothing AndAlso DlQSLLoader.Output IsNot Nothing Then
For Each Version In DlQSLLoader.Output
If IsSuitableQSL(Version.GameVersions, SelectedMinecraftId) Then
HintQuiltFabricAPI.Visibility = Visibility.Visible
Exit For
Else
HintQuiltFabricAPI.Visibility = Visibility.Collapsed
End If
Next
Else
HintQuiltFabricAPI.Visibility = Visibility.Collapsed
End If
If SelectedFabric IsNot Nothing AndAlso SelectedOptiFine IsNot Nothing AndAlso SelectedOptiFabric Is Nothing Then
If SelectedMinecraftId.StartsWith("1.14") OrElse SelectedMinecraftId.StartsWith("1.15") Then
HintOptiFabric.Visibility = Visibility.Collapsed
Expand Down Expand Up @@ -592,6 +605,7 @@ Public Class PageDownloadInstall
SelectedOptiFine = Nothing
SelectedLiteLoader = Nothing
SelectedLoaderName = Nothing
SelectedAPIName = Nothing
SelectedForge = Nothing
SelectedNeoForge = Nothing
SelectedFabric = Nothing
Expand Down Expand Up @@ -1222,13 +1236,14 @@ Public Class PageDownloadInstall
Private Function LoadFabricApiGetError() As String
If LoadFabricApi Is Nothing OrElse LoadFabricApi.State.LoadingState = MyLoading.MyLoadingState.Run Then Return "正在获取版本列表……"
If LoadFabricApi.State.LoadingState = MyLoading.MyLoadingState.Error Then Return "获取版本列表失败:" & CType(LoadFabricApi.State, Object).Error.Message
If SelectedAPIName IsNot Nothing AndAlso SelectedAPIName IsNot "Fabric API" Then Return $"与 {SelectedAPIName} 不兼容"
If DlFabricApiLoader.Output Is Nothing Then
If SelectedFabric Is Nothing Then Return "需要安装 Fabric"
If SelectedFabric Is Nothing AndAlso SelectedQuilt Is Nothing Then Return "需要安装 Fabric / Quilt"
Return "正在获取版本列表……"
End If
For Each Version In DlFabricApiLoader.Output
If Not IsSuitableFabricApi(Version.DisplayName, SelectedMinecraftId) Then Continue For
If SelectedFabric Is Nothing Then Return "需要安装 Fabric"
If SelectedFabric Is Nothing AndAlso SelectedQuilt Is Nothing Then Return "需要安装 Fabric / Quilt"
Return Nothing
Next
Return "没有可用版本"
Expand All @@ -1246,7 +1261,7 @@ Public Class PageDownloadInstall
Private Sub FabricApi_Loaded() Handles LoadFabricApi.StateChanged
Try
If DlFabricApiLoader.State <> LoadState.Finished Then Exit Sub
If SelectedMinecraftId Is Nothing OrElse SelectedFabric Is Nothing Then Exit Sub
If SelectedMinecraftId Is Nothing OrElse (SelectedFabric Is Nothing AndAlso SelectedQuilt Is Nothing) Then Exit Sub
'获取版本列表
Dim Versions As New List(Of CompFile)
For Each Version In DlFabricApiLoader.Output
Expand All @@ -1267,7 +1282,7 @@ Public Class PageDownloadInstall
PanFabricApi.Children.Add(FabricApiDownloadListItem(Version, AddressOf FabricApi_Selected))
Next
'自动选择 Fabric API
If Not AutoSelectedFabricApi Then
If (Not AutoSelectedFabricApi AndAlso SelectedQuilt Is Nothing) OrElse (SelectedQuilt IsNot Nothing AndAlso LoadQSLGetError() Is "没有可用版本") Then
AutoSelectedFabricApi = True
Log($"[Download] 已自动选择 Fabric API:{CType(PanFabricApi.Children(0), MyListItem).Title}")
FabricApi_Selected(PanFabricApi.Children(0), Nothing)
Expand All @@ -1280,11 +1295,13 @@ Public Class PageDownloadInstall
'选择与清除
Private Sub FabricApi_Selected(sender As MyListItem, e As EventArgs)
SelectedFabricApi = sender.Tag
SelectedAPIName = "Fabric API"
CardFabricApi.IsSwaped = True
SelectReload()
End Sub
Private Sub FabricApi_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnFabricApiClear.MouseLeftButtonUp
SelectedFabricApi = Nothing
SelectedAPIName = Nothing
CardFabricApi.IsSwaped = True
e.Handled = True
SelectReload()
Expand Down Expand Up @@ -1337,13 +1354,15 @@ Public Class PageDownloadInstall
Public Sub Quilt_Selected(sender As MyListItem, e As EventArgs)
SelectedQuilt = sender.Tag("version").ToString
SelectedLoaderName = "Quilt"
FabricApi_Loaded()
QSL_Loaded()
CardQuilt.IsSwaped = True
SelectReload()
End Sub
Private Sub Quilt_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnQuiltClear.MouseLeftButtonUp
SelectedQuilt = Nothing
SelectedQSL = Nothing
SelectedFabricApi = Nothing
SelectedLoaderName = Nothing
CardQuilt.IsSwaped = True
e.Handled = True
Expand Down Expand Up @@ -1376,6 +1395,7 @@ Public Class PageDownloadInstall
Private Function LoadQSLGetError() As String
If LoadQSL Is Nothing OrElse LoadQSL.State.LoadingState = MyLoading.MyLoadingState.Run Then Return "正在获取版本列表……"
If LoadQSL.State.LoadingState = MyLoading.MyLoadingState.Error Then Return "获取版本列表失败:" & CType(LoadQSL.State, Object).Error.Message
If SelectedAPIName IsNot Nothing AndAlso SelectedAPIName IsNot "QFAPI / QSL" Then Return $"与 {SelectedAPIName} 不兼容"
If DlQSLLoader.Output Is Nothing Then
If SelectedQuilt Is Nothing Then Return "需要安装 Quilt"
Return "正在获取版本列表……"
Expand Down Expand Up @@ -1434,11 +1454,13 @@ Public Class PageDownloadInstall
'选择与清除
Private Sub QSL_Selected(sender As MyListItem, e As EventArgs)
SelectedQSL = sender.Tag
SelectedAPIName = "QFAPI / QSL"
CardQSL.IsSwaped = True
SelectReload()
End Sub
Private Sub QSL_Clear(sender As Object, e As MouseButtonEventArgs) Handles BtnQSLClear.MouseLeftButtonUp
SelectedQSL = Nothing
SelectedAPIName = Nothing
CardQSL.IsSwaped = True
e.Handled = True
SelectReload()
Expand Down

0 comments on commit 6d88559

Please sign in to comment.