Skip to content

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 可以正常打开并编译工程