几乎废寝忘食的周末,总算把这一路理顺了,基于forge为1448的mod开发环境搭建。BBS和bilibili上能找到一些搭建的基础教程,然而都是老版本用MCP构建的,貌似自从1.7.2以后forge的开发版就开始使用gradle来构建project了,gradle为何物度娘可以告诉你。还是那句,善用搜索,即使度娘也能告诉你很多。
和上次那篇使用html5的canvas标签做的时钟程序博文一样,需要强调的是我并不是什么java程序员,有关技术问题也许你比我更在行,所以这里只记录下我的过程,方法也许不唯一。最开始只是想对某个mod(格雷5)汉化,不过通过hhclass抓取字符串汉化实在没有效率,而且不可靠,有种投机取巧的感觉。隧思考反编译mod直接放进开发环境,修改需要的部分后重新打包。不过因为一些技术问题反编译后的代码总有几处错误我无法修正,即使看似修正了还是不能打包jar,不知道是不是缺少了什么前置的库,待以后有能力再解决。
所以后来直接使用了从github上下载的源码进行编译,下面的也将以格雷5.08为例。
开发环境搭建
这部分参考了http://www.261day.com/博主的下面这个文章(其实人家已经说得很明白了这样不要紧吗。。)
我个人建议:全程翻墙——因为在你构建Src版forge时候,他会从境外的库下载所有资源文件(Src版本身只有200k不到)
你可以在这个页面下载所有的forge版本: Minecraft Forge
他们的论坛在此,有开发教程,当然也有下载,不过没上面的全:Minecraft Forge forum
你需要的环境和软件如下:
- JDK开发环境,这个不用多说,记得配好环境变量
- Gradle环境,建议配上,构建java用的,下好了以后也记得配好环境变量,和JDK的配置方式很相似
- eclipse,反正我都是用eclipse做project,因为教程好找(打脸。需要注意的是eclipse里也需要gradle的,不然你可能没法在eclipse里构筑你的project。
如果你完成了上面3项,你就可以去下载forge的Src版本了。解压后的目录应该会是这样(我这里用1448版本,这是1.7.10的推荐稳定版本)
这时候打开你的cmd,使用cd命令将目录切换到这个目录,或者你可以直接右键“在此处打开命令窗口”(好像需要设置)
然后直接可以敲gradle setupDecompWorkspace eclipse
来杯咖啡吧,刷刷微博聊聊天(话说挂vpn就上不了虾米音乐了真是不爽),如果你的VPN比较慢可能要等很久,大约会下载200M的东西。
出现BUILD SUCCESSFUL就是成功了。
现在打开eclipse,把工作空间切换到上面目录的eclipse里,顺利的话你已经可以打开它了
可以看见里面有个示例mod,至此你就可以mod开发了。
导入他人mod的源代码
这里先不讨论什么版权问题,请自行解决。我这里以导入gregtech5.08为例
首先,因为格雷5需要工业2exp作为前置,而且引用了多个其他mod的api(修改了其他mod的合成(格雷的魔掌)),所以你需要把那些mod的dev版本添加到你的库里,不然会因为变量缺失无法编译。添加进库的步骤很简单,Minecraft这个项目右键属性》Java 构建路径》库》添加外部JAR(right-click on the project -> properties -> Java Build Path -> Libraries -> Add external JARs)
再次强调,mod需要的是dev版,各个mod的发布页面都有提供。你所导入的mod源代码需要哪些前置和库,源码的发布者应该有提到,请留意。
之后,源代码可以复制进\src\main\java里,resources直接复制到\src\main就行,如果没有任何提示错误,你就可以在Eclipse里修改和运行这个mod了。
打包发布
那么,已经开发好的mod如何打包成我们平常玩的jar模组呢?
打包前请确认你的代码无误,而且我建议所有.java文件都使用UTF-8编码。
可以参考wuppygaming的youtube视频: Minecraft 1.7 Forge Modding Tutorials: Releasing Your Mod
先配置build.gradle文件,修改一些版本和参数信息
version = "5.08" group= "gregtech" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "gregtech"
因为我就直接放在\src\main\java里的,所以group直接写gregtech就行。
下面重要的来了~~貌似还没有人的教程提到过这个
因为不是所有的mod都很简单,不需要其他前置提供api(比如大格雷)。记得上面说过在eclipse里需要添加很多mod的dev版作为库吗,使用gradle编译的时候同样需要再引入这些库。所以在build.gradle文件的dependencies {}中加入一行
compile fileTree(dir: 'libs', include: ['*.jar'])
这样就会在编译时加载所有位于libs目录下的库。
最后还有一步
但是在windows下编译时,因为windows默认环境似乎是GBK码,所以如果你在.java里写了中文字符(比如汉化或者注释目的),那输出的结果可能会乱码或者编译失败。
所以在build.gradle文件中加上
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
这样才能正确的编码。
现在开始编译
cd命令进入根目录,使用gradlew build命令进行编译,出现BUILD SUCCESSFUL即是成功。
之后你可以在\build\libs中找到编译完成的.jar文件,这个jar文件就可以放进客户端的mods里玩了
Thanks for all your efforts that you have put in this. very interesting info .
博主你好呀,我全程用的vpn,但是运行gradlew setupDecompWorkspace之后,一直BUILD失败。具体问题如下:
A problem occurred evaluating root project ‘forge-1.9-12.16.1.1887-mdk’.
> Failed to apply plugin [id ‘net.minecraftforge.gradle.forge’]
> Unable to obtain url (https://launchermeta.mojang.com/mc/game/version_manifest.json) with etag!
请问这种情况有什么解决方案嘛?谢谢啦
我也不知道。。。。gradlew.bat我只会用一个eclipse指令来构建
博主你好 我无论怎么搞都是构建失败 最后我发现应该是网络问题 有几个东西下载不了 我也不知道什么vpn好用 能不能告诉我你用的是什么vpn
我自己用的是green,不过是收费的,价格可以接受,节点比较多。百度头几个都是假的注意鉴别,我也不知道什么别的更便宜更稳定的vpn了,这个用了好几年了。https://www.green-jsq.org/
好的 谢谢 回复好快啊
嗯嗯客气。有邮件嘛