来看懂 游戏《Minecraft》的崩溃报告吧! 服务端/客户端


如何看懂Minecraft报错的关键信息。

让你如何看懂Minecraft报错

  • 前言
    • 一些俏皮话
    • 寻找崩溃日志
    • 打开崩溃日志
    • 重要的事说三遍
    • 下载文本编辑器
    • 开始分析
    • 深度分析
    • 得出结论
    • 修复报错
      • 解决方案
      • 看懂更多
    • 结束

点我下载.

然后我们就可以愉快地打开报告进行查看了。

https://github.com/Mohist-Community/MinecraftMappings

这是GitHub的连接,如果你不会用git等工具的话,只需要按下图操作走。

 点击Code然后点击Download ZIP

然后你还需要一个IDE,最好用IntelliJ IDEA的community edition(社区版)

 访问https://www.jetbrains.com/idea/download/#section=windows
然后只需要点击Download即可。

IDEA下载后按引导安装。

不要怕看不懂英文和嫌麻烦,因为你都走到这一步了,还有什么理由give up呢?

安装完毕后启动IDEA。

然后刚刚把下载完的源码包解压到一个目录,然后复制源码包解压后的路径并在IDEA里导入新工程(Import Project),路径就粘贴刚刚你复制的源码包解压后路径。

然后IDEA会自动导入这个项目,导入速度和网速有关系,这不需要不管。如果失败那就多试几次或者使用代理加速。

导入完毕后只需要运行main.kt,就可以自动生成mapping文件了,在build目录下。

分别有method、fields、params这3个csv格式的文件。

可以通过wsp或微软office系列软件打开,是表格。

然后直接在里面搜索报错里出现过的对应func、field等字段,就可以看到相关说明了。

有必要还可以下载相关forge源码查询。

好了,我们继续看下面的栈帧。
对于下面的栈帧来说,上面的栈帧全是主要原因。也就是说下面的栈帧都是废话
不过我还是贴出来让你了解一下。

在这里插入图片描述很好,接下来我们看红圈内的栈帧。

其中所有 net.minecraftforge.fml.xxxx的栈帧,基本上没什么有价值的信息。
我们继续看下面 net.minecraft.xxxx的栈帧,我们可以看到关键词汇那就是entity

得出结论

Entity就是实体的意思,也就是说这个东西出现在玩家使用组合技与实体进行交互时才发生的数组下标跃境异常

我们继续看
在这里插入图片描述
这2段代表了有关玩家的信息,意义不大。
在这里插入图片描述我们在这些栈帧中可以看到有network和server单词。
这代表这些栈帧与网络和服务端关西了。
这段也是意义不大,而且与拔刀剑产生的报错无关,我们继续看。
在这里插入图片描述
这段才是好戏,我们可以看到一个词组叫playerLoggedOut,这个代表玩家登出服务器。
也就是玩家掉线
然后我们结合这些堆栈抛出异常的顺序。
我们就可以得知一个大概顺序。

  1. 玩家使用组合技后,首先从掉线
  2. 然后服务端发现异常
  3. 然后服务端整理崩溃后就关闭服务器了。
    很好,我们对错误的分析已经结束了。
    接下来我们继续往下看!
  • 完成看崩溃报告的栈帧并得出结论~

修复报错

在这里插入图片描述这是下面的内容。
我们可以看到大大的Head (头部)字样
然后Thread(线程): Server thread(主线程)
我们可以得到一个信息
那就是说,这些栈帧抛出错误是在服务器主线程上抛出的,所以才会导致服务器自我保护机制开启并关闭服务器。

我们继续往下看。
在这里插入图片描述我们可以看见大大的 Player being ticked
这段代表有关出错实体的名字。
然后既然出现了Player,代表这个实体是玩家。
也就代表,这个是出错的实体是玩家。因为那个错误拔刀剑在玩家手上。所以出错实体是玩家。

在这里插入图片描述
然后
Entity Type是实体类型,Entity ID是实体的ID,Name就不用解释了,是实体名。
因为这个实体是玩家,所以实体名就是玩家名。

如果是一只名为蔡徐坤(cxk)的生物(mobs)实体扔出了篮球,造成了异常。那就是
在这里插入图片描述
好了,我们已经知道造成异常的原因、造成异常的玩家了。
那么接下来,就是解决方案拉。

解决方案

好,我们开始解决。
一般来说由实体引起的报错,我们只需要删除这个实体就行了。
这段包含了出错实体,也就是用了错误拔刀剑玩家的位置。
如果这些实体不是玩家,我们可以利用MCEdit、创世神、原版kill指令让这些实体GG。

可问题在于,这个是玩家。那怎么办?

我们有2个办法

第一个是删除有关这个玩家的背包信息,
第二个是打开Forge的错误实体自动移除功能。

我们选择第二个对吧,
我们在服务端的config文件夹内找forge.cfg然后打开
并找到如下两行
然后把false改成true并重启服务器即可。
在这里插入图片描述
好了,报错修复到此结束。

看懂更多

先说一下,这个与解决崩溃没什么关系了
纯粹是为了让你了解更多的东西。
直接上图,
在这里插入图片描述我们可以看到。
System Details的意思是 系统细节
然后下面有
Minecraft Version 游戏版本
Operating System 操作系统型号
Java Version Java版本
Java VM Version JVM版本
Memory 内存大小
JVM Flags JVM附加参数等东西
然后还有Plugins 里面有你加载到服务器里的插件名字
还有FML 代表Forge版本
State和下面的表,是你载入到服务器里的模组和模组的情况
这些英文自己翻译就行了。
建议平时多积累点词汇量。

结束

好了,本文到此结束。转载须注明作者名字和原文地址
本文由Dinnerbone晚餐骨于CSDN上原创发布。

如对你有帮助,或是让你了解了更多知识,那真是再好不过了。

在这里插入图片描述