Releases: Meloong-Git/PCL
Releases · Meloong-Git/PCL
Release list
2.13.0.1
优化
- 将默认优先选取的 Java 版本从 Java 25 改为 Java 21,以增加 Mod 兼容性
- 若由于 Java 版本有误而崩溃,会明确提示在版本设置中修改 Java 版本
- 证书验证失败也会被视作网络异常,以给出更有效的错误提示
Bug 修复
- 特定情况下崩溃:“ToolTip”不能有逻辑或视觉父级(#8876,@lactobionicAcid)
- 使用新闻主页或杂志主页预设时崩溃(#8877,@muhuixue)
- 无法删除部分文件夹(#8878,@Peacock-Que)
- 版本设置中指定的 Java 无法保存(#8879,@Parckerz)
- 鼠标从特定被禁用的控件上移开不会使 Tooltip 消失(#8882,@MovTery)
- 当打开中的 Tooltip 改变时,其显示不会动态地改变(#8891,@iPodtouch6557)
2.13.0.0
完全重做了 Java 选择……!全新的弹出提示!屎山挖掘!巨大更新!啊累死我了……
重要提醒
- 由于 CurseForge 的 新政策,这个版本之前的 PCL 从 7 月 16 日起会无法从 CurseForge 下载资源和整合包!
- 如果你通过把 Java 放在 PCL 所在的文件夹或 Minecraft 文件夹根目录中,来让 PCL 强制使用该 Java,这会在更新后失效!如果想强制使用附带的 Java,请把 Java 放到版本文件夹中,并在版本设置中选择“使用版本文件夹中的 Java”!
Java 管理重做
- 重做全局设置中的 Java 选择:不再是强制指定某个 Java,而是允许对 Java 列表进行排序,并使用第一个兼容当前 MC 的 Java
- 由于此前只能指定一个 Java,导致总有部分 MC 会覆盖不到(例如选一个 Java 不可能同时覆盖需要 Java 21+ 的 1.21 和需要 Java 8 的 OptiFine 1.10),现在改成调整排序后就没这个问题啦
- Java 列表添加了将 Java 移出列表的选项(#874,@FangFuJi1991)
- Mojang 官方的 Java 不允许被移出
- Java 列表添加了打开 Java 所在文件夹的选项
- 全局设置中的 Java 列表挪进了默认折叠的高级选项中
- 自动下载和选择 Java 已经足够成熟,普通玩家大概率不需要考虑这个问题了
- 版本设置的 Java 选择增加了“自动选择指定版本的 Java”选项:允许输入一个 Java 版本范围,PCL 会选择符合该版本范围的 Java 启动该版本,如果没有找到会自动下载
- 部分 Mod 需要特定版本的 Java 才能启动,但此前只能按绝对路径指定 Java 或是直接附带在整合包中,若是按绝对路径指定会在导出后失效,若是附带在整合包中又过于臃肿……现在只需要设置一个版本范围,然后 PCL 就能自动处理好一切了!
- 版本设置中会显示 PCL 即将选择哪个 Java 启动这个版本
- 版本设置的 Java 选择增加了“使用版本文件夹中的 Java”选项
- 它替代了原本自动强制选择【PCL 所在的文件夹、Minecraft 文件夹、版本文件夹】中的 Java 的机制,这个机制原本可能会导致 PCL 意料外地选择到一些 Java
- 不过,如果你通过把 Java 放在【PCL 所在的文件夹或 Minecraft 文件夹】中,来让 PCL 强制使用该 Java,这会在更新后失效,需要把 Java 挪到版本文件夹里才行
- 自动搜索时,不再搜索整个磁盘中的 Java,而是只按白名单搜索特定文件夹中的 Java(#8610,@lonzov)
- 此前 PCL 会搜索到一些软件附带的精简版 Java,使用这些 Java 会导致游戏启动失败
- 虽然不全盘搜索会遗漏一些已经存在的 Java,但至少比莫名其妙地打不开游戏要好,况且就算缺少 Java 也能自动下载了,所以全盘搜索确实不太有必要了
- 删除“忽略 Java 兼容性警告”设置
- 全局设置现在只改变 Java 优先级,不会忽略兼容性强行选择
- 版本设置的行为现在也更加明确,不再需要为此弹一个兼容性警告弹窗了
- 优化全局设置中重新搜索和导入 Java 的 UX,以更符合操作直觉
- 由于 MC 和 PCL 均已不再支持 32 位系统,不再支持使用 32 位 Java
- 不再区分 JDK 和 JRE
- 优化检查 Java 的性能,现在所有 Java 相关的操作都是异步的了
- 将所有 javaw.exe 的调用换为 java.exe
整合包导出优化
- 如果该版本的 Java 设置可能存在问题,会在导出时进行提示
- 如果在版本设置选择了“使用版本文件夹中的 Java”,则允许导出这个 Java
- 若勾选了“仅从 Modrinth 下载资源文件”,则会优先使用 .mrpack 格式(#7998,@com-in)
- 若勾选了“仅从 Modrinth 下载资源文件”和“PCL 启动器程序”,会提示需要不勾选“PCL 启动器程序”才能选用 .mrpack 格式(@wwwrow)
- 不再导出 PCL 离线皮肤资源包
弹出提示重做
- 重做弹出提示的样式以及动画,以更符合现代 UI 审美
- 点击文本框时,弹出提示不再会自动收回,以更好地对照提示中的内容填写高级设置
- 弹出提示会跟随鼠标移动,而不是待在原地
- 弹出提示的触发响应更加灵敏
其他变更
- 新主页预设:Bangumi 番剧主页(#8834,作者 @wzyaeu)
- 预添加重庆大学开源软件镜像站作为 PCL 更新镜像源
- 为 CurseForge CDN 下载添加 API Key(#8785,@LinQingYuu)
- 由于 CurseForge 的 新政策,这个版本之前的 PCL 从 7 月 16 日起会无法从 CurseForge 下载资源和整合包!
- 添加建造者披风、工匠披风译名(#8726,@ahsabksha-oss,PR @CiiLu)
- 在社区资源下载页,手动输入筛选的 MC 版本号时,不再对输入文本进行自动补全(#8744,@xynsf)
- 帮助库中,完善加入服务器的地址说明(Meloong-Git/PCLHelp#466,PR @kdjnb)
- 帮助库中的小修改(Meloong-Git/PCLHelp#464、Meloong-Git/PCLHelp#468,PR @Ev1r1tt、@SquareBlock)
- 当 Mojang 的正版登录服务器宕机时,明确提示是 Mojang 的服务器出现问题
- 服务器一个月炸三次,他们到底怎么做到的?
- 安装 OptiFine 时,会自动从其 jar 文件中读取安装它所需的 Java 版本
- 由于从 CurseForge、Modrinth 获取的 Mod 信息已经能覆盖绝大多数文件了,不再尝试从 Mod 文件的 jar 中读取 Mod 信息
- 不再支持 32 位 Windows
- 使用更紧凑的方式存储 Mod 热度数据,减少了 ~70K 文件大小
- 正版登录服务器宕机时显示特殊的错误提示
- 支持处理只读文件、文件夹
- 更新法律声明,以明确允许运行、使用、不收费原样复制与分发 PCL
Bug 修复
- 更改皮肤的请求在重试时失败(#8397)
- 在资源下载页面,不会展开上个页面已展开的卡片(#8673,@ZJH-github34987233,PR @wyc-26)
- 触发网络异常时, MyLoading 格式化的错误文本有误(#8712,@Jkkoi,PR @qinghuayuci)
- 修改披风后列表中显示的当前披风不会更新(#8738,@AprilQM,PR @wyc-26)
- 非 GBK 编码、非中文文件夹下,中文的玩家名可能变成乱码(#8739,@WaltomAdaam2)
- 无法正常识别部分社区数据包(#8760,@FengguaYa)
- 可能会在更新 Mod 时意外删除该 Mod(#8764,@Furrycalin)
- 无法用繁体搜索 Mod 数据库中的繁体名称的 Mod(#8778,@Parckerz)
- 若手动修改了特定设置文件,系统设置下拉框回退时可能出错(#8782,PR @Zmjjeff7)
- 可能无法安装 OptiFine 26.1.2(#8792,@ZhangChenyi2008)
- 粘贴失败会导致崩溃(#8820,@miqidaxia2680)
- 由于愚人节彩蛋同年内只触发一次,若识别码改变,则会无法解锁滑稽彩
- 可能连续启动多次微软登录加载器
- 调试模式下的一个安全问题
- 首次打开 PCL 不会生成日志文件
- 在文本框中按下鼠标会导致 Tooltip 被错误地关闭
- ModWatcher.LatestLog 不是线程安全的
- 日志中显示的微软登录 AccessToken 过期时间有误
新增 API
- MyIconButton 添加了 CanClick 属性,以控制其是否有点击动画和事件,目前用于 Java 列表右侧的问号图标
- MyIconButton 支持 IsEnabled = False 时的样式
技术性更改
- MeloongCore 的更改详见对比页面
- 配置系统重做
- 实验性,目前只用于存储新配置,暂时还没有把老配置迁移到这个新系统
- 重新设计了整个配置系统的架构
- 使用 json 而非现在的 ini 文件存储配置
- 全局设置不再写入注册表,而是写入 %APPDATA%\PCL\config.json
- 支持直接存储可以序列化、反序列化 json 的复杂类
- 读写配置时不再使用字符串,而是直接调用 ConfigEntry 类
- 读写配置现在是线程安全的
- 为配置文件的存储添加了防抖处理,避免特定操作下高频写入文件
- 使用安全性更好的 AES 算法进行本地加解密
- 新增可以部分替代现有 Loader 类的 Worker 类
- 新增 LoaderWorker,以将新架构下的 Worker 包装为 Loader,作为兼容层
- 新增支持重试、拆分子项、记录部分进度被跳过的进度追踪与观测系统,详见 Progress.cs
- 新增支持表达一个数学区间的类 ValueRange
- LoaderBase 新增 CreateSyncProgressProvider、CreateCancellationToken、WaitForExitAsync,作为新架构的兼容层
- 迁移 Java 相关底层代码、MC 百科条目、FileChecker 等东西到 C#
- 将取消任务的异常统一为 OperationCanceledException,取消检测为 ex.IsCanceled
- 添加 ThrottleDebounce 第三方库
- 删除 ResilientUtils,换用 ThrottleDebounce.Retrier
- 统一代码文件编码为 UTF-8 无 BOM
- 将部分 ConcurrentList 替换为更细粒度的锁,例如 ConcurrentQueue
- 修改部分语法,使 Rider 可以正常打开并编译工程
2.12.8.2
修几个小 Bug,主要是 Windows 7 没法联网……
优化
- 社区资源详情页面会注明各个版本兼容的 Mod 加载器(#8665,@FentaJam371)
Bug 修复
- 无法解锁神秘紫隐藏主题(#8640,@LongShen51)
- Windows 7 无法正常联网(#8678,@Micro-Minecraft)
- 文件 IO 不支持相对路径(#8691,@DSHADB)
2.12.8.1
一个小更新,修复一些 2.12.8.0 的问题,看看这次能不能上正式版……
优化
- 当被 Xbox 封禁账号时,会给出明确的提示(#8655,@LinQingYuu)
- 在搜索社区内容前,会将繁体中文转换为简体再进行匹配(#8657,@GotohHitori52)
- 添加“刷新披风列表”选项
- 若删除到回收站失败,会回退到永久删除
- 除特定几个“可点击”表述不明显的控件外,其余控件改回普通鼠标样式,而非手形
Bug 修复
- 若缺少特定系统文件夹,会导致 PCL 无法删除文件夹(#8636,@qwer154899)
- 可能无法更换披风(#8638,@kiun114514,PR @LinQingYuu)
- 如果手速快,可以同时打开多个 PCL(#8651,PR @LinQingYuu)
- 无法同时启动 3 个特定版本的游戏
- 由于出现了一个在 Java 21 不使用 JLW 导致崩溃的案例,现在在新版本 Java 也会尝试使用 JLW
- 更改皮肤失败的提示信息有误
- 土豆码校验可能失败
API 更改
- 导出整合包添加“协议”选项,以导出协议文件(#8300,@19136644525lxy)
- 导出整合包的规则现在忽略大小写
- 新替换标记:
{pcl_sha1},PCL exe 文件的 SHA1
技术性更改
- 迁移加密相关代码到 MeloongCore.CryptographyUtils
2.12.8.0
超大的底层更改!
……但由于是底层更改,所以虽然做了老久,但大家用起来不一定有什么不同就是了 Orz
主要调整
- 将运行所需的环境从 .NET Framework 4.6.2 调整为 .NET Framework 4.8
- 如果你的 .NET Framework 版本过低,打开 PCL 时会自动提示下载
- 新主页预设:整合包推荐引擎(#8588,作者 @CHMYGZ)
- 使用 Modrinth 进行搜索时,支持筛选 LiteLoader
- 将 Minecraft 崩溃弹窗中的“查看日志”改为“查看输出”,点击会提供游戏的原始输出信息,以便于分析在 JVM 初始化阶段就发生的崩溃
- 若开启调试模式,会将 Minecraft 原始输出也输出到 PCL 日志文件,以便进行错误分析
次要调整
- 在指向按钮等可点击对象时,鼠标光标改为手形(#7048,@0x1A5,PR @wyc-26)
- 只在 AccessToken 过期时刷新微软登录,以避免重复打开 PCL 时触发登录太过频繁的问题(#8018,@Qulinlins,PR @0x1A5)
- 未在组策略开启长路径兼容时,现在也兼容使用长路径(#8446,@Howard302)
- 仅为 LWJGL 3.4.1 启用 LWJGL Unsafe Agent(#8464,PR @Big-Cake-jpg)
- 修改兼容的 TLS 版本,提高安全性(#8519,@MatchaOre)
- 仅在非 GBK 编码、非 ASCII 文件夹下、未自定义 javaagent 时,才启用 Java Launch Wrapper,以优化部分 Mod 的兼容性(#8539,@DeliciousBread481)
- 移除主页预设:简单主页、PCL 主页市场
- 简单主页将在后续调整托管平台,然后重新加入
- NetRequestByClientRetry 不再对 (404) NotFound 进行重试
- 搜索、导入 Java 的按钮改为 MyIconTextButton,以与其他按钮的样式统一
- 在 PCL 没有文件夹权限时,会给出更详细的错误信息
- 检查 assets 和 libraries 文件夹下的文件是否可以复用时,会对文件大小进行缓存
Bug 修复
- 压缩包存在问题时,解压进度会超过 100%(#5370,@HomoobyDX)
- 在 Mod 列表加载结束前切换到另一个版本,可能获取到错误的 Mod 更新信息(#6604,@Hoicey522)
- 愚人节版本会被识别为最新快照,导致各种基于版本号的功能出现异常(#6703,@HydrogenTritiu)
- DLL 加载不是线程安全的(#6909,@Golden-w08)
- 清理系统缓存可能导致网络请求失败(#6930,@Genmiko)
- 日志可能存在乱码(#7074,@LinQingYuu)
- 保存文件弹窗保存的文件可能缺少扩展名(#8214,@wuw114514)
- 文件被短暂占用会导致操作失败(#8314,@RimacC2-EV)
- 特定情况下,崩溃分析会错误地识别为 OptiFine 与 Forge 不兼容(#8352,@Frankie23333333)
- 更改皮肤的请求会在重试时失败(#8397)
- 部分隐藏主题错误地显示为没有解锁(#8569,@NDY-4A)
- 使用特定隐藏主题时设置页面会显示已选中龙猫蓝(#8573,@G-mare)
- 部分长路径处理存在问题(#8596,@WMK965)
- 撤回 PCL 的登录授权后无法自动重新要求登录(#8611,@lindog114514)
- 删除版本时没有清理版本设置缓存(#8621,@moremorecode)
- 读取设置不是线程安全的
- 会错误地在社区资源下载的过滤项中显示 26.2
- 若带有部分特殊字符,启动脚本会无法使用
- 在长路径下,保存文件弹窗无法选择不存在的文件
API 更改
- XAML 中,允许用 core 和 corewpf 命名空间来调用 MeloongCore 中的类
- XAML 中,将用于绑定的自定义 Converter 从 local 命名空间迁移到 corewpf 命名空间
- 修复了自定义 JVM 与游戏参数无法使用 PCL 替换标记的 Bug
技术性更改
- 将 MeloongCore 的框架升级到 .NET Standard 2.0(Meloong-Git/MeloongCore#2,@LinQingYuu)
- 重构日志系统
- 支持指定日志等级
- 现在分为 Trace、Info、Warn、Error 四个等级
- If ModeDebug Then Log(...) 现在是 Logger.Trace(...)
- Trace 级别的日志只在开启调试模式时,或在 Debug 构建中,才会输出
- 日志会自动记录调用方的文件名,而非手动指定模块名
- 在写入多行日志时,每行都会有时间戳等日志头了,而不是只在第一行才有
- 日志写入现在是线程安全的
- 将日志写入到调试输出的过程将在另一线程执行,这能大大提高在 VS 调试时的性能
- Trace 级别的日志若不会被写入,则不会尝试生成对应的内插字符串,以提高性能(此优化仅对 C# 代码有效)
- 核心代码已迁移到 MeloongCore 的 Logger,部分迁移到 PclLogger
- 支持指定日志等级
- 重构所有 IO 操作:文件、文件夹、压缩、解压、Stream 等
- 所有 IO 操作都会使用 \?\ 扩展路径格式,以更好地支持长路径
- 核心代码已迁移到 MeloongCore 的 FileUtils 与 DirectoryUtils
- 重构大量其他基础库代码
- 添加 MeloongCore.Test 测试项目
- 将 Settings.Get 改为 Settings.Get(Of T),以确保类型安全
- 修改 Mod 数据库格式,以减少未来的增量补丁的大小
- 移除 EqualableList 类
- 不再使用 VB 的“将函数名作为返回变量”特性
2.12.7.3
修复了无法使用 “自定义” 隐藏主题的 Bug。
有关 2.12.7 的详细更新日志详见:https://github.com/Meloong-Git/PCL/releases/tag/2.12.7.2
2.12.7.2
这次更新重构了部分基础框架,添加了 Meloong Core 支持库和 PCLCS 子工程。之后,PCL 的代码会逐渐迁移到 C#,以提高可维护性,并且逐渐抛弃一些老屎坑……
此外,这次也重做了更新流程,改为使用增量更新,以便之后快速修复各种 Bug!
不过,重构了几千行代码,大概率又会出不少新 Bug 就是了……(悲
一些这次没来得及的东西会在最近尽快修好的!
代码重构
- 添加 Meloong Core (瓜皮龙核心)支持库
- 它是基于 C# 13 的支持库,PCL 中的通用函数将逐步迁移、重构到 Meloong Core 中,以优化代码质量、为其他工程提供通用的函数库
- 该支持库使用 Apache 2.0 协议完全开源
- 添加 PCLCS 子工程
- 它是基于 C# 13 的 WPF 工程,PCL 中的非通用函数将逐步迁移、重构到 PCLCS 中,不过目前还是空的
- 去除了绝大多数的条件编译,以避免未来在重命名符号时遗漏
- 不再使用 Path 作为变量名,以避免与 System.IO.Path 混淆
- 将社区资源相关代码命名的
Comp(Component)统一重命名为Resource - 将
ModComp、ModMod拆分为 7 个不到 800 行的独立文件,并进行小幅重构 - 将
LogLevel重命名为NotifyLevel,并明确每个枚举项的行为 - 将编译配置名和常量统一为
DEBUG、SNAPSHOT、RELEASE,以与实际名称匹配 - 移除
SafeDictionary,改用标准库中的ConcurrentDictionary - 将 VB 的
Mid函数换为标准库中的String.SubString - 将
ModBase中的约 900 行代码重构或迁移到 Meloong Core 中 - 将其余设置页面迁移到新的
SettingService实现 - 版本独立设置改为按版本缓存读取到的值
优化
- 安装 CurseForge 整合包时,若部分文件已被 Mod 作者删除,会弹窗提示具体缺失哪些文件,且可以选择忽略并继续安装,而非直接安装失败
- 删除 MC 文件夹的确认步骤,改为输入
Potato而非确认删除四个字,以防简繁体不一致等情况 - 允许永久关闭启动页面的快照版提示
- 更新启动器时,会下载增量更新补丁,而非完整文件(#6577,@tangge233)
土豆码
- 替代原本的更新密钥和解锁码,作为新的爱发电赞助验证方式
- 由于算法改变,原本的赞助内容需要重新输入一次土豆码才能解锁,抱歉……
- 赞助后,不再需要分别输入更新密钥和解锁码,只需要输入一次土豆码就行
- 在输入土豆码时,会有更完善的引导、复制命令按钮
- 换用更安全的 ECDSA 加密算法
- 是的,就是土豆!
Bug 修复
- 版本 JSON 中,若支持库文件本身和 Windows Natives 中带有两个不同的 url 字段,PCL 会使用上级 URL 而非 Natives 指定的 URL,导致无法补全 Babric 的支持库文件(#5811,@wind-droid)
- 使用 MCIM 镜像源时无法安装部分 CurseForge 整合包(#8008,@HanhanRysn,鸣谢 @z0z0r4)
- 可能错误地触发下载超时(#8488,@cmcaz)
- 通过 Minecraft 更新提示进入下载页后,每次刷新页面都会自动跳转到该版本的下载页(#8490,@lactobionicAcid)
- 单个版本的版本独立设置会串到其他版本去,导致各种异常(#8508,@tiebai2012,PR @wyc-26)
- 无法正常获取
downloads.classifiers不为natives-windows的支持库文件下载信息 - 原先用于赞助验证的加密算法存在安全漏洞
API 更改
- 新替换标记:
{pcl_build_type}- 替换为 PCL 的构建类型,值为
Snapshot、Release、Debug之一
- 替换为 PCL 的构建类型,值为
- 新替换标记:
{pcl_md5}- 替换为 PCL 的 exe 文件的 MD5
2.12.6.2
2.12.6.1
优化
- 支持识别 2026 年愚人节快照(#8421、#8425,@Hill23333、@Eghost303)
- 不再对低版本 Minecraft 应用 LWJGL Unsafe Agent
- 将 Mod 中文名数据以压缩文件形式存储,以免部分 Mod 的名称被 Yara 规则当成病毒关键词,导致 PCL 被误报为病毒
- 更新回声洞
Bug 修复
- 无法使用 Java 25+ 启动 Forge(#8399,@lactobionicAcid)
- 无法为愚人节版本安装 Fabric(#8426,@i486-DX9)
- 在压缩包中运行 PCL 会导致程序闪退
- 程序文件中有两份 Mod 数据库
API 变更
- 替换标记
- {pcl_version} 现在有四段,例如
2.12.6.0 - {pcl_version_branch} 现在为中文的
快照版、正式版、开发版之一
- {pcl_version} 现在有四段,例如
2.12.6
优化
- 使用 LWJGL Unsafe Agent 修复 Minecraft 使用 Java 25+ 时的性能问题
- 非常感谢 @Glavo 制作的补丁,以及 USS_Shenzhou 的相关介绍!
- 不再对 Java 19+ 使用 Java Launch Wrapper
Bug 修复
- 重命名版本存在异常(#8367,@Pigcas,PR @wyc-26)
- 无法显示 Modrinth 整合包的版本列表(#8377,@shengritixing)
- 若 Minecraft 文件夹位于 PCL 路径下,则无法保存该文件夹的选择情况(#8392,@XianYuFish001,PR @wyc-26)