Skip to content

feat(instance): 修复并完善 MultiMC 整合包支持 - #3640

Open
Pigeon0v0 wants to merge 3 commits into
devfrom
feat/mmc-pack
Open

Pigeon0v0 wants to merge 3 commits into
devfrom
feat/mmc-pack

Conversation

@Pigeon0v0

@Pigeon0v0 Pigeon0v0 commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Co-worked with Xiaomi MiMo v2.6 Flash Medium, manually reviewed

自不知道什么时候起,MMC 整合包支持的一些特性被破坏了。本 PR 对其进行了修复,使其能够正常安装与启动,并能正确应用相关实例自定义设置。

经过测试,本 PR 的构建产物能够正常安装 GTNH 的 MMC / Prism 整合包。

关于部分首行改动:移除了这些文件的 BOM。

Sourcery 总结

修复并完善 MultiMC/Prism 整合包的安装、启动及实例自定义设置支持。

新功能:

  • 完善 MultiMC/Prism 整合包安装对 Java 兼容主版本集合的识别与启动时选择。

错误修复:

  • 修复缺少 instance.cfg、JSON Patch 目录条目缺失及补丁应用失败时的安装问题。
  • 修复 MMC 整合包实例自定义设置、图标及配置缓存不同步导致设置不生效的问题。
  • 修复 JSON 节点版本解析错误,并处理 LWJGL3 与 LWJGL2 库冲突。

改进:

  • 改进 MMC JSON Patches 与原版 Minecraft JSON 的合并逻辑,保留未被补丁覆盖的核心元数据并支持补丁引入的额外依赖。

维护:

  • 移除相关源文件的 UTF-8 BOM。
Original summary in English

Sourcery 总结

恢复并改进 MultiMC/Prism 模组包的安装、启动和实例自定义支持。

新功能:

  • 支持在安装和启动期间处理声明兼容 Java 主版本集合的 MultiMC/Prism 软件包。

错误修复:

  • 修复缺少 instance.cfg 或未显式列出补丁目录条目的软件包安装问题;当无法应用 JSON 补丁时,安装将失败。
  • 修复实例自定义设置的持久化问题,包括自定义图标、配置缓存和启动相关设置。
  • 修正 Java 版本元数据解析,并解决 LWJGL2 与 LWJGL3 库之间的冲突。

改进:

  • 改进 MultiMC JSON 补丁合并逻辑,保留未修改的原版元数据,并纳入补丁提供的依赖项。

杂项:

  • 从受影响的源文件中移除 UTF-8 BOM。
  • 确保存储关闭前刷新所有待处理的配置写入操作。
Original summary in English

Summary by Sourcery

Restore and improve MultiMC/Prism modpack installation, launch, and instance customization support.

New Features:

  • Support MultiMC/Prism packages declaring compatible Java major-version sets during installation and launch.

Bug Fixes:

  • Fix installation of packages without instance.cfg or explicit patches directory entries, and fail installation when JSON patches cannot be applied.
  • Fix instance customization persistence, including custom icons, configuration caching, and launch-related settings.
  • Correct Java-version metadata parsing and resolve conflicts between LWJGL2 and LWJGL3 libraries.

Enhancements:

  • Improve MultiMC JSON patch merging by preserving untouched vanilla metadata and incorporating patch-provided dependencies.

Chores:

  • Remove UTF-8 BOMs from affected source files.
  • Ensure pending configuration writes are flushed before storage shutdown.

Co-worked with Xiaomi MiMo v2.6 Flash Medium
@pcl-ce-automation pcl-ce-automation Bot added 🛠️ 等待审查 Pull Request 已完善,等待维护者或负责人进行代码审查 size: L PR 大小评估:大型 labels Sep 30, 2026
@sourcery-ai

sourcery-ai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

审查者指南

本 PR 从实例状态恢复、MultiMC JSON Patch 安装、Java 兼容版本选择、依赖补全和配置持久化多个环节修复整合包支持,使缺失配置或非标准压缩包结构能够正常安装,并确保生成的实例可正确启动及应用自定义设置。

MultiMC 整合包安装与启动时序图

sequenceDiagram
    participant User
    participant Installer as InstallPackMMC
    participant JsonMerge as MergeJson
    participant Storage as ConfigStorage
    participant Launcher as McLaunchJava
    participant Java as ModJava

    User->>Installer: InstallPackMMC(fileAddress)
    Installer->>Installer: Read mmc-pack.json and optional instance.cfg
    Installer->>Installer: Apply JSON patches and compatibleJavaMajors
    Installer->>JsonMerge: MergeJson(outputFolder, minecraftFolder, ...)
    JsonMerge->>JsonMerge: Merge patched fields with vanilla JSON
    JsonMerge->>JsonMerge: Remove conflicting LWJGL2 libraries
    Installer->>Storage: InvalidateCache(versionFolder)
    User->>Launcher: Launch instance
    Launcher->>Launcher: Read compatibleJavaMajors
    Launcher->>Java: Select Java within compatible major range
Loading

实例自定义图标恢复状态图

stateDiagram-v2
    [*] --> LoadInstance
    LoadInstance --> CustomLogo: PCL/Logo.png exists
    CustomLogo --> CustomFlagEnabled: Set IsLogoCustom true
    CustomFlagEnabled --> [*]
    LoadInstance --> DefaultLogo: No custom logo and custom flag is false
    LoadInstance --> MissingCustomLogo: Custom flag is true but file is missing
    MissingCustomLogo --> DefaultLogo: Clear IsLogoCustom and Logo
    DefaultLogo --> [*]
Loading

MultiMC JSON Patch Java 兼容性流程图

flowchart TD
    A[Read compatibleJavaMajors from JSON patches] --> B[Parse, deduplicate, and sort major versions]
    B --> C[Intersect ranges from multiple patches]
    C --> D{Intersection exists?}
    D -->|Yes| E[Use intersected Java major range]
    D -->|No| F[Use current patch range]
    E --> G[Write javaVersion and compatibleJavaMajors]
    F --> G
    G --> H[McLaunchJava selects compatible Java]
Loading

文件级变更

变更 详情 文件
修复实例图标状态的恢复与清理逻辑。
  • 优先读取实例目录中的 PCL\Logo.png 并同步自定义图标标记
  • 图标文件缺失时清理失效标记并回退默认图标
Plain Craft Launcher 2/Modules/Minecraft/McInstance.cs
完善 MultiMC Java 版本兼容范围的解析与启动选择。
  • 将 JsonNode 转字符串后解析 javaVersion 与 compatibleJavaMajors
  • 按兼容主版本范围与既有规则取交集,并在无交集时采用整合包声明范围
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
修复 MultiMC 整合包安装、JSON Patch 应用及实例配置持久化。
  • 允许缺少 instance.cfg 的整合包继续安装
  • 按文件前缀识别 patches,合并多个补丁声明的 Java 兼容范围
  • 保留 compatibleJavaMajors 与 Java 最低版本到实例覆盖 JSON
  • 补丁应用失败时终止安装并报告错误
  • 统一实例配置路径并在安装后刷新配置缓存
Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs
增强 MMC 补丁生成的版本 JSON 与依赖库处理。
  • 以原版 JSON 为基础覆盖补丁字段,保留补丁未提供的元数据
  • MMC 整合包参与依赖补全流程
  • 检测 LWJGL3 后移除冲突的 LWJGL2 库
Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.cs
移除受影响源文件的 UTF-8 BOM。
  • 调整多个文件首行编码标记以避免 BOM
Plain Craft Launcher 2/Modules/Minecraft/McInstance.cs
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs
Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.cs

提示与命令

与 Sourcery 交互

  • 触发新的审查: 在 pull request 中评论 @sourcery-ai review。
  • 继续讨论: 直接回复 Sourcery 的审查评论。
  • 根据审查评论生成 GitHub issue: 回复审查评论,请 Sourcery 根据该评论创建 issue。你也可以在审查评论中回复 @sourcery-ai issue,以根据该评论创建 issue。
  • 生成 pull request 标题: 在 pull request 标题的任意位置写入 @sourcery-ai,即可随时生成标题。你也可以在 pull request 中评论 @sourcery-ai title,以随时生成或重新生成标题。
  • 生成 pull request 摘要: 在 pull request 正文的任意位置写入 @sourcery-ai summary,即可在指定位置随时生成 PR 摘要。你也可以在 pull request 中评论 @sourcery-ai summary,以随时生成或重新生成摘要。
  • 生成审查者指南: 在 pull request 中评论 @sourcery-ai guide,以随时生成或重新生成审查者指南。
  • 解决所有 Sourcery 评论: 在 pull request 中评论 @sourcery-ai resolve,以解决所有 Sourcery 评论。如果你已经处理完所有评论并且不想再看到它们,这一功能会很有用。
  • 忽略所有 Sourcery 审查: 在 pull request 中评论 @sourcery-ai dismiss,以忽略所有现有的 Sourcery 审查。如果你想从全新的审查开始,这一功能尤其有用——别忘了评论 @sourcery-ai review 来触发新的审查!

自定义使用体验

访问你的控制面板即可:

  • 启用或禁用审查功能,例如 Sourcery 生成的 pull request 摘要、审查者指南等。
  • 更改审查语言。
  • 添加、删除或编辑自定义审查说明。
  • 调整其他审查设置。

获取帮助

Original review guide in English

Reviewer's Guide

本 PR 从实例状态恢复、MultiMC JSON Patch 安装、Java 兼容版本选择、依赖补全和配置持久化多个环节修复整合包支持,使缺失配置或非标准压缩包结构能够正常安装,并确保生成的实例可正确启动及应用自定义设置。

Sequence diagram for MultiMC pack installation and launch

sequenceDiagram
    participant User
    participant Installer as InstallPackMMC
    participant JsonMerge as MergeJson
    participant Storage as ConfigStorage
    participant Launcher as McLaunchJava
    participant Java as ModJava

    User->>Installer: InstallPackMMC(fileAddress)
    Installer->>Installer: Read mmc-pack.json and optional instance.cfg
    Installer->>Installer: Apply JSON patches and compatibleJavaMajors
    Installer->>JsonMerge: MergeJson(outputFolder, minecraftFolder, ...)
    JsonMerge->>JsonMerge: Merge patched fields with vanilla JSON
    JsonMerge->>JsonMerge: Remove conflicting LWJGL2 libraries
    Installer->>Storage: InvalidateCache(versionFolder)
    User->>Launcher: Launch instance
    Launcher->>Launcher: Read compatibleJavaMajors
    Launcher->>Java: Select Java within compatible major range
Loading

State diagram for instance custom logo recovery

stateDiagram-v2
    [*] --> LoadInstance
    LoadInstance --> CustomLogo: PCL/Logo.png exists
    CustomLogo --> CustomFlagEnabled: Set IsLogoCustom true
    CustomFlagEnabled --> [*]
    LoadInstance --> DefaultLogo: No custom logo and custom flag is false
    LoadInstance --> MissingCustomLogo: Custom flag is true but file is missing
    MissingCustomLogo --> DefaultLogo: Clear IsLogoCustom and Logo
    DefaultLogo --> [*]
Loading

Flow diagram for MultiMC JSON patch Java compatibility

flowchart TD
    A[Read compatibleJavaMajors from JSON patches] --> B[Parse, deduplicate, and sort major versions]
    B --> C[Intersect ranges from multiple patches]
    C --> D{Intersection exists?}
    D -->|Yes| E[Use intersected Java major range]
    D -->|No| F[Use current patch range]
    E --> G[Write javaVersion and compatibleJavaMajors]
    F --> G
    G --> H[McLaunchJava selects compatible Java]
Loading

File-Level Changes

Change Details Files
修复实例图标状态的恢复与清理逻辑。
  • 优先读取实例目录中的 PCL\Logo.png 并同步自定义图标标记
  • 图标文件缺失时清理失效标记并回退默认图标
Plain Craft Launcher 2/Modules/Minecraft/McInstance.cs
完善 MultiMC Java 版本兼容范围的解析与启动选择。
  • 将 JsonNode 转字符串后解析 javaVersion 与 compatibleJavaMajors
  • 按兼容主版本范围与既有规则取交集,并在无交集时采用整合包声明范围
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
修复 MultiMC 整合包安装、JSON Patch 应用及实例配置持久化。
  • 允许缺少 instance.cfg 的整合包继续安装
  • 按文件前缀识别 patches,合并多个补丁声明的 Java 兼容范围
  • 保留 compatibleJavaMajors 与 Java 最低版本到实例覆盖 JSON
  • 补丁应用失败时终止安装并报告错误
  • 统一实例配置路径并在安装后刷新配置缓存
Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs
增强 MMC 补丁生成的版本 JSON 与依赖库处理。
  • 以原版 JSON 为基础覆盖补丁字段,保留补丁未提供的元数据
  • MMC 整合包参与依赖补全流程
  • 检测 LWJGL3 后移除冲突的 LWJGL2 库
Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.cs
移除受影响源文件的 UTF-8 BOM。
  • 调整多个文件首行编码标记以避免 BOM
Plain Craft Launcher 2/Modules/Minecraft/McInstance.cs
Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs
Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.cs

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

您好——我发现了 3 个问题

面向 AI Agent 的提示
请处理本次代码审查中的评论:

## 个别评论

### 评论 1
<location path="Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs" line_range="1033-1034" />
<code_context>
+                .ToList();
+            if (majors.Count > 0)
+            {
+                var compatibleMinVer = new Version(majors.Min(), 0, 0, 0);
+                var compatibleMaxVer = new Version(majors.Max(), 999, 999, 999);
+                if (ModBase.modeDebug)
+                    ModBase.Log("[Launch] [Debug] JSON 中要求的兼容 Java 主版本范围:" + majors.Min() + " - " + majors.Max());
</code_context>
<issue_to_address>
**issue (bug_risk):** `compatibleJavaMajors` 中的 Java 8 被转换为 `new Version(8, 0, 0, 0)`,而启动器的其他部分将 Java 8 表示为 `new Version(1, 8, ...)`;因此,版本为 `1.8.x` 的已安装 Java 8 运行时会低于所需的最低版本,从而被拒绝。

**触发条件:** 当 MMC 整合包声明 Java 8 为兼容的主版本时。

**建议修复:** 将不超过 8 的主版本转换为旧版 `Version(1, major, ...)` 表示方式,与现有的 `javaVersion` 处理逻辑保持一致。

```suggestion
                var compatibleMinVer = majors.Min() <= 8
                    ? new Version(1, majors.Min(), 0, 0)
                    : new Version(majors.Min(), 0, 0, 0);
                var compatibleMaxVer = majors.Max() <= 8
                    ? new Version(1, majors.Max(), 999, 999)
                    : new Version(majors.Max(), 999, 999, 999);
```
</issue_to_address>

### 评论 2
<location path="Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs" line_range="1025-1028" />
<code_context>
         if (ModInstanceList.McMcInstanceSelected.JsonObject["javaVersion"] is not null)
         {
-            var majorVersion = ModBase.Val(ModInstanceList.McMcInstanceSelected.JsonObject["javaVersion"]["majorVersion"]);
+            // Val 无法解析 JsonNode(会返回 0),必须先转为字符串
+            var majorVersion = ModBase.Val(ModInstanceList.McMcInstanceSelected.JsonObject["javaVersion"]["majorVersion"]
+                ?.ToString());
</code_context>
<issue_to_address>
**issue (bug_risk):** 明确指定的兼容 Java 主版本集合被压缩成了最小值到最大值的范围,因此声明 `[8, 17]` 等主版本的整合包也会接受不受支持的 Java 9 到 16 运行时。

**触发条件:** 当 `compatibleJavaMajors` 跳过最小值与最大值之间的一个或多个主版本时。

**建议修复:** 使用原始的兼容主版本集合检查候选 Java 运行时,而不是将该集合表示为连续的 `Version` 范围。
</issue_to_address>

### 评论 3
<location path="Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs" line_range="1498-1500" />
<code_context>
-                            {
-                                javaVersion = (int)javaMajors[0];
-                                javaComponent = null;
+                                javaMajorMin = majorMin;
+                                javaMajorMax = majorMax;
+                                javaMajorsJson = patchJson["compatibleJavaMajors"]?.DeepClone();
+                                ModBase.Log($"[ModPack] JSON-Patch {patchJson["uid"]} 兼容的 Java 主版本:" +
+                                            string.Join(", ", majors));
</code_context>
<issue_to_address>
**issue (bug_risk):** 当多个 JSON 补丁声明兼容的 Java 主版本时,代码会在 `javaMajorMin` 和 `javaMajorMax` 中计算交集,但只将当前补丁的原始数组存储在 `javaMajorsJson` 中;因此生成的实例会丢失交集,启动时使用的是最后一个补丁更宽泛的范围。

**触发条件:** 当两个或更多组件声明不同的 `compatibleJavaMajors` 列表时。

**建议修复:** 将实际的交集集合存储在 `javaMajorsJson` 中,或保留每个组件的约束,并在选择 Java 时强制执行这些约束的交集。
</issue_to_address>

Sourcery 对开源项目免费——如果您喜欢我们的审查结果,请考虑分享它们 ✨
Original comment in English

Hey - I've found 3 issues

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location path="Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs" line_range="1033-1034" />
<code_context>
+                .ToList();
+            if (majors.Count > 0)
+            {
+                var compatibleMinVer = new Version(majors.Min(), 0, 0, 0);
+                var compatibleMaxVer = new Version(majors.Max(), 999, 999, 999);
+                if (ModBase.modeDebug)
+                    ModBase.Log("[Launch] [Debug] JSON 中要求的兼容 Java 主版本范围:" + majors.Min() + " - " + majors.Max());
</code_context>
<issue_to_address>
**issue (bug_risk):** Java 8 in `compatibleJavaMajors` is converted to `new Version(8, 0, 0, 0)`, while the rest of the launcher represents Java 8 as `new Version(1, 8, ...)`; consequently an installed Java 8 runtime with version `1.8.x` falls below the required minimum and is rejected.

**Triggers:** When an MMC pack declares Java 8 as a compatible major.

**Suggested fix:** Convert majors up to 8 to the legacy `Version(1, major, ...)` representation, matching the existing `javaVersion` handling.

```suggestion
                var compatibleMinVer = majors.Min() <= 8
                    ? new Version(1, majors.Min(), 0, 0)
                    : new Version(majors.Min(), 0, 0, 0);
                var compatibleMaxVer = majors.Max() <= 8
                    ? new Version(1, majors.Max(), 999, 999)
                    : new Version(majors.Max(), 999, 999, 999);
```
</issue_to_address>

### Comment 2
<location path="Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs" line_range="1025-1028" />
<code_context>
         if (ModInstanceList.McMcInstanceSelected.JsonObject["javaVersion"] is not null)
         {
-            var majorVersion = ModBase.Val(ModInstanceList.McMcInstanceSelected.JsonObject["javaVersion"]["majorVersion"]);
+            // Val 无法解析 JsonNode(会返回 0),必须先转为字符串
+            var majorVersion = ModBase.Val(ModInstanceList.McMcInstanceSelected.JsonObject["javaVersion"]["majorVersion"]
+                ?.ToString());
</code_context>
<issue_to_address>
**issue (bug_risk):** The explicit set of compatible Java majors is collapsed to a minimum-to-maximum range, so a pack declaring majors such as `[8, 17]` also accepts unsupported Java 9 through 16 runtimes.

**Triggers:** When `compatibleJavaMajors` skips one or more major versions between its minimum and maximum.

**Suggested fix:** Check candidate Java runtimes against the original compatible-major set instead of representing the set as a continuous `Version` range.
</issue_to_address>

### Comment 3
<location path="Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs" line_range="1498-1500" />
<code_context>
-                            {
-                                javaVersion = (int)javaMajors[0];
-                                javaComponent = null;
+                                javaMajorMin = majorMin;
+                                javaMajorMax = majorMax;
+                                javaMajorsJson = patchJson["compatibleJavaMajors"]?.DeepClone();
+                                ModBase.Log($"[ModPack] JSON-Patch {patchJson["uid"]} 兼容的 Java 主版本:" +
+                                            string.Join(", ", majors));
</code_context>
<issue_to_address>
**issue (bug_risk):** When multiple JSON patches declare compatible Java majors, the code computes an intersection in `javaMajorMin` and `javaMajorMax` but stores only the current patch's original array in `javaMajorsJson`; the resulting instance therefore loses the intersection and launch uses the last patch's broader range.

**Triggers:** When two or more components declare different `compatibleJavaMajors` lists.

**Suggested fix:** Store the actual intersection set in `javaMajorsJson`, or retain per-component constraints and enforce their intersection during Java selection.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨

Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs Outdated
Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs
Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ca885889e1

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs Outdated
Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModLaunch.cs Outdated
Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs Outdated
Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs
Co-worked with Xiaomi MiMo v2.6 Flash Medium

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fc7388a57b

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Plain Craft Launcher 2/Pages/PageDownload/ModDownloadLib.cs
Co-worked with Xiaomi MiMo v2.6 Flash Medium

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4eddd951dc

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Plain Craft Launcher 2/Modules/Minecraft/ModModpack.cs
@Pigeon0v0

Copy link
Copy Markdown
Contributor Author

@PinkYuDeer 打扰了,我再次对 GTNH 等 MultiMC 整合包的支持进行了修复。之前因为大家时间都很紧张,一直没机会管这个问题。

我使用 GTNH 2.8.4 + Zulu JDK 17 / GTNH 2.8.4 + Zulu JDK 25 / GTNH 2.9.0-RC-1 + Liberica JRE 26 的组合进行了测试,均可直接安装启动,看起来没有其他问题。

不过我后来还用 GTNH 2.9.0-RC-1 + Zulu JDK 17 测试,发现无法正常启动。看起来这似乎是 Java 版本问题,但我还是告知一下。

使用 此处的 Action 构建 即可进行测试,有问题直接在这里回复就行。我期望在这个 PR 合并后尽快发布一个正式版。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size: L PR 大小评估:大型 🛠️ 等待审查 Pull Request 已完善,等待维护者或负责人进行代码审查

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant