Skip to content

添加安装阶段对整合包可选文件的支持 - #1771

Open
CaveNightingale wants to merge 2 commits into
HMCL-dev:mainfrom
CaveNightingale:javafx
Open

添加安装阶段对整合包可选文件的支持#1771
CaveNightingale wants to merge 2 commits into
HMCL-dev:mainfrom
CaveNightingale:javafx

Conversation

@CaveNightingale

@CaveNightingale CaveNightingale commented Oct 3, 2022

Copy link
Copy Markdown

动机

我们目前在运营一个服务器,服务器提供两组模组,一组要求玩家必须安装,例如匠神、农夫乐事等,另一组推荐玩家选择安装,例如投影图、FreeCam等。

我们曾经尝试使用整合包格式分发,事实上Modrinth和CurseForge整合包格式均支持声明可选模组/文件,但发现HMCL会直接将这些文件当作必选处理。

目前,我们仍然在使用直接压缩.jar文件的方式分发模组。我们希望未来能够通过分发HMCL整合包的形式分发我们的服务器客户端。

描述

  • 识别Modrinth和CurseForge格式中的可选文件,导入向导中增加选择可选文件的步骤页面。
  • 在导入时,有可选文件的整合包将会在安装页面有一个按钮选择可选文件,用户也可以点击原有的安装按键跳过选择可选文件阶段直接全量安装。
  • 在可选文件选择页面,提供一个类似模组管理页面的列表,显示文件名称和模组名称(联网查找),左侧有勾选框,选中代表安装,默认全部选中。
  • 在选择页面底部,提供一个安装按键,点击以完成安装,如果用户选择返回上一页,在可选文件页面的勾选状态也保留。
  • 不改变不含可选文件或者非Modrinth和CurseForge格式的整合包的安装流程,在导入页面不出现进入选择可选文件步骤的按钮。

风险

  • 增加导入带有可选文件的整合包时的网络流量。

非目标

  • 实现导入后变更安装文件的功能,这可能是下一步要做的事情。
  • 更改从URL导入时的行为。

@burningtnt

Copy link
Copy Markdown
Member

Merge Conflict 了,记得改一改

@zkitefly

Copy link
Copy Markdown
Member

ping @CaveNightingale
麻烦把这个 PR 更新一下

@burningtnt

Copy link
Copy Markdown
Member

人已经 9 个月不见了,大概是跑了(

@CaveNightingale

Copy link
Copy Markdown
Author

ping @CaveNightingale 麻烦把这个 PR 更新一下

好的

@hejiehao

Copy link
Copy Markdown
Contributor

《跑了》

@CaveNightingale

Copy link
Copy Markdown
Author

完成

@zkitefly

zkitefly commented Aug 7, 2023

Copy link
Copy Markdown
Member

@huanghongxun 这个已经一年没合了

@zkitefly

Copy link
Copy Markdown
Member

功能请求

要不加个全选(或全不选)按钮?

要不加个全选(或全不选)按钮?

@zkitefly

zkitefly commented Dec 31, 2023

Copy link
Copy Markdown
Member

Curse 整合包导入测试

正在通过网络获取文件名

加载成功画面

当时未加 CURSEFORGE_API_KEY 时的图片

注:未测试安装

RLCraft 1.12.2 - Release v2.9.3(改造版).zip

HMCL-3.5.SNAPSHOT(需要将zip后缀改为jar).zip

问题:若网络环境不佳,Curse 整合包下面的文件名显示是直接为空白,我觉得这个文件名获取可能会有点问题?

@zkitefly

zkitefly commented Dec 31, 2023

Copy link
Copy Markdown
Member

Modrinth 整合包导入测试

加载成功画面

注:未测试安装

Cobblemon Modpack [Fabric] 1.4.1(改造版).zip

HMCL-3.5.SNAPSHOT(需要将zip后缀改为jar).zip

建议:我发现下方的文件选择没标题可能会让用户不知道是什么东西,我建议在上面加个标题

@zkitefly

Copy link
Copy Markdown
Member

Modrinth 整合包安装测试

files 列表:

fancymenu_fabric_2.14.10-2_MC_1.20.1.jar # 可选
lazydfu-0.1.3.jar # 必选
notenoughanimations-fabric-1.6.4-mc1.20.jar # 必选
krypton-0.2.3.jar # 必选
Xaeros_Minimap_23.9.3_Fabric_1.20.jar # 可选
cloth-config-11.1.118-fabric.jar # 可选

导入页面


全选 可选 项目的安装页面

选择全选 可选 项目安装成功后的模组列表页面


全不选 可选 项目的安装页面

选择全选 可选 项目安装成功后的模组列表页面


Cobblemon Modpack [Fabric] 1.4.1(改造+精简).zip

HMCL-3.5.SNAPSHOT(需要将zip后缀改为jar).zip

@burningtnt

Copy link
Copy Markdown
Member

请将加载整合包文件的 Task 显示至屏幕上,并以并发操作

@zkitefly

zkitefly commented Dec 31, 2023

Copy link
Copy Markdown
Member

请将加载整合包文件的 Task 显示至屏幕上,并以并发操作

我觉得不太行,可能会影响操作流畅性

@burningtnt

Copy link
Copy Markdown
Member

请将加载整合包文件的 Task 显示至屏幕上,并以并发操作

我觉得不太行,可能会影响操作流畅性

那就添加一个 Spinner,让用户感知到HMCL 正在加载

@burningtnt

Copy link
Copy Markdown
Member

此外,建议把下面的仅文件名改为模组下载界面的 UI 风格,即,可以点进去查看详情

@zkitefly

Copy link
Copy Markdown
Member

@CaveNightingale ping

@CaveNightingale

Copy link
Copy Markdown
Author

@CaveNightingale ping

@zkitefly

zkitefly commented Dec 31, 2023

Copy link
Copy Markdown
Member

请将加载整合包文件的 Task 显示至屏幕上,并以并发操作

image

他看错了,所以不需要这样了

@burningtnt

burningtnt commented Dec 31, 2023

Copy link
Copy Markdown
Member

主要还是这一条:

此外,建议把下面的仅文件名改为模组下载界面的 UI 风格,即,可以点进去查看详情

和:

问题:若网络环境不佳,Curse 整合包下面的文件名显示是直接为空白,我觉得这个文件名获取可能会有点问题?

建议改成:每一个可选模组为一个 TwoLineListItem,可参考模组下载界面,如果失败,则显示“失败,点击重试”

@zkitefly

zkitefly commented Dec 31, 2023

Copy link
Copy Markdown
Member

我认为并不认同 改为模组下载界面的 UI 风格,就原来这个挺好的

如果有模组名称获取失败就重试几遍(5遍就够了),还是不行就直接贴一个 [加载失败,点击重试] 的一个小按钮

然后这个可选模组页面,加一个全选(全不选)按钮,然后加个 可选模组 标题我觉得就够了

@burningtnt

burningtnt commented Dec 31, 2023

Copy link
Copy Markdown
Member

我认为并不认同 改为模组下载界面的 UI 风格,就原来这个挺好的

如果用户希望具体查看该可选模组的详细信息,那就需要改为我所提的这种风格了
image
类似这种 ↑

@zkitefly

Copy link
Copy Markdown
Member

这样会不会增加复杂度啊

@zkitefly

Copy link
Copy Markdown
Member

#1771
#1771-2

@CaveNightingale

Copy link
Copy Markdown
Author

此外,建议把下面的仅文件名改为模组下载界面的 UI 风格,即,可以点进去查看详情

我认为并不认同 改为模组下载界面的 UI 风格,就原来这个挺好的

如果用户希望具体查看该可选模组的详细信息,那就需要改为我所提的这种风格了 image 类似这种 ↑

虽然但是,好像整合包文件里本来就没有模组的详细信息啊?

@burningtnt

burningtnt commented Dec 31, 2023

Copy link
Copy Markdown
Member

这样会不会增加复杂度啊

如果移动到单独界面呢?即:

  • 将原来显示“加载可选模组”哪个地方删除
  • 在安装左侧添加一个加载条,并在加载完毕后变为一个按钮,点击后进入新的界面展示模组列表并供用户勾选

用户只看一个模组的文件名,是无法考虑要还是不要这个模组的,确实需要展示模组详细信息

加油

@burningtnt

Copy link
Copy Markdown
Member

By the way,请问你这里的 RT 是指?

RT,modrinth和curseforge整合包格式均支持声明可选模组/文件,而HMCL会直接将这些文件当作必选处理

@hejiehao

Copy link
Copy Markdown
Contributor

此外,建议把下面的仅文件名改为模组下载界面的 UI 风格,即,可以点进去查看详情

我认为并不认同 改为模组下载界面的 UI 风格,就原来这个挺好的

如果用户希望具体查看该可选模组的详细信息,那就需要改为我所提的这种风格了 image 类似这种 ↑

虽然但是,好像整合包文件里本来就没有模组的详细信息啊?

Curse 整合包可以获取

@CaveNightingale

Copy link
Copy Markdown
Author

虽然但是,好像整合包文件里本来就没有模组的详细信息啊?

你都拿到 Project ID 了,不就啥都有了

https://docs.modrinth.com/modpacks/format
但是隔壁Modrinth只给下载连接

@CaveNightingale

Copy link
Copy Markdown
Author

By the way,请问你这里的 RT 是指?

RT,modrinth和curseforge整合包格式均支持声明可选模组/文件,而HMCL会直接将这些文件当作必选处理

如题

@CaveNightingale

Copy link
Copy Markdown
Author

@zkitefly 我改完了,看看?

@Glavo Glavo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

  1. 没有可选文件时不应当显示可选文件按钮
  2. 切换到可选文件页面应该使用渐变过渡
  3. 这个页面中心的框都顶满高度了,不应该这样
    Image

Comment thread HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseCompletionTask.java Outdated
Comment thread HMCL/src/main/java/org/jackhuang/hmcl/ui/download/LocalModpackPage.java Outdated
@CaveNightingale

Copy link
Copy Markdown
Author
  1. 没有可选文件时不应当显示可选文件按钮
  2. 切换到可选文件页面应该使用渐变过渡
  3. 这个页面中心的框都顶满高度了,不应该这样
    Image

渐变过渡是指什么效果?

@Glavo

Glavo commented May 15, 2026

Copy link
Copy Markdown
Member

/gemini review

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request introduces support for optional files during modpack installation and updates, specifically for CurseForge and Modrinth providers. It adds a new selection UI via OptionalFilesPage, defines a ModpackFile interface, and updates the core installation logic to respect user-selected files. Feedback highlights several critical issues: the conversion of CurseManifestFile from a record to a class requires manual implementation of equals and hashCode to prevent broken filtering logic, and multiple asynchronous callbacks in LocalModpackPage are susceptible to NullPointerException if manifest objects are null. Additionally, the reviewer recommended removing redundant UI labels and getter methods, and cautioned against performing blocking network operations within a parallel stream in CurseModpackProvider.

Comment thread HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseManifestFile.java Outdated
Comment thread HMCL/src/main/java/org/jackhuang/hmcl/ui/download/LocalModpackPage.java Outdated
Comment thread HMCL/src/main/java/org/jackhuang/hmcl/ui/download/LocalModpackPage.java Outdated
Comment thread HMCL/src/main/java/org/jackhuang/hmcl/ui/download/OptionalFilesPage.java Outdated
Comment thread HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseManifest.java Outdated
Comment thread HMCLCore/src/main/java/org/jackhuang/hmcl/mod/curse/CurseModpackProvider.java Outdated
@Minecraft269

Copy link
Copy Markdown

ping @CaveNightingale

敲打本PR作者 日活非常低 :(

@CaveNightingale

Copy link
Copy Markdown
Author

ping @CaveNightingale

敲打本PR作者 日活非常低 :(

请问之前要求的渐变过渡是指什么效果?
我并没有看到有其他下一步的页面切换使用的是类似渐变的效果?

@Minecraft269

Copy link
Copy Markdown

请问之前要求的渐变过渡是指什么效果? 我并没有看到有其他下一步的页面切换使用的是类似渐变的效果?

不到啊 问Glavo :(

@Minecraft269

Copy link
Copy Markdown

CC @Glavo

@Glavo

Glavo commented Jun 21, 2026

Copy link
Copy Markdown
Member

ContainerAnimations

@Chen-Mengze

Copy link
Copy Markdown
Contributor

这个是目前搁置最久最老的 PR 了,我建议直接关掉重开,尤其是已经和主线冲突了,如果不是昨晚我手贱,估计类似更多#6805所要面对与解决的漏洞与隐患

@CaveNightingale

Copy link
Copy Markdown
Author

这个是目前搁置最久最老的 PR 了,我建议直接关掉重开,尤其是已经和主线冲突了,如果不是昨晚我手贱,估计类似更多#6805所要面对与解决的漏洞与隐患

我基本上计划重新做了

@CaveNightingale

Copy link
Copy Markdown
Author

我现在无法编译主线HMCL,此PR先搁置一下。

/home/cavenightingale/Projects/HMCL-main/HMCL/src/main/java/org/jackhuang/hmcl/ui/directory/GameDirectoryPage.java:264: 错误: 程序包MessageDialogPane不存在
            Controllers.confirm(i18n("game_directory.root"), i18n("message.warning"), MessageDialogPane.MessageType.WARNING, this::doSave, null);

@3gf8jv4dv

Copy link
Copy Markdown
Contributor

我现在无法编译主线HMCL,此PR先搁置一下。

这个问题或许等 #6805 合并了就解决了

@Minecraft269

Copy link
Copy Markdown

这个PR还活着吗? 要不先关了? Glavo目前正在重构整个HMCL底层 可能会出现大量合并冲突导致工作流激增(甚至不如重写重开PR)

@CaveNightingale

Copy link
Copy Markdown
Author

这个PR还活着吗? 要不先关了? Glavo目前正在重构整个HMCL底层 可能会出现大量合并冲突导致工作流激增(甚至不如重写重开PR)

我的目前正在重写这个PR,你说Glavo重构正在重构整个HMCL底层,有没有RoadMap?我评估一下。

@Minecraft269

Copy link
Copy Markdown

你说Glavo重构正在重构整个HMCL底层,有没有RoadMap?我评估一下。

重构比较慢 但正在逐步重构 HMCL 的底层 下一步动作等待Glavo的实际计划 (我猜可能要重构下载部分? (目前没明确的重构计划(自然RoadMap也是没有的(又体现到 #6602 的重要性了))))
image
目前已有6个直接在 Commit message 声明的重构(大)PR https://github.com/HMCL-dev/HMCL/issues?q=is%3Apr%20%E9%87%8D%E6%9E%84%20author%3AGlavo%20sort%3Acreated-desc

@CaveNightingale

Copy link
Copy Markdown
Author

你说Glavo重构正在重构整个HMCL底层,有没有RoadMap?我评估一下。

重构比较慢 但正在逐步重构 HMCL 的底层 下一步动作等待Glavo的实际计划 (我猜可能要重构下载部分? (目前没明确的重构计划(自然RoadMap也是没有的(又体现到 #6602 的重要性了)))) image 目前已有6个直接在 Commit message 声明的重构(大)PR https://github.com/HMCL-dev/HMCL/issues?q=is%3Apr%20%E9%87%8D%E6%9E%84%20author%3AGlavo%20sort%3Acreated-desc

感觉这都是一些局部即兴重构,我个人认为这个问题不是很大。即使过了这批,这类重构也会时常发生。这个PR也不止一次遇到一大堆合并冲突了。

@github-actions github-actions 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.

🤖 Static analysis found the following issues (max count 10):

@CaveNightingale

Copy link
Copy Markdown
Author

ContainerAnimations

逻辑上,选择可选文件是选择文件名之后的下一步,使用向左滑动的动画和其他地方是一致的,用渐变怪怪的。

撑满高度的问题和没有可选文件显示可选文件的问题已经修改。

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants