From c3ee4c7e1c7bc8658309e6c89b610d85a6d51955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BE=99=E8=85=BE=E7=8C=AB=E8=B7=83?= <1043137532@qq.com> Date: Mon, 30 Mar 2026 04:34:11 +0800 Subject: [PATCH] 2.12.6 --- Plain Craft Launcher 2/FormMain.xaml.vb | 140 ++---------------- .../Modules/Base/ModBase.vb | 8 +- .../Modules/Minecraft/ModComp.vb | 16 +- .../Modules/Minecraft/ModLaunch.vb | 14 +- .../Modules/Minecraft/ModMinecraft.vb | 19 +-- .../My Project/AssemblyInfo.vb | 4 +- .../My Project/Resources.Designer.vb | 10 ++ .../My Project/Resources.resx | 3 + .../Pages/PageDownload/ModDownloadLib.vb | 39 ++--- .../Pages/PageInstance/PageInstanceSetup.xaml | 5 +- .../Pages/PageOther/PageOtherAbout.xaml | 89 +++++++---- .../Pages/PageSetup/PageSetupLaunch.xaml | 4 +- .../Pages/PageSetup/Settings.vb | 2 + .../Plain Craft Launcher 2.vbproj | 1 + .../Resources/lwjgl-unsafe-agent-1.0.jar | Bin 0 -> 6588 bytes 15 files changed, 155 insertions(+), 199 deletions(-) create mode 100644 Plain Craft Launcher 2/Resources/lwjgl-unsafe-agent-1.0.jar diff --git a/Plain Craft Launcher 2/FormMain.xaml.vb b/Plain Craft Launcher 2/FormMain.xaml.vb index 46862eb..b38582a 100644 --- a/Plain Craft Launcher 2/FormMain.xaml.vb +++ b/Plain Craft Launcher 2/FormMain.xaml.vb @@ -11,10 +11,11 @@ Public Class FormMain Dim FeatureList As New List(Of KeyValuePair(Of Integer, String)) '统计更新日志条目 #If BETA Then - If LastVersion < 386 Then 'Release 2.12.5 + If LastVersion < 387 Then 'Release 2.12.6 + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:降低 Minecraft 的内存占用")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:Minecraft 使用 Java 25+ 时的一个性能问题")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:无法下载 NeoForge 26.1")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:部分关键词搜不到资源,特别是中文 Mod 搜索经常没有结果")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:降低游戏的内存占用")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:老版本 Windows 无法启动游戏")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:连接 Mojang 的服务可能失败,提示错误码 421")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法访问爱发电")) @@ -94,75 +95,31 @@ Public Class FormMain FeatureCount += 9 BugCount += 26 End If - If LastVersion < 355 Then 'Release 2.9.3 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:使用新的版本隔离策略")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:添加了在全局启动设置与版本独立设置之间互相跳转的按钮")) - FeatureCount += 20 - BugCount += 28 - End If - If LastVersion < 352 Then 'Release 2.9.1 - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "新增:导出整合包功能")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:支持在超长路径下安装、启动游戏")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法安装 1.21 OptiFine")) - FeatureCount += 23 - BugCount += 10 - End If - If LastVersion < 349 Then 'Release 2.8.13 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:网络环境不佳时,Mod、整合包页面的加载速度")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:部分电脑无法打开程序")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:可能无法识别、更新 Mod")) - FeatureCount += 6 - BugCount += 14 - End If - If LastVersion < 347 Then 'Release 2.8.12 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:Mod 管理页面添加下载 Mod、安装 Mod 选项")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:Mod 详情页面支持按加载器、游戏版本进行分类和筛选")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "新增:支持安装同时包含 modpack 文件和启动器的懒人包")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "优化:整合包导入流程")) - FeatureCount += 43 - BugCount += 37 - End If - If LastVersion < 342 Then 'Release 2.8.9 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:支持下载原版服务端")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "新增:本地 Mod 的标题支持选择显示 Mod 原始文件名")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:搜索后启用/禁用 Mod 时出错")) - FeatureCount += 17 - BugCount += 13 - End If - If LastVersion < 340 Then 'Release 2.8.8 - If LastVersion = 338 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:数个与新正版登录相关的严重 Bug")) - FeatureCount += 3 - BugCount += 7 - End If - If LastVersion < 338 Then 'Release 2.8.7 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化:使用新的正版登录方式,以提高安全性")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:安装整合包、检索 Mod 的稳定性")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法加载部分 Mod 的图标")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:在 Mod 管理页面删除 Mod 导致报错")) - FeatureCount += 11 - BugCount += 21 - End If #Else '5: FEAT+ '4: IMP+ FEAT* '3:BUG+ IMP* FEAT- '2:BUG* IMP- '1:BUG- + If LastVersion < 386 Then 'Snapshot 2.12.6 + FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:Minecraft 使用 Java 25+ 时的一个性能问题")) + If LastVersion = 384 OrElse LastVersion = 385 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:无法正常重命名游戏版本")) + If LastVersion = 385 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法显示 Modrinth 整合包的版本列表")) + BugCount += 1 + End If If LastVersion < 385 Then 'Snapshot 2.12.5 FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:无法下载 NeoForge 26.1")) If LastVersion = 384 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:下载可能失败,提示下载管理刷新线程出错")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:无法保存选择的 Minecraft 文件夹")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:使用中文搜索 Mod 时, 部分结果会忽略筛选条件")) + FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:使用中文搜索 Mod 时,部分结果会忽略筛选条件")) End If FeatureCount += 3 BugCount += 6 End If If LastVersion < 384 Then 'Snapshot 2.12.4 + FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:降低 Minecraft 的内存占用")) FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "修复:部分关键词搜不到资源,特别是中文 Mod 搜索经常没有结果")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:降低游戏的内存占用")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:老版本 Windows 无法启动游戏")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:连接 Mojang 的服务可能失败,提示错误码 421")) FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法访问爱发电")) @@ -282,81 +239,6 @@ Public Class FormMain FeatureCount += 9 BugCount += 26 End If - If LastVersion < 354 Then 'Snapshot 2.9.3 - If LastVersion = 352 Then - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:低版本 MC 没有声音")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:若不安装 Mod 加载器,则无法安装 OptiFine 1.14+")) - End If - FeatureCount += 8 - BugCount += 8 - End If - If LastVersion < 352 Then 'Snapshot 2.9.2 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:Minecraft 会优先使用独立显卡运行")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "优化:简化下载新版本第二步的 UI")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:使用新的版本隔离策略")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:添加了在全局启动设置与版本独立设置之间互相跳转的按钮")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:使用快照版导出带 PCL 的整合包可能失败")) - FeatureCount += 12 - BugCount += 20 - End If - If LastVersion < 351 Then 'Snapshot 2.9.1 - If LastVersion = 350 Then - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化:对导出整合包功能进行了 7 项优化,详见完整更新日志")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法进行第三方登录")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:在部分版本下,打开导出页面会导致启动器崩溃")) - BugCount += 1 - End If - BugCount += 2 - End If - If LastVersion < 350 Then 'Snapshot 2.9.0 - FeatureList.Add(New KeyValuePair(Of Integer, String)(5, "新增:导出整合包功能")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:支持在超长路径下安装、启动游戏")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法安装 1.21 OptiFine")) - FeatureCount += 21 - BugCount += 10 - End If - If LastVersion < 348 Then 'Snapshot 2.8.13 - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:网络环境不佳时,Mod、整合包页面的加载速度")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:部分电脑无法打开程序")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:可能无法识别、更新 Mod")) - FeatureCount += 6 - BugCount += 14 - End If - If LastVersion < 346 Then 'Snapshot 2.8.12 - If LastVersion = 345 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:帮助页面报错")) - End If - If LastVersion < 345 Then 'Snapshot 2.8.11 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:Mod 管理页面添加下载 Mod、安装 Mod 选项")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:Mod 详情页面支持按加载器、游戏版本进行分类和筛选")) - FeatureCount += 23 - BugCount += 21 - End If - If LastVersion < 343 Then 'Snapshot 2.8.10 - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "新增:支持安装同时包含 modpack 文件和启动器的懒人包")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "优化:整合包导入流程")) - FeatureCount += 20 - BugCount += 16 - End If - If LastVersion < 341 Then 'Snapshot 2.8.9 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "新增:支持下载原版服务端")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(3, "新增:本地 Mod 的标题支持选择显示 Mod 原始文件名")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:搜索后启用/禁用 Mod 时出错")) - FeatureCount += 17 - BugCount += 13 - End If - If LastVersion < 339 Then 'Snapshot 2.8.8 - If LastVersion = 337 Then FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:数个与新正版登录相关的严重 Bug")) - FeatureCount += 3 - BugCount += 7 - End If - If LastVersion < 337 Then 'Snapshot 2.8.7 - FeatureList.Add(New KeyValuePair(Of Integer, String)(4, "优化:使用新的正版登录方式,以提高安全性")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(2, "优化:安装整合包、检索 Mod 的稳定性")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:无法加载部分 Mod 的图标")) - FeatureList.Add(New KeyValuePair(Of Integer, String)(1, "修复:在 Mod 管理页面删除 Mod 导致报错")) - FeatureCount += 11 - BugCount += 21 - End If #End If '整理更新日志文本 Dim ContentList As New List(Of String) diff --git a/Plain Craft Launcher 2/Modules/Base/ModBase.vb b/Plain Craft Launcher 2/Modules/Base/ModBase.vb index 6665adb..498a0bf 100644 --- a/Plain Craft Launcher 2/Modules/Base/ModBase.vb +++ b/Plain Craft Launcher 2/Modules/Base/ModBase.vb @@ -14,13 +14,13 @@ Public Module ModBase #Region "声明" '下列版本信息由更新器自动修改 - Public Const VersionBaseName As String = "2.12.5" '不含分支前缀的显示用版本名 - Public Const VersionStandardCode As String = "2.12.5." & VersionBranchCode '标准格式的四段式版本号 + Public Const VersionBaseName As String = "2.12.6" '不含分支前缀的显示用版本名 + Public Const VersionStandardCode As String = "2.12.6." & VersionBranchCode '标准格式的四段式版本号 Public Const CommitHash As String = "" 'Commit Hash,由 GitHub Workflow 自动替换 #If BETA Then - Public Const VersionCode As Integer = 383 'Release + Public Const VersionCode As Integer = 387 'Release #Else - Public Const VersionCode As Integer = 385 'Snapshot + Public Const VersionCode As Integer = 386 'Snapshot #End If '自动生成的版本信息 Public Const VersionDisplayName As String = VersionBranchName & " " & VersionBaseName diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb index 37aaa81..1c5159a 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModComp.vb @@ -1528,12 +1528,16 @@ NextPage: '结果可能混杂着 Mod、数据包和服务端插件 Dim RawLoaders As List(Of String) = Data("loaders").Select(Function(v) v.ToString).ToList ModLoaders = New List(Of CompModLoaderType) - If RawLoaders.Intersect({"bukkit", "folia", "paper", "purpur", "spigot"}).Any() Then Type = CompType.Plugin 'Veinminer Enchantment 同时支持服务端与 Fabric - If RawLoaders.Contains("datapack") Then Type = CompType.DataPack - If RawLoaders.Contains("forge") Then ModLoaders.Add(CompModLoaderType.Forge) : Type = CompType.Mod - If RawLoaders.Contains("neoforge") Then ModLoaders.Add(CompModLoaderType.NeoForge) : Type = CompType.Mod - If RawLoaders.Contains("fabric") Then ModLoaders.Add(CompModLoaderType.Fabric) : Type = CompType.Mod - If RawLoaders.Contains("quilt") Then ModLoaders.Add(CompModLoaderType.Quilt) : Type = CompType.Mod + If Type.HasFlag(CompType.Mod) OrElse Type.HasFlag(CompType.DataPack) Then + If RawLoaders.Intersect({"bukkit", "folia", "paper", "purpur", "spigot"}).Any() Then Type = CompType.Plugin 'Veinminer Enchantment 同时支持服务端与 Fabric + If RawLoaders.Contains("datapack") Then Type = CompType.DataPack + If RawLoaders.Contains("forge") Then ModLoaders.Add(CompModLoaderType.Forge) : Type = CompType.Mod + If RawLoaders.Contains("neoforge") Then ModLoaders.Add(CompModLoaderType.NeoForge) : Type = CompType.Mod + If RawLoaders.Contains("fabric") Then ModLoaders.Add(CompModLoaderType.Fabric) : Type = CompType.Mod + If RawLoaders.Contains("quilt") Then ModLoaders.Add(CompModLoaderType.Quilt) : Type = CompType.Mod + Else + '使用传入的类别,不作修改(#8377) + End If 'Dependencies If Data.ContainsKey("dependencies") Then RawDependencies = Data("dependencies"). diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb index 6722894..90f6e73 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.vb @@ -1413,7 +1413,9 @@ NextInstance: End If 'JLW - Dim UseJLW As Boolean = Not Settings.Get("LaunchAdvanceDisableJLW") AndAlso Not Settings.Get("VersionAdvanceDisableJLW", McInstanceSelected) + Dim UseJLW As Boolean = + Not Settings.Get("LaunchAdvanceDisableJLW") AndAlso Not Settings.Get("VersionAdvanceDisableJLW", McInstanceSelected) AndAlso + McLaunchJavaSelected.MajorVersion <= 18 If UseJLW Then If McLaunchJavaSelected.MajorVersion >= 9 Then Args.Add("--add-exports") : Args.Add("cpw.mods.bootstraplauncher/cpw.mods.bootstraplauncher=ALL-UNNAMED") @@ -1421,6 +1423,14 @@ NextInstance: Args.Add("-Doolloo.jlw.tmpdir=${pure_directory}") '这里需要不以 \ 结尾 End If + 'LUA + Dim UseLUA As Boolean = + Not Settings.Get("LaunchAdvanceDisableLUA") AndAlso Not Settings.Get("VersionAdvanceDisableLUA", McInstanceSelected) AndAlso + McLaunchJavaSelected.MajorVersion >= 25 + If UseLUA Then + Args.Add($"-javaagent:""{ExtractPatch("LUA")}""") + End If + #Region "内存管理" McLaunchLog("当前剩余内存:" & Math.Round(My.Computer.Info.AvailablePhysicalMemory / 1024 / 1024 / 1024 * 10) / 10 & "G") @@ -1489,7 +1499,7 @@ NextInstance: '为 JLW 添加 -jar,它必须放在最后 If UseJLW Then - Args.Add("-jar") : Args.Add(ExtractJavaWrapper()) + Args.Add("-jar") : Args.Add(ExtractPatch("JavaWrapper")) End If '再次去重并输出 diff --git a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb index 0ad1611..e778995 100644 --- a/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb +++ b/Plain Craft Launcher 2/Modules/Minecraft/ModMinecraft.vb @@ -9,18 +9,19 @@ Public Module ModMinecraft ''' Public Property McFolderSelected As String Get - Dim McFolderSelectedLast As String = Settings.Get("LaunchFolderSelect") - McFolderSelectedLast = McFolderSelectedLast.Replace("$", Path) - If _McFolderSelected Is Nothing Then _McFolderSelected = McFolderSelectedLast '仅在首次读取时触发 + If _McFolderSelected Is Nothing Then SetMcFolder(Settings.Get("LaunchFolderSelect")) '不能使用 McFolderSelected 触发 Set,这会被视为为 Get 设置返回值 Return _McFolderSelected End Get Set(Value As String) - If _McFolderSelected = Value Then Return - _McFolderSelected = Value.Replace("$", Path) - Settings.Set("LaunchFolderSelect", Value.Replace(Path, "$")) - Log("[Minecraft] 当前选择的 Minecraft 文件夹:" & _McFolderSelected) + SetMcFolder(Value) End Set End Property + Private Sub SetMcFolder(Value As String) '等同 McFolderSelected.Set + If _McFolderSelected = Value Then Return + _McFolderSelected = Value.Replace("$", Path) + Settings.Set("LaunchFolderSelect", Value.Replace(Path, "$")) + Log("[Minecraft] 当前选择的 Minecraft 文件夹:" & _McFolderSelected) + End Sub Private _McFolderSelected As String ''' ''' 当前的 Minecraft 文件夹列表。 @@ -43,8 +44,8 @@ Public Module ModMinecraft Public Overrides Function Equals(obj As Object) As Boolean If Not (TypeOf obj Is McFolder) Then Return False - Dim folder = DirectCast(obj, McFolder) - Return Name = folder.Name AndAlso Location = folder.Location AndAlso Type = folder.Type + Dim Folder = DirectCast(obj, McFolder) + Return Name = Folder.Name AndAlso Location = Folder.Location AndAlso Type = Folder.Type End Function Public Overrides Function ToString() As String Return Location diff --git a/Plain Craft Launcher 2/My Project/AssemblyInfo.vb b/Plain Craft Launcher 2/My Project/AssemblyInfo.vb index bf8a58b..1bb0658 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/My Project/Resources.Designer.vb b/Plain Craft Launcher 2/My Project/Resources.Designer.vb index f4bdeee..3005963 100644 --- a/Plain Craft Launcher 2/My Project/Resources.Designer.vb +++ b/Plain Craft Launcher 2/My Project/Resources.Designer.vb @@ -150,6 +150,16 @@ Namespace My.Resources End Get End Property + ''' + ''' 查找 System.Byte[] 类型的本地化资源。 + ''' + Friend ReadOnly Property LUA() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("LUA", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + ''' ''' 查找 System.Byte[] 类型的本地化资源。 ''' diff --git a/Plain Craft Launcher 2/My Project/Resources.resx b/Plain Craft Launcher 2/My Project/Resources.resx index 6131341..1197216 100644 --- a/Plain Craft Launcher 2/My Project/Resources.resx +++ b/Plain Craft Launcher 2/My Project/Resources.resx @@ -145,6 +145,9 @@ ..\Resources\libwebp64.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\lwjgl-unsafe-agent-1.0.jar;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\ModData.txt;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb index bde8dbb..a203e97 100644 --- a/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb +++ b/Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.vb @@ -426,7 +426,7 @@ pause" '添加 Java Wrapper 作为主 Jar Dim Arguments As String If UseJavaWrapper AndAlso Not Settings.Get("LaunchAdvanceDisableJLW") Then - Arguments = $"-Doolloo.jlw.tmpdir=""{PathPure.TrimEnd("\")}"" -Duser.home=""{BaseMcFolderHome.TrimEnd("\")}"" -cp ""{Target}"" -jar ""{ExtractJavaWrapper()}"" optifine.Installer" + Arguments = $"-Doolloo.jlw.tmpdir=""{PathPure.TrimEnd("\")}"" -Duser.home=""{BaseMcFolderHome.TrimEnd("\")}"" -cp ""{Target}"" -jar ""{ExtractPatch("JavaWrapper")}"" optifine.Installer" Else Arguments = $"-Duser.home=""{BaseMcFolderHome.TrimEnd("\")}"" -cp ""{Target}"" optifine.Installer" End If @@ -1101,7 +1101,7 @@ Retry: '添加 Java Wrapper 作为主 Jar Dim Arguments As String If UseJavaWrapper AndAlso Not Settings.Get("LaunchAdvanceDisableJLW") Then - Arguments = $"-Doolloo.jlw.tmpdir=""{PathPure.TrimEnd("\")}"" -cp ""{PathTemp}Cache\forge_installer.jar;{Target}"" -jar ""{ExtractJavaWrapper()}"" com.bangbang93.ForgeInstaller ""{McFolder}" + Arguments = $"-Doolloo.jlw.tmpdir=""{PathPure.TrimEnd("\")}"" -cp ""{PathTemp}Cache\forge_installer.jar;{Target}"" -jar ""{ExtractPatch("JavaWrapper")}"" com.bangbang93.ForgeInstaller ""{McFolder}" Else Arguments = $"-cp ""{PathTemp}Cache\forge_installer.jar;{Target}"" com.bangbang93.ForgeInstaller ""{McFolder}" End If @@ -2373,37 +2373,38 @@ Retry: Private VanillaSyncLock As New Object ''' - ''' 释放 Java Wrapper 并返回完整文件路径。 + ''' 释放补丁文件并返回完整文件路径。 ''' - Public Function ExtractJavaWrapper() As String - Dim WrapperPath As String = PathPure & "JavaWrapper.jar" - Log("[Java] 选定的 Java Wrapper 路径:" & WrapperPath) + ''' "LUA" 或 "JavaWrapper"。 + Public Function ExtractPatch(Patch As String) As String + Dim PatchPath As String = $"{PathPure}{Patch}.jar" + Log($"[Java] 选定的 {Patch} 路径:{PatchPath}") Static Lock As New Object - SyncLock Lock '避免 OptiFine 和 Forge 安装时同时释放 Java Wrapper 导致冲突 + SyncLock Lock '避免 OptiFine 和 Forge 安装时同时释放导致冲突 Try - WriteFile(WrapperPath, GetResources("JavaWrapper")) + WriteFile(PatchPath, GetResources(Patch)) Catch ex As Exception - If File.Exists(WrapperPath) Then - '因为未知原因 Java Wrapper 可能变为只读文件(#4243) - Log(ex, "Java Wrapper 文件释放失败,但文件已存在,将在删除后尝试重新生成", LogLevel.Developer) + If File.Exists(PatchPath) Then + '因为未知原因可能变为只读文件(#4243) + Log(ex, $"{Patch} 文件释放失败,但文件已存在,将在删除后尝试重新生成", LogLevel.Developer) Try - File.Delete(WrapperPath) - WriteFile(WrapperPath, GetResources("JavaWrapper")) + File.Delete(PatchPath) + WriteFile(PatchPath, GetResources(Patch)) Catch ex2 As Exception - Log(ex2, "Java Wrapper 文件重新释放失败,将尝试更换文件名重新生成", LogLevel.Developer) - WrapperPath = PathPure & "JavaWrapper2.jar" + Log(ex2, $"{Patch} 文件重新释放失败,将尝试更换文件名重新生成", LogLevel.Developer) + PatchPath = $"{PathPure}{Patch}2.jar" Try - WriteFile(WrapperPath, GetResources("JavaWrapper")) + WriteFile(PatchPath, GetResources(Patch)) Catch ex3 As Exception - Throw New FileNotFoundException("释放 Java Wrapper 最终尝试失败", ex3) + Throw New FileNotFoundException($"释放 {Patch} 最终尝试失败", ex3) End Try End Try Else - Throw New FileNotFoundException("释放 Java Wrapper 失败", ex) + Throw New FileNotFoundException($"释放 {Patch} 失败", ex) End If End Try End SyncLock - Return WrapperPath + Return PatchPath End Function End Module diff --git a/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml b/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml index e4ec8c6..03fb66a 100644 --- a/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml +++ b/Plain Craft Launcher 2/Pages/PageInstance/PageInstanceSetup.xaml @@ -246,7 +246,10 @@ ToolTip="完全不更改 assets;不校验 libraries、第三方登录库与版本主 jar 文件是否被修改。 如果你没有修改相关文件,请勿勾选此项。" /> + ToolTip="是否使用 Java Launch Wrapper 修复 Java 18- 在中文路径下可能无法正常启动的问题。 详见:https://github.com/00ll00/java_launch_wrapper" /> + diff --git a/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml b/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml index 56a215d..427ea7e 100644 --- a/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml +++ b/Plain Craft Launcher 2/Pages/PageOther/PageOtherAbout.xaml @@ -169,12 +169,14 @@ + + @@ -188,7 +190,9 @@ + + @@ -321,6 +325,15 @@ + + + + + + + + + @@ -359,6 +372,7 @@ + @@ -366,6 +380,7 @@ + @@ -464,6 +479,8 @@ + + @@ -507,6 +524,7 @@ + @@ -533,6 +551,7 @@ + @@ -552,6 +571,7 @@ + @@ -619,6 +639,9 @@ + + + @@ -650,6 +673,7 @@ + @@ -665,6 +689,7 @@ + @@ -840,6 +865,7 @@ + @@ -849,6 +875,7 @@ + @@ -914,7 +941,10 @@ + + + - - + + + local:CustomEventService.EventType="打开网页" local:CustomEventService.EventData="https://github.com/HMCL-dev/lwjgl-unsafe-agent" /> + + + + + - - - + + - - - - + + - - - - + + - - - - + + - - - - + + - - - + + - diff --git a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml index 6c6e48b..32c52ff 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml +++ b/Plain Craft Launcher 2/Pages/PageSetup/PageSetupLaunch.xaml @@ -289,7 +289,9 @@ + ToolTipService.Placement="Right" ToolTip="是否使用 Java Launch Wrapper 修复 Java 18- 在中文路径下可能无法正常启动的问题。 详见:https://github.com/00ll00/java_launch_wrapper" /> + diff --git a/Plain Craft Launcher 2/Pages/PageSetup/Settings.vb b/Plain Craft Launcher 2/Pages/PageSetup/Settings.vb index 1e477cd..f90473b 100644 --- a/Plain Craft Launcher 2/Pages/PageSetup/Settings.vb +++ b/Plain Craft Launcher 2/Pages/PageSetup/Settings.vb @@ -98,6 +98,7 @@ New Setting("LaunchAdvanceRun", ""), New Setting("LaunchAdvanceRunWait", True), New Setting("LaunchAdvanceDisableJLW", False), + New Setting("LaunchAdvanceDisableLUA", False), New Setting("LaunchAdvanceGraphicCard", True, Source:=Sources.Registry), New Setting("LaunchAdvanceGC", 4), New Setting("LaunchRamType", 0, OnChanged:=AddressOf PageSetupLaunch.UpdateRamType), @@ -171,6 +172,7 @@ New Setting("VersionAdvanceRun", "", Source:=Sources.Instance), New Setting("VersionAdvanceRunWait", True, Source:=Sources.Instance), New Setting("VersionAdvanceDisableJLW", False, Source:=Sources.Instance), + New Setting("VersionAdvanceDisableLUA", False, Source:=Sources.Instance), New Setting("VersionAdvanceDisableModUpdate", False, Source:=Sources.Instance), New Setting("VersionAdvanceGC", 0, Source:=Sources.Instance), New Setting("VersionRamType", 2, Source:=Sources.Instance, OnChanged:=AddressOf PageInstanceSetup.OnVersionRamTypeChanged), diff --git a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj index db5ce4f..4ab5113 100644 --- a/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj +++ b/Plain Craft Launcher 2/Plain Craft Launcher 2.vbproj @@ -923,6 +923,7 @@ + diff --git a/Plain Craft Launcher 2/Resources/lwjgl-unsafe-agent-1.0.jar b/Plain Craft Launcher 2/Resources/lwjgl-unsafe-agent-1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..c3195aa5aaa075172966efa6ddb60d3364834f1f GIT binary patch literal 6588 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