几乎废寝忘食的周末,总算把这一路理顺了,基于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/博主的下面这个文章(其实人家已经说得很明白了这样不要紧吗。。)

minecraft mod开发教程-搭建开发环境

我个人建议:全程翻墙——因为在你构建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的推荐稳定版本)

01

这时候打开你的cmd,使用cd命令将目录切换到这个目录,或者你可以直接右键“在此处打开命令窗口”(好像需要设置)

然后直接可以敲gradle setupDecompWorkspace eclipse

来杯咖啡吧,刷刷微博聊聊天(话说挂vpn就上不了虾米音乐了真是不爽),如果你的VPN比较慢可能要等很久,大约会下载200M的东西。

出现BUILD SUCCESSFUL就是成功了。


现在打开eclipse,把工作空间切换到上面目录的eclipse里,顺利的话你已经可以打开它了

02

可以看见里面有个示例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)

03

再次强调,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里玩了

《“Minecraft开发mod环境的搭建以及mod的发布打包”》 有 7 条评论

  1. 博主你好呀,我全程用的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!

    请问这种情况有什么解决方案嘛?谢谢啦 [ac15]

    • 我也不知道。。。。gradlew.bat我只会用一个eclipse指令来构建

  2. 博主你好 我无论怎么搞都是构建失败 最后我发现应该是网络问题 有几个东西下载不了 我也不知道什么vpn好用 能不能告诉我你用的是什么vpn

关闭菜单