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 0000000..c3195aa Binary files /dev/null and b/Plain Craft Launcher 2/Resources/lwjgl-unsafe-agent-1.0.jar differ