diff --git a/Plain Craft Launcher 2/Application.xaml.vb b/Plain Craft Launcher 2/Application.xaml.vb index eb34ceb2..427ac33e 100644 --- a/Plain Craft Launcher 2/Application.xaml.vb +++ b/Plain Craft Launcher 2/Application.xaml.vb @@ -103,6 +103,7 @@ Public Class Application Log($"[Start] 识别码:{UniqueAddress}{If(ThemeCheckOne(9), ",已解锁反馈主题", "")}") Log($"[Start] 程序路径:{PathWithName}") Log($"[Start] 系统编码:{Encoding.Default} ({Encoding.Default.CodePage}, GBK={IsGBKEncoding})") + Log($"[Start] 管理员权限:{IsAdmin()}") '检测压缩包运行 If Path.Contains(IO.Path.GetTempPath()) OrElse Path.Contains("AppData\Local\Temp\") Then MyMsgBox("PCL 正在临时文件夹运行,设置、游戏存档等很可能无法保存,且部分功能会无法使用或出错。" & vbCrLf & "请将 PCL 从压缩文件中解压,或是更换文件夹后再继续使用!", "环境警告", "我知道了", IsWarn:=True) diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index 0c4a5375..c30e0f5a 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -10,6 +10,15 @@ Public Class FormMain Dim FeatureList As New List(Of KeyValuePair(Of Integer, String)) '统计更新日志条目 #If BETA Then + If LastVersion < 332 Then 'Release 2.8.3 + If LastVersion = 330 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复部分玩家无法启动 MC 的 Bug")) + End If + If LastVersion < 330 Then 'Release 2.8.2 + FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "NeoForge 兼容与自动安装")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "支持编译、运行 PCL 开源代码")) + FeatureCount += 15 + BugCount += 22 + End If If LastVersion < 326 Then 'Release 2.7.4 FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "会自动隐藏明显不可用的自动安装选项")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化正版登录流程和 MC 性能")) @@ -115,6 +124,17 @@ Public Class FormMain '3:BUG+ IMP* FEAT- '2:BUG* IMP- '1:BUG- + If LastVersion < 331 Then 'Snapshot 2.8.3 + If LastVersion = 329 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复部分玩家无法启动 MC 的 Bug")) + End If + If LastVersion < 329 Then 'Snapshot 2.8.2 + If LastVersion >= 327 Then + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法安装 Beta 版 NeoForge 的整合包的 Bug")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复自动安装无法选择部分 OptiFine 的 Bug")) + End If + FeatureCount += 4 + BugCount += 8 + End If If LastVersion < 328 Then 'Snapshot 2.8.1 If LastVersion = 327 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法安装 Forge 1.12.2- 的 Bug")) If LastVersion = 327 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复无法输入解锁码的 Bug")) diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index c94c6224..2bf90e23 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb @@ -11,12 +11,12 @@ Public Module ModBase #Region "声明" '下列版本信息由更新器自动修改 - Public Const VersionBaseName As String = "2.8.1" '不含分支前缀的显示用版本名 - Public Const VersionStandardCode As String = "2.8.1." & VersionBranchCode '标准格式的四段式版本号 + Public Const VersionBaseName As String = "2.8.3" '不含分支前缀的显示用版本名 + Public Const VersionStandardCode As String = "2.8.3." & VersionBranchCode '标准格式的四段式版本号 #If BETA Then - Public Const VersionCode As Integer = 326 'Release + Public Const VersionCode As Integer = 332 'Release #Else - Public Const VersionCode As Integer = 328 'Snapshot + Public Const VersionCode As Integer = 331 'Snapshot #End If '自动生成的版本信息 Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName @@ -86,7 +86,7 @@ Public Module ModBase ''' ''' 系统盘盘符,以 \ 结尾。例如 “C:\”。 ''' - Public OsDrive As String = Environment.GetLogicalDrives().First.ToUpper.First & ":\" + Public OsDrive As String = Environment.GetLogicalDrives().Where(Function(p) Directory.Exists(p)).First.ToUpper.First & ":\" '#3799 ''' ''' 程序的缓存文件夹路径,以 \ 结尾。 ''' @@ -1016,7 +1016,7 @@ Public Module ModBase ''' Public Function CheckPermission(Path As String) As Boolean Try - If Path = "" Then Return False + If String.IsNullOrEmpty(Path) Then Return False If Not Path.EndsWithF("\") Then Path += "\" If Path.EndsWithF(":\System Volume Information\") OrElse Path.EndsWithF(":\$RECYCLE.BIN\") Then Return False If Not Directory.Exists(Path) Then Return False @@ -1257,12 +1257,19 @@ Re: Dim DeletedCount As Integer = 0 Dim Temp As String() Temp = Directory.GetFiles(Path) - For Each str As String In Temp + For Each FilePath As String In Temp + Dim RetriedFile As Boolean = False +RetryFile: Try - File.Delete(str) + File.Delete(FilePath) DeletedCount += 1 Catch ex As Exception - If IgnoreIssue Then + If Not RetriedFile Then + RetriedFile = True + Log(ex, $"删除文件失败,将在 0.3s 后重试({FilePath})") + Thread.Sleep(300) + GoTo RetryFile + ElseIf IgnoreIssue Then Log(ex, "删除单个文件可忽略地失败") Else Throw @@ -1273,10 +1280,17 @@ Re: For Each str As String In Temp DeleteDirectory(str, IgnoreIssue) Next + Dim RetriedDir As Boolean = False +RetryDir: Try Directory.Delete(Path, True) Catch ex As Exception - If IgnoreIssue Then + If Not RetriedDir Then + RetriedDir = True + Log(ex, $"删除文件夹失败,将在 0.3s 后重试({Path})") + Thread.Sleep(300) + GoTo RetryDir + ElseIf IgnoreIssue Then Log(ex, "删除单个文件夹可忽略地失败") Else Throw @@ -1652,7 +1666,10 @@ Re: ''' 为字符串进行 XML 转义。 ''' Public Function EscapeXML(Str As String) As String - Return Str.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("'", "'").Replace("""", """).Replace(vbCrLf, " ") + If Str.StartsWithF("{") Then Str = "{}" & Str '#4187 + Return Str. + Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("'", "'"). + Replace("""", """).Replace(vbCrLf, " ") End Function '正则 diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb index 5d320435..44ce4d07 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb @@ -629,19 +629,19 @@ NoSubtitle: If Id = Project.Id Then Return True '相同实例 '提取字符串中的字母和数字 Dim GetRaw = - Function(Data As String) As String - Dim Result As New StringBuilder() - For Each r As Char In Data.Where(Function(c) Char.IsLetterOrDigit(c)) - Result.Append(r) - Next - Return Result.ToString.ToLower - End Function + Function(Data As String) As String + Dim Result As New StringBuilder() + For Each r As Char In Data.Where(Function(c) Char.IsLetterOrDigit(c)) + Result.Append(r) + Next + Return Result.ToString.ToLower + End Function '来自不同的网站 If FromCurseForge = Project.FromCurseForge Then Return False 'Mod 加载器一致 - If ModLoaders.Count <> Project.ModLoaders.Count OrElse ModLoaders.Except(Project.ModLoaders).Count > 0 Then Return False + If ModLoaders.Count <> Project.ModLoaders.Count OrElse ModLoaders.Except(Project.ModLoaders).Any() Then Return False 'MC 版本一致 - If GameVersions.Count <> Project.GameVersions.Count OrElse GameVersions.Except(Project.GameVersions).Count > 0 Then Return False + If GameVersions.Count <> Project.GameVersions.Count OrElse GameVersions.Except(Project.GameVersions).Any() Then Return False 'MCMOD 翻译名 / 原名 / 描述文本 / Slug 的英文部分相同 If TranslatedName = Project.TranslatedName OrElse RawName = Project.RawName OrElse Description = Project.Description OrElse diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb index 9a72445b..6d31b6d0 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModDownload.vb @@ -8,9 +8,13 @@ ''' Public Function DlClientJarGet(Version As McVersion, ReturnNothingOnFileUseable As Boolean) As NetFile '获取底层继承版本 - Do While Not String.IsNullOrEmpty(Version.InheritVersion) - Version = New McVersion(Version.InheritVersion) - Loop + Try + Do While Not String.IsNullOrEmpty(Version.InheritVersion) + Version = New McVersion(Version.InheritVersion) + Loop + Catch ex As Exception + Log(ex, "获取底层继承版本失败") + End Try '检查 Json 是否标准 If Version.JsonObject("downloads") Is Nothing OrElse Version.JsonObject("downloads")("client") Is Nothing OrElse Version.JsonObject("downloads")("client")("url") Is Nothing Then Throw New Exception("底层版本 " & Version.Name & " 中无 Jar 文件下载信息") @@ -610,7 +614,9 @@ Public Sub DlForgeVersionOfficialMain(Loader As LoaderTask(Of String, List(Of DlForgeVersionEntry))) Dim Result As String Try - Result = NetGetCodeByDownload("https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_" & Loader.Input & ".html", UseBrowserUserAgent:=True) + Result = NetGetCodeByDownload("https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_" & + Loader.Input.Replace("-", "_") & '兼容 Forge 1.7.10-pre4,#4057 + ".html", UseBrowserUserAgent:=True) Catch ex As Exception If GetExceptionSummary(ex).Contains("(404)") Then Throw New Exception("没有可用版本") @@ -679,7 +685,9 @@ ''' Forge 版本列表,BMCLAPI。 ''' Public Sub DlForgeVersionBmclapiMain(Loader As LoaderTask(Of String, List(Of DlForgeVersionEntry))) - Dim Json As JArray = NetGetCodeByRequestRetry("https://bmclapi2.bangbang93.com/forge/minecraft/" & Loader.Input, IsJson:=True) + Dim Json As JArray = NetGetCodeByRequestRetry("https://bmclapi2.bangbang93.com/forge/minecraft/" & + Loader.Input.Replace("-", "_"), '兼容 Forge 1.7.10-pre4,#4057 + IsJson:=True) Dim Versions As New List(Of DlForgeVersionEntry) Try Dim Recommended As String = McDownloadForgeRecommendedGet(Loader.Input) diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 619e3253..bd8c991d 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -1276,25 +1276,40 @@ SystemBrowser: ''' 释放 Java Wrapper 并返回完整文件路径。 ''' Public Function ExtractJavaWrapper() As String - Dim WrapperPath As String = GetJavaWrapperDir() & "\JavaWrapper.jar" + Dim BaseDir As String = GetJavaWrapperDir() + Dim WrapperPath As String = BaseDir & "\JavaWrapper.jar" + Log("[Java] 选定的 Java Wrapper 路径:" & WrapperPath) SyncLock ExtractJavaWrapperLock '避免 OptiFine 和 Forge 安装时同时释放 Java Wrapper 导致冲突 - WriteFile(WrapperPath, GetResources("JavaWrapper")) + Dim IsWrapperWritten As Boolean = WriteFile(WrapperPath, GetResources("JavaWrapper")) + If Not IsWrapperWritten AndAlso File.Exists(WrapperPath) Then + '以下为 #4243 的修复,因为未知原因 Java Wrapper 可能变为只读文件 + Log("[Java] Java Wrapper 文件释放失败,但文件已存在,将在删除后尝试重新生成", LogLevel.Debug) + Try + File.Delete(WrapperPath) + IsWrapperWritten = WriteFile(WrapperPath, GetResources("JavaWrapper")) + Catch ex As Exception + Log(ex, "Java Wrapper 文件重新释放失败,将尝试更换文件名重新生成") + WrapperPath = BaseDir & "\JavaWrapper2.jar" + IsWrapperWritten = WriteFile(WrapperPath, GetResources("JavaWrapper")) + End Try + End If + If Not IsWrapperWritten Then Throw New FileNotFoundException("释放 Java Wrapper 失败,请查看 PCL 日志查找详细信息") End SyncLock - Log("[Java] 已释放 Java Wrapper:" & WrapperPath) Return WrapperPath End Function Private ExtractJavaWrapperLock As New Object + ''' ''' 获取 Java Wrapper 所在的文件夹,不以 \ 结尾。 ''' Public Function GetJavaWrapperDir() As String - If PathAppdata.IsASCII() Then + If (Path & "PCL").IsASCII() Then + Return Path & "PCL" + ElseIf PathAppdata.IsASCII() Then Return PathAppdata.TrimEnd("\") ElseIf PathTemp.IsASCII() Then - Log("[Java] Wrapper:AppData 路径中包含非 ASCII 字符,换用 Temp 目录") Return PathTemp.TrimEnd("\") Else - Log("[Java] Wrapper:AppData 路径与 Temp 路径中均包含非 ASCII 字符,换用 ProgramData 目录") Return OsDrive & "ProgramData\PCL" End If End Function diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb index fed43184..db6a62e8 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModModpack.vb @@ -25,6 +25,7 @@ Public Module ModModpack Archive = New ZipArchive(New FileStream(File, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) '从根目录判断整合包类型 If Archive.GetEntry("mcbbs.packmeta") IsNot Nothing Then PackType = 3 : Exit Try 'MCBBS 整合包(优先于 manifest.json 判断) + If Archive.GetEntry("mmc-pack.json") IsNot Nothing Then PackType = 2 : Exit Try 'MMC 整合包(优先于 manifest.json 判断,#4194) If Archive.GetEntry("modrinth.index.json") IsNot Nothing Then PackType = 4 : Exit Try 'Modrinth 整合包 If Archive.GetEntry("manifest.json") IsNot Nothing Then Dim Json As JObject = GetJson(ReadFile(Archive.GetEntry("manifest.json").Open, Encoding.UTF8)) @@ -35,7 +36,6 @@ Public Module ModModpack End If End If If Archive.GetEntry("modpack.json") IsNot Nothing Then PackType = 1 : Exit Try 'HMCL 整合包 - If Archive.GetEntry("mmc-pack.json") IsNot Nothing Then PackType = 2 : Exit Try 'MMC 整合包 '从一级目录判断整合包类型 For Each Entry In Archive.Entries Dim FullNames As String() = Entry.FullName.Split("/") @@ -196,7 +196,7 @@ Retry: End If Try Log("[ModPack] 整合包 Forge 版本:" & Id) - ForgeVersion = Id.Split("-")(1) + ForgeVersion = Id.Replace("forge-", "") Exit For Catch ex As Exception Log(ex, "读取整合包 Forge 版本失败:" & Id) @@ -205,7 +205,7 @@ Retry: 'NeoForge 指定 Try Log("[ModPack] 整合包 NeoForge 版本:" & Id) - NeoForgeVersion = Id.Split("-")(1) + NeoForgeVersion = Id.Replace("neoforge-", "") Exit For Catch ex As Exception Log(ex, "读取整合包 NeoForge 版本失败:" & Id) @@ -214,7 +214,7 @@ Retry: 'Fabric 指定 Try Log("[ModPack] 整合包 Fabric 版本:" & Id) - FabricVersion = Id.Split("-")(1) + FabricVersion = Id.Replace("fabric-", "") Exit For Catch ex As Exception Log(ex, "读取整合包 Fabric 版本失败:" & Id) diff --git a/Plain Craft Launcher 2/Modules/ModEvent.vb b/Plain Craft Launcher 2/Modules/ModEvent.vb index 9e3ed0f0..e5282a97 100644 --- a/Plain Craft Launcher 2/Modules/ModEvent.vb +++ b/Plain Craft Launcher 2/Modules/ModEvent.vb @@ -21,26 +21,28 @@ OpenWebsite(Data(0)) Case "打开文件", "打开帮助" - RunInThread(Sub() - Try - '确认实际路径 - Dim ActualPaths = GetEventAbsoluteUrls(Data(0), Type) - Dim Location = ActualPaths(0), WorkingDir = ActualPaths(1) - '执行 - If Type = "打开文件" Then - Dim Info As New ProcessStartInfo With { - .Arguments = If(Data.Length >= 2, Data(1), ""), - .FileName = Location, - .WorkingDirectory = WorkingDir - } - Process.Start(Info) - Else '打开帮助 - PageOtherHelp.EnterHelpPage(Location) - End If - Catch ex As Exception - Log(ex, "执行打开类自定义事件失败", LogLevel.Msgbox) - End Try - End Sub) + RunInThread( + Sub() + Try + '确认实际路径 + Dim ActualPaths = GetEventAbsoluteUrls(Data(0), Type) + Dim Location = ActualPaths(0), WorkingDir = ActualPaths(1) + Log($"[Control] 打开类自定义事件实际路径:{Location},工作目录:{WorkingDir}") + '执行 + If Type = "打开文件" Then + Dim Info As New ProcessStartInfo With { + .Arguments = If(Data.Length >= 2, Data(1), ""), + .FileName = Location, + .WorkingDirectory = WorkingDir + } + Process.Start(Info) + Else '打开帮助 + PageOtherHelp.EnterHelpPage(Location) + End If + Catch ex As Exception + Log(ex, "执行打开类自定义事件失败", LogLevel.Msgbox) + End Try + End Sub) Case "启动游戏" If Data(0) = "\current" Then diff --git a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb index 3c21a889..086cbf99 100644 --- a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb +++ b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb @@ -51,6 +51,6 @@ Imports System.Runtime.InteropServices ' 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 ' 方法是按如下所示使用“*” - - + + diff --git a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb index 45ac5efc..c8777c42 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb @@ -356,6 +356,7 @@ Public Module ModDownloadLib Log(ex, "开始 OptiFine 下载失败", LogLevel.Feedback) End Try End Sub + Private Sub McDownloadOptiFineSave(DownloadInfo As DlOptiFineListEntry) Try Dim Id As String = DownloadInfo.NameVersion @@ -1282,9 +1283,11 @@ Retry: Else 'Forge Dim Forge As DlForgeVersionEntry = Info + Dim FileName As String = + $"{Forge.Inherit.Replace("-", "_")}-{Forge.FileVersion}/forge-{Forge.Inherit.Replace("-", "_")}-{Forge.FileVersion}-{Forge.Category}.{Forge.FileExtension}" Files.Add(New NetFile({ - $"https://bmclapi2.bangbang93.com/maven/net/minecraftforge/forge/{Forge.Inherit}-{Forge.FileVersion}/forge-{Forge.Inherit}-{Forge.FileVersion}-{Forge.Category}.{Forge.FileExtension}", - $"https://files.minecraftforge.net/maven/net/minecraftforge/forge/{Forge.Inherit}-{Forge.FileVersion}/forge-{Forge.Inherit}-{Forge.FileVersion}-{Forge.Category}.{Forge.FileExtension}" + $"https://bmclapi2.bangbang93.com/maven/net/minecraftforge/forge/{FileName}", + $"https://files.minecraftforge.net/maven/net/minecraftforge/forge/{FileName}" }, InstallerAddress, New FileChecker(MinSize:=64 * 1024, Hash:=Forge.Hash))) End If Task.Output = Files diff --git a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml.vb b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml.vb index 124797f4..c7e1cfed 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/PageDownloadInstall.xaml.vb @@ -838,6 +838,7 @@ Public Class PageDownloadInstall Private Function IsOptiFineSuitForForge(OptiFine As DlOptiFineListEntry, Forge As DlForgeVersionEntry) If Forge.Inherit <> OptiFine.Inherit Then Return False '不是同一个大版本 If OptiFine.RequiredForgeVersion Is Nothing Then Return False '不兼容 Forge + If String.IsNullOrWhiteSpace(OptiFine.RequiredForgeVersion) Then Return True '#4183 If OptiFine.RequiredForgeVersion.Contains(".") Then 'XX.X.XXX Return VersionSortInteger(Forge.Version.ToString, OptiFine.RequiredForgeVersion) >= 0 Else 'XXXX diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb index c7da13c0..60005b2f 100644 --- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchLeft.xaml.vb @@ -21,6 +21,19 @@ '加载版本 RunInNewThread( Sub() + ''自动整合包安装:准备 + 'Dim PackInstallPath As String = Nothing + 'If File.Exists(Path & "modpack.zip") Then PackInstallPath = Path & "modpack.zip" + 'If File.Exists(Path & "modpack.mrpack") Then PackInstallPath = Path & "modpack.mrpack" + 'If PackInstallPath IsNot Nothing Then + ' Log("[Launch] 需自动安装整合包:" & PackInstallPath, LogLevel.Debug) + ' If Not Directory.Exists(Path & ".minecraft\") Then + ' Directory.CreateDirectory(Path & ".minecraft\") + ' Directory.CreateDirectory(Path & ".minecraft\versions\") + ' McFolderLauncherProfilesJsonCreate(Path & ".minecraft\") + ' End If + ' Setup.Set("LaunchFolderSelect", "$.minecraft\") + 'End If '确认 Minecraft 文件夹存在 PathMcFolder = Setup.Get("LaunchFolderSelect").ToString.Replace("$", Path) If PathMcFolder = "" OrElse Not Directory.Exists(PathMcFolder) Then @@ -35,17 +48,21 @@ End If Log("[Launch] Minecraft 文件夹:" & PathMcFolder) If Setup.Get("SystemDebugDelay") Then Thread.Sleep(RandomInteger(500, 3000)) + ''自动整合包安装 + 'If PackInstallPath IsNot Nothing Then + ' If ModpackInstall(PackInstallPath) Then + ' Log("[Launch] 自动安装整合包成功:" & PackInstallPath) + ' File.Delete(PackInstallPath) + ' Else + ' Log("[Launch] 自动安装整合包失败:" & PackInstallPath) + ' End If + 'End If '确认 Minecraft 版本存在 Dim Selection As String = Setup.Get("LaunchVersionSelect") - Dim Version As McVersion - If Selection = "" Then - Version = Nothing - Else - Version = New McVersion(Selection) - End If - If IsNothing(Version) OrElse Not (Version.Path.StartsWith(PathMcFolder) AndAlso Version.Check) Then + Dim Version As McVersion = If(Selection = "", Nothing, New McVersion(Selection)) + If Version Is Nothing OrElse Not (Version.Path.StartsWith(PathMcFolder) AndAlso Version.Check) Then '无效的版本 - Log("[Launch] Minecraft 版本无效" & If(IsNothing(Version), ",没有有效版本", ":" & Version.Path), If(IsNothing(Version), LogLevel.Normal, LogLevel.Debug)) + Log("[Launch] Minecraft 版本无效" & If(Version Is Nothing, ",没有有效版本", ":" & Version.Path), If(IsNothing(Version), LogLevel.Normal, LogLevel.Debug)) If Not McVersionListLoader.State = LoadState.Finished Then LoaderFolderRun(McVersionListLoader, PathMcFolder, LoaderFolderRunType.ForceRun, MaxDepth:=1, ExtraPath:="versions\", WaitForExit:=True) If Not McVersionList.Any() OrElse McVersionList.First.Value(0).Logo.Contains("RedstoneBlock") Then Version = Nothing @@ -619,7 +636,7 @@ Finish: Log("[Minecraft] 启动按钮:正在加载 Minecraft 版本") FrmLaunchLeft.BtnLaunch.Text = "正在加载" FrmLaunchLeft.BtnLaunch.IsEnabled = False - FrmLaunchLeft.LabVersion.Text = "正在加载版本列表,请稍候" + FrmLaunchLeft.LabVersion.Text = "正在加载中,请稍候" FrmLaunchLeft.BtnVersion.IsEnabled = False FrmLaunchLeft.BtnMore.Visibility = Visibility.Collapsed Case 1 diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.vb b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.vb index a283e577..2951a1a1 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupUI.xaml.vb @@ -438,7 +438,7 @@ Refresh: End If End Sub Private Sub LabLauncherTheme11Click_MouseLeftButtonUp() Handles LabLauncherTheme11Click.MouseLeftButtonUp, RadioLauncherTheme11.MouseRightButtonUp - If LabLauncherTheme11Click.Visibility = Visibility.Collapsed OrElse LabLauncherTheme11Click.ToolTip.ToString.Contains("点击") Then + If LabLauncherTheme11Click.Visibility = Visibility.Collapsed OrElse If(LabLauncherTheme11Click.ToolTip, "").ToString.Contains("点击") Then If MyMsgBox( "1. 不爬取或攻击相关服务或网站,不盗取相关账号,没有谜题可以或需要以此来解决。" & vbCrLf & "2. 不得篡改或损毁相关公开信息,请尽量让它们保持原状。" & vbCrLf & diff --git a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj index 115db8e1..0443dbb4 100644 --- a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj +++ b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj @@ -38,7 +38,7 @@ false false true - D:\Minecraft\程序\ + .\bin\ Plain Craft Launcher 2.xml 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314 false @@ -55,7 +55,7 @@ false false true - D:\Minecraft\程序\ + .\bin\ Plain Craft Launcher 2.xml 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42314 false @@ -100,7 +100,7 @@ false - D:\Minecraft\程序\ + .\bin\ Plain Craft Launcher 2.xml true 1 @@ -111,7 +111,7 @@ false - D:\Minecraft\程序\ + .\bin\ Plain Craft Launcher 2.xml true 1 @@ -129,7 +129,7 @@ - D:\Minecraft\程序\ + .\bin\ RELEASE,BY_UPDATE Plain Craft Launcher 2.xml true diff --git a/Plain Craft Launcher 2/Resources/Custom.xaml b/Plain Craft Launcher 2/Resources/Custom.xaml index 40ca09c5..8900f8cf 100644 --- a/Plain Craft Launcher 2/Resources/Custom.xaml +++ b/Plain Craft Launcher 2/Resources/Custom.xaml @@ -148,7 +148,7 @@ + Text="打开记事本" EventType="打开文件" EventData="notepad" /> @@ -272,7 +272,7 @@ + Text="打开记事本" EventType="打开文件" EventData="notepad" /> diff --git a/Plain Craft Launcher 2/Resources/Help.zip b/Plain Craft Launcher 2/Resources/Help.zip index c55c8d30..600091f7 100644 Binary files a/Plain Craft Launcher 2/Resources/Help.zip and b/Plain Craft Launcher 2/Resources/Help.zip differ diff --git "a/\346\234\200\346\226\260\346\255\243\345\274\217\347\211\210.zip" "b/\346\234\200\346\226\260\346\255\243\345\274\217\347\211\210.zip" index 22f5cc68..f4ca635a 100644 Binary files "a/\346\234\200\346\226\260\346\255\243\345\274\217\347\211\210.zip" and "b/\346\234\200\346\226\260\346\255\243\345\274\217\347\211\210.zip" differ