如何查看MC的崩溃报告(3)

上一章的错误:空指针异常那里,我用到了“对象实例化”这一词语,其实对象本身就是类的实例,怎么还能实例化呢?简直是失了智。
昨天晚上,有个小学生主播叫“虎牙柳昊”的,用阿仇(@SihenZhang)的永恒发条整合包做视频,讲得一塌糊涂不说,还招来一群朽木不可雕的新手来阿仇的群,无一例外他们全崩溃了,崩溃类型如下:http://paste.ubuntu.com/25744923/(看这里看这里!)
第7行:java.lang.OutOfMemoryError: Java heap space
不难看出“out of memory”是“内存溢出”,“Java heap space”指的是堆空间——你可以把堆理解成房子,对象生活在房子里,如果你是个普通工薪阶层,房子买小了,对象呆得住吗?然后你就后院起火了。当然,在Java里你可以静静地祈祷垃圾收集器把这个对象回收掉,前提是Java虚拟机还在运行。
第109行JVM flag(Java虚拟机参数)中的-XX:+UseG1GC就是MC默认的垃圾收集器(G1GC),为Java的垃圾收集器之一。
果然,这三个家伙启动前都没改默认内存大小,768M的内存,运行一个166模组的整合包,还能不崩溃?
另一个崩溃类型:http://paste.ubuntu.com/25745120/(看这里看这里!)
前面若干行是bytecode(字节码)的错误,已经超纲了,关键在于后半部分。
第224行以后就是你的模组列表及这些模组的加载状态——看到E就是“errored”,说明这些模组在初始化时出错了,考虑更新/卸载吧。(一般为UE/UCE的形式)
现在崩溃看也看了,要么自己动手修复,要么找作者反馈问题——去哪儿找呢?
答案就在这里:https://github.com/(世界通用的社交性代码托管网站,基本所有的模组作者都会把源码放在这里,即使是神秘这种不开源的模组,也有他们的库存在),进去之后点击sign up注册,sign in登录。
新人登陆之后会让你建立一个repository(库)这就是你的第一个保存代码的地方,当然你可以选择不建立,一会到your profile(相当于个人中心)下自己建立。


在profile里面,点击repositories即可看到你当前的代码库,点击右上角的new按钮即可建立新的代码库,type和language是分类型与编程语言查看你的代码库。
当然我们不是跑来自己写代码的——我们是来提交bug的啊!
比如说,我们这儿有个叫月饼工艺的mod崩了,那就要知道它的名字——mooncakecraft。
看到上面截图,左上角写着“search GitHub”的搜索框了吗,把mooncakecraft填进去,回车即可搜索,如果连在一起搜不到,那就按单词分开打,比如mooncake craft。
很好,现在我们进入了月饼工艺的代码页当中。
你是要提问题的,所以请点击issues(问题)按钮,进入如下所示的页面,再点击new issue,以新建一个问题。
(我这只是演示,别真的去提问题,尤其是垃圾问题比如作者怎么还不更新,否则后果自负)

然后就是发挥你的英语水平啦,记住,准确描述你的问题,例如MC和forge的版本,模组的版本,崩溃时发生了什么,并附上相应的图片以及崩溃报告或日志文件!崩溃报告可以通过点击文字框下方的“selecting them”上传文件,也可以像第1篇说的那样,粘贴到ubuntu pastebin去。
然后submit new issue以提交这个问题。你可以适当艾特作者一下,但不要一个劲的刷楼艾特,否则对方就会大动肝火把你拉黑。
如果问题得到解决,最好对作者致以感谢并close issue,关掉这个问题,同理,如果作者自己关掉了这个issue,也不要再对这个问题进行回复了。
如果你觉得这个月饼的代码其实写的还不错,想看看它优美的写法,甚至加以简单的维护,比如汉化什么的,可以点击右上角的fork,“抄”一份代码到你的代码库中,就可以在你的库中自由修改了。(阿仇:抄你大爷,这玩意叫派生!)
第一张截图中,可以看到forestbat/NuclearPhysics forked from halvors/NuclearPhysics,意思就是我的这个nuclearphysics,是从原作者halvors的nuclearphysics代码库抄过来的。
如果你不想做什么,只是想“留个眼熟”,只需要点击star标记一下即可。

如果你已经对作者的库做出了一些工作,想把它交给作者,就要pull request了,请点击new pull request。

点击“compare across forks”(在抄本间进行比较),左侧的base fork是作者的原库,head fork就是你要提交给作者的,你编辑的那个代码库。
base:1.11.2是这个模组的1.11.2分支(branch),同理,compare的1.11.2就是你的库中的1.11.2分支——点击code按钮,就可以通过点击branch按钮以查看这个代码库的分支,这很重要,因为你必须知道你改动的是哪里。
然后create pull request就行,等待作者merge(通过)它或者关掉它。
至于如何将你的工作发布到gayhub上(对我没打错),那就是以后的事了。
所以现在,好好练习英语吧,否则你会发现你连个问题都问不出来。