CFPAOrg / I18nUpdateMod2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Minecraft Forge 1.18.2 加入模组后无法启动

Cang-Yue opened this issue · comments

错误描述

  • 加入模组后游戏无法启动,断网后启动正常,删除/禁用后启动正常
  • 阅读源码访问常量LINK, MD5指向链接,可以正常获取文件

重现方式
加入模组后启动游戏

预期行为
启动时卡在modloading-worker-0,无界面刷新,在我的桌面环境中表现为窗口绘制前在该位置显示的图像

截屏
Screenshot_20230107_155731
Screenshot_20230107_155712

系统及游戏信息

  • OS: Debian Linux
  • Desktop: KDE Plasma
  • OS Version: bullseye(11)
  • Launcher: HMCL
  • Java: openjdk version "17.0.4" 2022-07-19
  • Minecraft Version: 1.18.2
  • Forge Version: 40.2.0

模组列表

ChickenChunks-1.18.2-2.9.2.95-universal.jar
CodeChickenLib-1.18.2-4.1.2.475-universal.jar
configured-2.0.0-1.18.2.jar
constructionwand-1.18.2-2.7.jar
create-1.18.2-0.5.0.g.jar
CreeperHeal-1.18.2-2.0.1.jar
CustomSkinLoader_ForgeActive-14.14-SNAPSHOT-323.jar
FarmersDelight-1.18.2-1.2.0.jar
flywheel-forge-1.18.2-0.6.8.jar
gravestone-1.18.2-1.0.2.jar
i18nupdatemod-1.18-3.0.2.jar
InventoryProfilesNext-forge-1.18.2-1.8.6.jar
Jade-1.18.2-forge-5.2.6.jar
JadeAddons-1.18.2-forge-2.4.1.jar
jei-1.18.2-forge-10.2.1.283.jar
kotlinforforge-3.7.1-obf.jar
libIPN-forge-1.18.2-1.0.8.jar
OreExcavation-1.10.162.jar
StorageDrawers-1.18.2-10.2.1.jar
TwerkItMeal-2.2.2.jar
xptome-1.18.2-2.1.7.jar
zergatul.freecam-1.3.0-1.18.2.jar
commented

遇到相同问题 在 Render thread 激活前卡死
版本 1.16.5

[11:05:18] [modloading-worker-2/INFO]: Loaded 1/1 KubeJS startup scripts in 0.875 s
[11:05:18] [modloading-worker-2/INFO]: Hello, World! (You will see this line every time client resources reload)
[11:05:18] [modloading-worker-2/INFO]: Loaded script client_scripts:script.js in 0.003 s
[11:05:18] [modloading-worker-2/INFO]: Loaded 1/1 KubeJS client scripts in 0.016 s
=====================在此处卡死===============================
[11:08:39] [Render thread/INFO]: Registered 45 Block entries in 0.2ms.
[11:08:40] [Render thread/INFO]: HELLO from Register Block
[11:08:40] [Render thread/INFO]: Potentially Dangerous alternative prefix `botania` for name `air_rod`, expected `mythicbotany`. This could be a intended override, but in most cases indicates a broken mod.
[11:08:40] [Render thread/INFO]: Potentially Dangerous alternative prefix `botania` for name `agricarnation`, expected `mythicbotany`. This could be a intended override, but in most cases indicates a broken mod.
[11:08:40] [Render thread/INFO]: Potentially Dangerous alternative prefix `botania` for name `altar_craft`, expected `mythicbotany`. This could be a intended override, but in most cases indicates a broken mod.
commented

if (!md5.equals(MD5String)) {
// TODO:阻塞式下载必不可少,但是否应该增加提示?
FileUtils.copyURLToFile(new URL(LINK), LANGUAGE_PACK.toFile());
InputStream stream = Files.newInputStream(LANGUAGE_PACK);
md5 = DigestUtils.md5Hex(stream).toUpperCase();
// 说明有可能下载损坏,就不要复制后加载了
if (!md5.equals(MD5String)) {
setResourcesRepository();
return;
}
if (Files.exists(LOCAL_LANGUAGE_PACK)) {
Files.delete(LOCAL_LANGUAGE_PACK);
}
Files.copy(LANGUAGE_PACK, LOCAL_LANGUAGE_PACK);
}

相关代码使用了阻塞式加载,是否有可能实现低版本的非阻塞式加载或添加超时/下载过程延后?

查了一下文档,发现源码中的FileUtils.copyURLToFile()没设置超时时间,如果下载过慢会持续阻塞(不下完不带停的),或许可以设置一段时间后超时(例如10s),未完成下载就使用之前缓存的文件,并且在游戏内聊天框提示,然后开个线程下载,下载完成后通知是否重新加载就好了
就是按照这个改,源码可能会面目全非