From c9fb9b9eea678c482d0385e5116a16c372ee9f3e Mon Sep 17 00:00:00 2001 From: tangge233 Date: Mon, 23 Sep 2024 22:23:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8B=E8=BD=BD=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/PageDownload/ModDownloadLib.vb | 48 ++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb index 6982450..646704d 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb @@ -253,11 +253,47 @@ Public Module ModDownloadLib Version = sender.Parent.Parent.Tag End If RunInThread(Sub() - Dim Json As JObject = NetGetCodeByRequestRetry(Version("url"), IsJson:=True) - If Json("downloads")?("server") Is Nothing Then + Dim Json As JObject + Try + Json = NetGetCodeByRequestRetry(Version("url"), IsJson:=True) + Catch ex As Exception + Log(ex, "未找能获取到服务端文件,文件可能不存在") + End Try + If Json?("downloads")?("server") Is Nothing Then Hint("此版本暂未有服务端文件提供下载") Else - PageOtherTest.StartCustomDownload(Json("downloads")("server")("url").ToString(), Version("id").ToString() & "-server.jar") + RunInUi(Sub() + Try + Dim Url As String = Json("downloads")("server")("url").ToString() + Dim FileName As String = Version("id").ToString() & "-server.jar" + Dim VersionID As String = Version("id").ToString() + Dim Target As String = SelectAs("选择保存位置", FileName, "原版服务端 (*.jar)|*.jar") + If Not Target.Contains("\") Then Exit Sub + + '重复任务检查 + For Each OngoingLoader In LoaderTaskbar + If OngoingLoader.Name <> $"{VersionID} 服务端下载" Then Continue For + Hint("该服务端文件正在下载中!", HintType.Critical) + Exit Sub + Next + + '构造步骤加载器 + Dim Loaders As New List(Of LoaderBase) + '下载 + Dim Address As New List(Of String) + Address.Add(Url) + Loaders.Add(New LoaderDownload("下载服务端文件", New List(Of NetFile) From {New NetFile(Address.ToArray, Target, New FileChecker(MinSize:=1024 * 64))}) With {.ProgressWeight = 15}) + '启动 + Dim Loader As New LoaderCombo(Of JObject)($"{VersionID} 服务端下载", Loaders) With {.OnStateChanged = AddressOf DownloadStateSave} + Loader.Start(Json("downloads")("server")) + LoaderTaskbarAdd(Loader) + FrmMain.BtnExtraDownload.ShowRefresh() + FrmMain.BtnExtraDownload.Ribble() + + Catch ex As Exception + Log(ex, "开始服务端文件下载失败", LogLevel.Feedback) + End Try + End Sub) End If End Sub ) @@ -1475,9 +1511,9 @@ Sub(Task As LoaderTask(Of List(Of NetFile), Boolean)) If File.Exists(InstallerAddress) Then File.Delete(InstallerAddress) If Directory.Exists(InstallerAddress & "_unrar\") Then DeleteDirectory(InstallerAddress & "_unrar\") Catch ex As Exception - Log(ex, "非新版方式安装 Forge 清理文件时出错") - End Try - End Try + Log(ex, "非新版方式安装 Forge 清理文件时出错") + End Try + End Try End Sub) With {.ProgressWeight = 1}) End If