minecraft mod教程-forge原理与EventHandler

想了想,我的教程必须要和别人的不一样才有存在的意义。我在这里不会一上来就介绍那种添加方块添加物品之类的,而不把原理什么的讲出来。要成为一个mod制作高手必须要了解minecraft和forge的运行方式。很幸运我们现在看过的代码都是经过mcp反混淆的了,我们没有必要像黑客一样的处理那种混淆之后的代码,但是看minecraft和forge的代码还是必要的。

在介绍forge的消息处理之前我们要先介绍一下forge是怎么运行的。我想相当多的mod制作者制作了低端mod好久却没有了解forge的运行原理。forge的运行原理就是在强奸字节码(比喻来自szszss的coremod教程)。要知道minecraft是基于java的,java的类加载器一旦加载了一个类到java虚拟机中,这个类就不可能被外部修改了,但是加载之前的类的字节码可不是这样被严格的保护的,那些字节码处于一种谁想强X就强X的程度。forge本身通过修改启动器的json(1.6以后是这样,而1.6之前是直接修改jar文件)而优先于minecraft加载,并且forge会在minecraft加载的时候调教那些正要被加载的字节码。

经过forge的一翻调教,安装完forge的minecraft就会在适当的时候去调用forge了。当然如果只做到这样的话那么也就是一个普通的mod了,既然是mod加载器就要有加载器的样子。forge不光自己强奸那些字节码,而且还允许基于forge的mod一起来调教minecraft。 Continue Reading…