Skip to content

Releases: Meloong-Git/PCL

2.13.0.1

Choose a tag to compare

@LTCatt LTCatt released this 03 Jul 07:11

优化

  • 将默认优先选取的 Java 版本从 Java 25 改为 Java 21,以增加 Mod 兼容性
  • 若由于 Java 版本有误而崩溃,会明确提示在版本设置中修改 Java 版本
  • 证书验证失败也会被视作网络异常,以给出更有效的错误提示

Bug 修复

2.13.0.0

2.13.0.0 Pre-release
Pre-release

Choose a tag to compare

@LTCatt LTCatt released this 02 Jul 15:30

完全重做了 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),现在改成调整排序后就没这个问题啦
image
  • Java 列表添加了将 Java 移出列表的选项(#874@FangFuJi1991
    • Mojang 官方的 Java 不允许被移出
  • Java 列表添加了打开 Java 所在文件夹的选项
  • 全局设置中的 Java 列表挪进了默认折叠的高级选项中
    • 自动下载和选择 Java 已经足够成熟,普通玩家大概率不需要考虑这个问题了
  • 版本设置的 Java 选择增加了“自动选择指定版本的 Java”选项:允许输入一个 Java 版本范围,PCL 会选择符合该版本范围的 Java 启动该版本,如果没有找到会自动下载
    • 部分 Mod 需要特定版本的 Java 才能启动,但此前只能按绝对路径指定 Java 或是直接附带在整合包中,若是按绝对路径指定会在导出后失效,若是附带在整合包中又过于臃肿……现在只需要设置一个版本范围,然后 PCL 就能自动处理好一切了!
  • 版本设置中会显示 PCL 即将选择哪个 Java 启动这个版本
image
  • 版本设置的 Java 选择增加了“使用版本文件夹中的 Java”选项
    • 它替代了原本自动强制选择【PCL 所在的文件夹、Minecraft 文件夹、版本文件夹】中的 Java 的机制,这个机制原本可能会导致 PCL 意料外地选择到一些 Java
    • 不过,如果你通过把 Java 放在【PCL 所在的文件夹或 Minecraft 文件夹】中,来让 PCL 强制使用该 Java,这会在更新后失效,需要把 Java 挪到版本文件夹里才行
image
  • 自动搜索时,不再搜索整个磁盘中的 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 设置可能存在问题,会在导出时进行提示
image
  • 如果在版本设置选择了“使用版本文件夹中的 Java”,则允许导出这个 Java
image
  • 若勾选了“仅从 Modrinth 下载资源文件”,则会优先使用 .mrpack 格式(#7998@com-in
  • 若勾选了“仅从 Modrinth 下载资源文件”和“PCL 启动器程序”,会提示需要不勾选“PCL 启动器程序”才能选用 .mrpack 格式(@wwwrow
  • 不再导出 PCL 离线皮肤资源包

弹出提示重做

  • 重做弹出提示的样式以及动画,以更符合现代 UI 审美
image
  • 点击文本框时,弹出提示不再会自动收回,以更好地对照提示中的内容填写高级设置
  • 弹出提示会跟随鼠标移动,而不是待在原地
  • 弹出提示的触发响应更加灵敏

其他变更

  • 新主页预设: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#464Meloong-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

Choose a tag to compare

@LTCatt LTCatt released this 24 May 11:22

修几个小 Bug,主要是 Windows 7 没法联网……


优化

  • 社区资源详情页面会注明各个版本兼容的 Mod 加载器(#8665@FentaJam371

Bug 修复

2.12.8.1

Choose a tag to compare

@LTCatt LTCatt released this 20 May 17:26

一个小更新,修复一些 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

技术性更改

2.12.8.0

Choose a tag to compare

@LTCatt LTCatt released this 15 May 15:57

超大的底层更改!
……但由于是底层更改,所以虽然做了老久,但大家用起来不一定有什么不同就是了 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

Choose a tag to compare

@LTCatt LTCatt released this 28 Apr 23:54

修复了无法使用 “自定义” 隐藏主题的 Bug。
有关 2.12.7 的详细更新日志详见:https://github.com/Meloong-Git/PCL/releases/tag/2.12.7.2

2.12.7.2

Choose a tag to compare

@LTCatt LTCatt released this 28 Apr 23:21

这次更新重构了部分基础框架,添加了 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
  • ModCompModMod 拆分为 7 个不到 800 行的独立文件,并进行小幅重构
  • LogLevel 重命名为 NotifyLevel ,并明确每个枚举项的行为
  • 将编译配置名和常量统一为 DEBUGSNAPSHOTRELEASE ,以与实际名称匹配
  • 移除 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 的构建类型,值为 SnapshotReleaseDebug 之一
  • 新替换标记:{pcl_md5}
    • 替换为 PCL 的 exe 文件的 MD5

2.12.6.2

Choose a tag to compare

@LTCatt LTCatt released this 03 Apr 09:30

优化

  • 安装游戏失败时会弹出错误窗口,而不是只显示一个会自动消失的提示

Bug 修复

  • 会为部分 Forge / NeoForge 选择不支持的 Java(#8432,鸣谢 @icocoer
  • 若 PCL 文件被杀软锁定,会导致导出整合包失败(#8433@hchdddd
  • 社区资源的支持版本范围显示有误(#8435@wyc-26
  • 版本列表中的 26.1.1 被错误地分类为愚人节版本(#8439@hu1718191000
  • 若版本文件夹路径过长,可能导致无法启动游戏

2.12.6.1

Choose a tag to compare

@LTCatt LTCatt released this 02 Apr 10:45

优化

  • 支持识别 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} 现在为中文的 快照版正式版开发版 之一

2.12.6

Choose a tag to compare

@LTCatt LTCatt released this 29 Mar 20:37

优化

  • 使用 LWJGL Unsafe Agent 修复 Minecraft 使用 Java 25+ 时的性能问题
    • 非常感谢 @Glavo 制作的补丁,以及 USS_Shenzhou 的相关介绍!
  • 不再对 Java 19+ 使用 Java Launch Wrapper

Bug 修复