我最近在玩一些Minecraft的模组,有的时候因遇到崩溃而火冒三丈。后来慢慢研究才发现解决崩溃还是非常容易的,在这里我会摆一些小技巧给大家参考一下~
(ps:我还不是内行

1.日志
游戏崩溃的时候一般会将崩溃的分析结果放在崩溃日志中,这时候就需要我们去再度分析。
在用HMCL启动器的小伙伴,如果你们的游戏崩溃,默认情况下会自动弹出崩溃日志,而且一般已经用几种颜色标记以方便玩家分析,一般情况下有三种:
白色(info——信息)
用于提醒玩家运行了什么必要的数据。
黄色(warns——警告)
在处理一些数据的时候发现了一些小问题,极少可能会阻碍游戏运行。
红色(errors——错误)
在处理一些数据的时候发现了一些大问题,可能会阻碍游戏运行。
那是不是我们只关注红色(errors)就好呢,并不是的,在后面我会讲到。
如果你们不小心关掉了崩溃日志,或者不是HMCL启动器的用户,你也可到
.minecraft\crash-reports下找到最近日期的崩溃文件。这种崩溃文件一般是以
crash-年-月-日_时.分.秒-类型的命名呈现的。
其中类型包括client(客户端)和server(服务端),客户端是直接用启动器(如HMCL)启动的游戏,服务端是用开服文件启动的服务器。
当然还可以在log中找到,比较繁琐。
但是这种崩溃日志并不会有相应的颜色显示,但也不要为此伤心,还是可以直接看出来的。

2.分析
2.1 初步分析
找到了崩溃日志,现在就来打开看看吧~
---- Minecraft Crash Report ----
Time: 2/24/20 10:44 AM
Description: There was a severe problem during mod loading that has caused the game to failnet.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from Tough As Nails (toughasnails)
Caused by: java.lang.NullPointerException
at toughasnails.init.ModConfig.lambda$init$0(ModConfig.java:64)
...45 more
A detailed walkthrough of the error, its code path and all known details is as follows:
----------------------------------------------------------------------------------------- System Details --
Details:
Minecraft Version: 1.12.2
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_201, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 159206784 bytes (151 MB) / 520093696 bytes (496 MB) up to 1879048192 bytes (1792 MB)
JVM Flags: 11 total; -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=16M -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Xmn128m -Xmx1792m -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0FML: MCP 9.42 Powered by Forge 14.23.5.2838 7 mods loaded, 7 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored| State | ID | Version | Source | Signature |
|:----- |:------------ |:------------ |:------------------------------------------- |:---------------------------------------- |
| LCHI | minecraft | 1.12.2 | minecraft.jar | None |
| LCHI | mcp | 9.42 | minecraft.jar | None |
| LCHI | FML | 8.0.99.99 | forge-1.12.2-14.23.5.2838.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 |
| LCHI | forge | 14.23.5.2838 | forge-1.12.2-14.23.5.2838.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 |
| LCHI | itemrender | @VERSION@ | IRR_V1.1.0_MC1.12.2.jar | None |
| LCHE | toughasnails | 3.1.0.139 | ToughAsNails-1.12.2-3.1.0.139-universal.jar | None |
| LCH | tanspit | 1.12-1.0 | tanspit-1.12-1.0.jar | None |Loaded coremods (and transformers):
GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.6.13559 Compatibility Profile Context 26.20.12001.11014' Renderer: 'AMD Radeon(TM) Vega 8 Graphics'为节约空间修改了部分字段
对于初学者,第一件事可以先看整个崩溃日志的最下方,有一个自带形状的表格(虽然很挫),写上了被识别了的所有模组(粗略来说)。

在这里我们注意的是左侧带有LCHI或者LCHE这一列,每一个字母都带有他自己的意思,表格上方已经说明了,这里我给大家举例一些比较重要的:
L 表明这个模组已经加载。
H 表明这个模组已经预初始化。
I 表明这个模组已经初始化完成,已经载入进去了游戏,表示这个模组可以正常运作。
D 表明这个模组是失效的模组。
E 表明这个模组在加载时发生了错误。
U 表明这个模组加载时被中止。
在本崩溃文件中,我们可以发现在加载到thoughsnails(意志坚定)这个模组的时候发生了错误,这个时候我们可以选择删掉模组去官网换一个最新版本的模组,或者干脆就不用吧。
2.2 深层分析
---- Minecraft Crash Report ----
Time: 4/24/20 4:02 PM
Description: There was a severe problem during mod loading that has caused the game to failnet.minecraftforge.fml.common.LoaderExceptionModCrash: Caught exception from YukariLib (yukarilib)
Caused by: c6h2cl2.YukariLib.PlayerNotOfficialPurchasedException: You must buy Minecraft from Official Site!!!
at c6h2cl2.YukariLib.YukariLibCore.check(YukariLibCore.kt:89)
...41 moreA detailed walkthrough of the error, its code path and all known details is as follows:
----------------------------------------------------------------------------------------- System Details --
Details:
Minecraft Version: 1.12.2
Operating System: Windows 10 (amd64) version 10.0
Java Version: 1.8.0_111, Oracle Corporation
Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
Memory: 162140216 bytes (154 MB) / 436207616 bytes (416 MB) up to 2147483648 bytes (2048 MB)
JVM Flags: 11 total; -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=16M -XX:-UseAdaptiveSizePolicy -XX:-OmitStackTraceInFastThrow -Xmn128m -Xmx2048m -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
FML: MCP 9.42 Powered by Forge 14.23.5.2847 18 mods loaded, 18 mods active
States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored| State | ID | Version | Source | Signature |
|:----- |:------------------- |:----------------- |:------------------------------------------------- |:--------- |
| LCH | minecraft | 1.12.2 | minecraft.jar | None |
| LCH | mcp | 9.42 | minecraft.jar | None |
| LCH | FML | 8.0.99.99 | forge-1.12.2-14.23.5.2847.jar | None |
| LCH | forge | 14.23.5.2847 | forge-1.12.2-14.23.5.2847.jar | None |
| LCH | cxlibrary | 1.6.1 | cxlibrary-1.12.1-1.6.1.jar | None |
| LCH | multipagechest | 1.9.1 | MultiPageChest-1.12-1.9.1.jar | None |
| LCE | yukarilib | 1.3.0 | YukariLib-1.12-1.3.0.jar | None |
| LC | reinforcedtools | 2.1.1 | ReinforcedTools-2.1.1.jar | None |
| LC | tconstruct | 1.12.2-2.12.0.135 | TConstruct-1.12.2-2.12.0.135.jar | None |
| LC | torcherino | 7.5 | torcherino-7.5.jar | None |
| LC | worldedit | 6.1.8 | 创世神.jar | None |Loaded coremods (and transformers):
CXLibraryCore (cxlibrary-1.12.1-1.6.1.jar)
cubex2.cxlibrary.CoreModTransformer
GL info: ' Vendor: 'NVIDIA Corporation' Version: '4.6.0 NVIDIA 391.35' Renderer: 'GeForce GT 440/PCIe/SSE2'为节约空间修改了部分字段
好的,这是另一位受害者的崩溃日志,来小练一下~
I————————————————————————————————————————I
没错,是yukarilib的祸,删掉删掉。
但有比较细心的小伙伴可能看出来了,为什么顶部也有一个地方显示了yukarilib呢,那如果我从上面看是不是会得到更详细的答案呢?
*啪* 明知故问,我提出来的问题难不成还有别的答案awa

没错,如果我们从上面的Description(描述)和Caused by(导致原因)后面的句子可以大致判断出谁是幕后黑手,还很有可能知道它的动机!
yukarilib的动机... ...的确有点心狠手辣啊...

在HMCL提供的日志中,只有Description会标红。(maybe)
更多的例子,这里便不再展示,也许将来我会发更多的实例给大家分享。
如果你看到了这里,你已经大致上了解了模组崩溃。
如果你仍然看不懂,你还可以到评论区下方留言。
记得...点赞哦~