HMCL-dev / HMCL

A Minecraft Launcher which is multi-functional, cross-platform and popular
https://hmcl.huangyuhui.net
GNU General Public License v3.0
6.88k stars 675 forks source link

[Feature] 单独添加一个选项使HMCL不检查整合包的模组完整性 #3200

Open Wudji opened 2 months ago

Wudji commented 2 months ago

描述 | Description

如题,单独添加一个选项使HMCL不检查整合包的模组完整性(modpack.cfg),或修改现有选项使其表述更明确,更容易被发现。

原因 | Reason

提出此建议的利益如下: 1、现有的“不检查游戏完整性”选项在游戏管理->高级设置中,入口较深。 2、“不检查游戏完整性”选项名称有歧义,①没记错的话好像之前并不负责检查模组完整性,②用户一般联想不到此选项与模组完整性有关。

以下是一个实例: 有整合包用户想要关闭掉整合包部分功能(如输入法冲突修复等),按教程删掉之后发现不起作用,这时ta会: ① 没发现模组自己复活了,去找整合包作者询问为啥。作者可能知道HMCL会检查游戏完整性的时候顺便复活模组,也可能跟着一起蒙。 ② 发现模组自己复活了,删了半天删不掉,翻了半天也没找到为啥模组自己会复活。

根据在某大学MC交流群、某魔改模组交流群和某服务器群中中进行的群聊“小测试”中发现: 绝大部分普通玩家都不知道这个特性,相当一部分整合包作者也不知道 或者不用HMCL

综上:单独添加一个选项使HMCL不检查整合包的模组完整性(modpack.cfg),或修改现有选项的表述使其表述更明确,更容易被发现。

麻烦开发者了( •̀ ω •́ )✧

Wudji commented 2 months ago

补充图片: image

burningtnt commented 2 months ago

如果只要干掉一个模组,那么禁用他即可。不要删除。

此外,在整合包中禁用部分模组是极其危险的,请在专业崩溃信息分析人士的指导下进行。

Wudji commented 2 months ago

回复好快!👍

根据用户反馈,使用HMCL启动器内禁用功能禁用模组后HMCL依旧会自动补全此模组。

此外,用户自行修改模组即代表其已明白自己在修改整合包,愿意承担修改带来的风险,启动器不应改变用户的意志,理想的做法是弹窗警告用户而非在用户不知情的情况下直接替用户做决定。

此issue描述的问题一定程度上由“补全游戏完整性”表述不清楚所导致,或许可以适当修改描述。

burningtnt commented 2 months ago

根据用户反馈,使用HMCL启动器内禁用功能禁用模组后HMCL依旧会自动补全此模组。

不存在。

此外,用户自行修改模组即代表其已明白自己在修改整合包,愿意承担修改带来的风险,启动器不应改变用户的意志,理想的做法是弹窗警告用户而非在用户不知情的情况下直接替用户做决定。

既然“愿意承担修改带来的风险”,那么就去改高级设置。把这个设置藏得很深就是为了防止一帮人乱改

补全游戏完整性指:补全游戏库、游戏资源、模组

Wudji commented 2 months ago

根据用户反馈,使用HMCL启动器内禁用功能禁用模组后HMCL依旧会自动补全此模组。

不存在。

经过我这边的测试,HMCL-3.5.8.250安装的modrinth整合包存在此问题。 image

另外此issue描述的问题一定程度上由“补全游戏完整性”表述不清楚所导致,或许可以适当修改描述。

根据目前的情况来看,很多人可能不清楚补全游戏完整性会补全什么。

zkitefly commented 2 months ago

image

如图,我安装了 Fabulously Optimized 整合包,在安装完并启动一次后,开启”不检查游戏完整性“设置并删除 mods 文件夹后启动游戏,并未补全,与楼主所述不符。

怀疑是更改了全局游戏设置而楼主并不知道整合包默认强制开启特点游戏设置导致的

Wudji commented 2 months ago

image

如图,我安装了 Fabulously Optimized 整合包,在安装完并启动一次后,开启”不检查游戏完整性“设置并删除 mods 文件夹后启动游戏,并未补全,与楼主所述不符。

怀疑是更改了全局游戏设置而楼主并不知道整合包默认强制开启特点游戏设置导致的

我指的是不开启”不检查游戏完整性“这个选项情况下

burningtnt commented 2 months ago

我指的是不开启”不检查游戏完整性“这个选项情况下

在不开启该选项时,删除模组文件会被 HMCL 认定为这个模组是被意外的删除了。所以照样会补全。

但如果你只是禁用,那么 HMCL 会这个模组是正常禁用,所以不会补全

Wudji commented 2 months ago

我指的是不开启”不检查游戏完整性“这个选项情况下

在不开启该选项时,删除模组文件会被 HMCL 认定为这个模组是被意外的删除了。所以照样会补全。

但如果你只是禁用,那么 HMCL 会这个模组是正常禁用,所以不会补全

但事实是不开启”不检查游戏完整性“这个选项情况下这个模组被补全了,出现了上面那张图的情况:同时存在一个正常模组和一个被禁用的模组

burningtnt commented 2 months ago

我指的是不开启”不检查游戏完整性“这个选项情况下

在不开启该选项时,删除模组文件会被 HMCL 认定为这个模组是被意外的删除了。所以照样会补全。 但如果你只是禁用,那么 HMCL 会这个模组是正常禁用,所以不会补全

但事实是不开启”不检查游戏完整性“这个选项情况下这个模组被补全了,出现了上面那张图的情况:同时存在一个正常模组和一个被禁用的模组

@zkitefly 麻烦测试一下不开启“不检查游戏完整性”时,禁用模组的情况

zkitefly commented 2 months ago

image

成功复现

hmcl-exported-logs-2024-07-28T23-08-13.log

zkitefly commented 2 months ago

image

curseforge 整合包不会出现此问题

burningtnt commented 2 months ago

curseforge 整合包不会出现此问题

那你看看是不是 ModrinthModpackProvider 哪里代码写炸了

zkitefly commented 2 months ago

image

问题应该是出现在 ModrinthCompletionTask 没有像 CurseCompletionTask 那样使用 modManager 导致的?

burningtnt commented 2 months ago

问题应该是出现在 ModrinthCompletionTask 没有像 CurseCompletionTask 那样使用 modManager 导致的?

看起来是这样的