Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] OptiFine Mod.toml 声明了一个不存在的类导致 Forge 在加载 OptiFine 时报 Mod Not Found 错误 #3573

Closed
2 tasks done
wuliaodexiaoluo opened this issue Mar 27, 2024 · 32 comments
Labels
· 优化 第三方 等待第三方处理,或是由第三方导致

Comments

@wuliaodexiaoluo
Copy link
Contributor

wuliaodexiaoluo commented Mar 27, 2024

检查项

描述

Forge 49.0.3x 版本无法正常加载 OptiFine

原因

Forge 49.0.3x 版本无法正常加载 OptiFine,会导致 Forge 在加载 OptiFine 时报错,因为加入版本 json 文件并且类型为 Library 因此删除后仍会下载

@wuliaodexiaoluo wuliaodexiaoluo added · 优化 新提交 需要社区初步确认其有效的新提交 labels Mar 27, 2024
@allMagicNB
Copy link
Contributor

Screenshot_20240327_123846.jpg

OptiFine 官方都这么标注了,也只能说明是他们的问题……

@allMagicNB
Copy link
Contributor

allMagicNB commented Mar 27, 2024

至于高版本 Mod Loader 与 OptiFine 同时安装时弹出提示……#3258

@wuliaodexiaoluo
Copy link
Contributor Author

wuliaodexiaoluo commented Mar 27, 2024

但这个问题确实需要处理。等支持 OptiFine 移除和提示上线估计得一段时间
这段时间内 PCL 可以继续安装同时带有 Forge 和 OptiFine 版本,或者从其他渠道安装带有 Forge 和 OptiFine 版本
而且这是提示不是阻止,鬼知道会不会有侠客无视提示继续安装
而且这也不是兼容性问题。。。 报的是 Not Found 但是顺着路径找下去找得到 OptiFine 文件

@allMagicNB allMagicNB added the 第三方 等待第三方处理,或是由第三方导致 label Mar 27, 2024
@allMagicNB
Copy link
Contributor

目前要处理的仅为取消链接?

@wuliaodexiaoluo
Copy link
Contributor Author

只需要删掉对 OptiFine 主文件 (Libraries\optifine)的 cp 链接,OFLauncher可以不管
这样 Forge 就可以跳过加载直接进入游戏

@LTCatt
Copy link
Member

LTCatt commented Mar 27, 2024

这应当是 OptiFine 那边的问题……

@ghost
Copy link

ghost commented Mar 27, 2024

这应当是 OptiFine 那边的问题….

应该不是,modloader报的是 not found,不是failed to init
但是 forge 那边有没有停摆我不知道,可能交 issue 也没人管

@LTCatt LTCatt added 处理中 开发者正在调查或处理该项 and removed 新提交 需要社区初步确认其有效的新提交 第三方 等待第三方处理,或是由第三方导致 labels Mar 28, 2024
@zkitefly
Copy link
Collaborator

zkitefly commented Apr 6, 2024

那个问题是 Forge 那边搞的,具体可以看 HMCL-dev/HMCL#2975

目前我们讨论有两种方案(@burningtnt

  1. 在安装 OptiFine 前,将 META-INF\mod.toml 删除,然后再安装(或者安装完会后将 libraries 的 OptiFine installer.jar 的 META-INF\mod.toml 删除)
  2. 打一个 javaagent 进去强行让 ClasspathLocator 禁用
  3. 打一个类进入 OptiFine 的 JAR,标上 @Mod("optifine")

还在继续讨论中...

@burningtnt
Copy link

burningtnt commented Apr 6, 2024

这应当是 OptiFine 那边的问题……

这个问题其实是 Forge 和 OptiFine 撞到一起了(

OptiFine 从 1.13 - 1.14 的一个版本开始,JAR 中包含 mod.toml。但因为 Forge 在非开发环境禁用 ClasspathLocator + mods 文件夹下的模组有 ITransformationService 时不读取 mod.toml 两个逻辑,没出错。

1.19.4 的时候 Forge 在非开发环境不再禁用 ClasspathLocator,并且 classpath 里的模组不会因为实现了 ITransformationService 而不读取 mod.toml,然后就爆炸喽

@wuliaodexiaoluo
Copy link
Contributor Author

但是让 OptiFine 那边改掉也不太现实。。。。。
总不可能撤掉旧版本的发布吧。。。

@wuliaodexiaoluo
Copy link
Contributor Author

  1. 在安装 OptiFine 前,将 META-INF\mod.toml 删除,然后再安装(或者安装完会后将 libraries 的 OptiFine installer.jar 的 META-INF\mod.toml 删除)
  2. 打一个 javaagent 进去强行让 ClasspathLocator 禁用
  3. 打一个类进入 OptiFine 的 JAR,标上 @Mod("optifine")

把文件打进去会被反作弊掐掉的吧

@burningtnt
Copy link

把文件打进去会被反作弊掐掉的吧

如果反作弊会检查 OptiFine 的哈希,那 (1),(3) 方案都会寄。
(2) 不会寄,因为修改发生在 JVM 运行时。并且,在不使用黑魔法的前提下,Java 应用检测不到 javaagent 的存在。唯一风险时可能因为 Forge 做代码调整而直接崩游戏。

因此,我倾向于先等 Forge 那边回复。如果他们愿意修改,那就好办了,只修改已发布的这几个版本就好。如果不愿意,那…… 到时候再说。

@wuliaodexiaoluo wuliaodexiaoluo changed the title [优化] 启动同时安装 Forge 和 OptiFine 的 Minecraft 1.20.4 版本时,取消链接 OptiFine 并弹出提示 [Bug] OptiFine Mod.toml 声明了一个不存在的类导致 Forge 在加载 OptiFine 时报 Mod Not Found 错误 Apr 11, 2024
@wuliaodexiaoluo
Copy link
Contributor Author

Forge 如果不愿意搞我去问问 OptiFine 能不能撤回有问题的发行版
打文件进去和参数禁用删文件这个放到最后再说

@burningtnt
Copy link

Forge 如果不愿意搞我去问问 OptiFine 能不能撤回有问题的发行版
打文件进去和参数禁用删文件这个放到最后再说

撤回是不可能的。

By the way, 你这个标题写的也不对。应改为:
[Bug] 1.20.4 OptiFine 和 Forge 有兼容性问题

@wuliaodexiaoluo
Copy link
Contributor Author

wuliaodexiaoluo commented Apr 12, 2024

撤回是不可能的。

By the way, 你这个标题写的也不对。应改为: [Bug] 1.20.4 OptiFine 和 Forge 有兼容性问题

兼容性问题不是报 Failed to init 吗?
这个是 Not Found
EDIT:不管了 zkitefly 这么说我就改成和内容相似的标题

@burningtnt
Copy link

兼容性问题不是报 Failed to init 吗?
这个是 Not Found

本质是 Forge 和 OptiFine 有兼容性问题。具体请看我的解释

@wuliaodexiaoluo
Copy link
Contributor Author

wuliaodexiaoluo commented Apr 13, 2024

方案一可以排除了。我用 jar 解压删掉 mods.toml 然后再重新打包成 jar 文件,结果是在启动过程中 Forge 报错崩溃
话说为什么之前版本的 OptiFine 是以 Mod 形式链接的,1.20.4 是 以 classpath 链接的?

@burningtnt
Copy link

方案一可以排除了。我用 jar 解压删掉 mods.toml 然后再重新打包成 jar 文件,结果是在启动过程中 Forge 报错崩溃

我这边测试没有任何问题。请你提供崩溃信息或 latest.log

@wuliaodexiaoluo
Copy link
Contributor Author

#3678

@allMagicNB
Copy link
Contributor

allMagicNB commented Apr 18, 2024

不对啊,直接把 OptiFine 扔 mods 文件夹作为 Mod 加载也行啊?

@burningtnt
Copy link

burningtnt commented Apr 18, 2024

不对啊,直接把 OptiFine 扔 mods 文件夹作为 Mod 加载也行啊?

请阅读 HMCL-dev/HMCL#2975 MinecraftForge/MinecraftForge#9899 ,我已经给出了完整的分析

@wuliaodexiaoluo
Copy link
Contributor Author

不对啊,直接把 OptiFine 扔 mods 文件夹作为 Mod 加载也行啊?

几个世纪前 PCL 是这么搞得,我也不知道为什么改成用 classpath 加载了

@LTCatt LTCatt added 第三方 等待第三方处理,或是由第三方导致 调查中 处理中 开发者正在调查或处理该项 and removed 处理中 开发者正在调查或处理该项 调查中 labels May 5, 2024
@zkitefly
Copy link
Collaborator

MinecraftForge/MinecraftForge#9899

forge 修复了这个问题,试试新的 forge 版本?

@wuliaodexiaoluo
Copy link
Contributor Author

那旧版本怎么说,继续打参数?还是归到 1930?

@zkitefly
Copy link
Collaborator

zkitefly commented May 10, 2024

那旧版本怎么说,继续打参数?还是归到 1930?

旧版本应该不行(

总之应该不需要特殊处理了

@wuliaodexiaoluo
Copy link
Contributor Author

wuliaodexiaoluo commented May 10, 2024

那就是 PCL 这边不为旧版本无法加载 OptiFine 做调整?
如果是的话那直接 Close As Completed 挂个完成好了

@zkitefly
Copy link
Collaborator

如果愿意为旧版本做兼容就做,不想做就关掉吧

话说试过了吗

@wuliaodexiaoluo
Copy link
Contributor Author

还没,这台计算机的 PCL 有点 Bug,jlw 目录会指定到并不存在的软盘驱动器

@allMagicNB
Copy link
Contributor

allMagicNB commented May 10, 2024

压根就不是只有 49.0.3X,而是在 49.0.50 之前的版本都有问题……

@LTCatt
Copy link
Member

LTCatt commented May 10, 2024

Forge 修复了的话确实可以关了……

@LTCatt LTCatt closed this as completed May 10, 2024
@allMagicNB
Copy link
Contributor

但是这压根不是我们这边的问题啊(

@wuliaodexiaoluo
Copy link
Contributor Author

能解决就得想办法,不作为不是什么好事

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
· 优化 第三方 等待第三方处理,或是由第三方导致
Projects
None yet
Development

No branches or pull requests

5 participants