说明:已经玩过好多年《我的世界》,大概从13年开始吧,虽然不算早,但是也不是很晚。因为高度自由、丰富的mod、精美的材质光影,简单的方块游戏风靡世界。最近心血来潮想学学怎么做mod,但是直接从1.13.2直接起步开始做mod还是有点困难的,没有资料,mcbbs上也没有最新的教程,forge官网速度很慢,教程也不是很系统,反正是遇到了各种阻力。因为以前也没有写博客的习惯,所以会不会有后续,也不知道。
(一)环境配置
1. JDK (https://www.oracle.com/technetwork/java/javase/overview/index.html)
jdk 环境配置这里就不说了,学过java的都会,不会的网上搜也会搜出一大堆
2.forgeMDK (https://files.minecraftforge.net/)
从官网下载1.13的mdk
3.gradle (https://gradle.org/)
一个自动化构建工具,因为下载mdk里会自动下载一个gradle,所以这一步可有可无(建议装上吧)。新建的mod都是基于gradle的项目。
因为gradle需要下载很多依赖,以及资源文件,全都放在C盘用户目录下的.gradle文件夹里,也就是本地库,所以也得配置一下,放到其他盘去。
新建环境变量 GRADLE_HOME gradle的位置 (前提是你自己安装了gradle,没安装就算了)
然后是 在path环境变量中添加 %GRADLE_HOME%\bin (没有装gradle的就不用配置了)
最后是本地库的位置 GRADLE_USER_HOME,位置自己选。
4.IDE
这个看个人喜好,Eclipse 或者IDEA ,IDEA收费,eclipse免费。
(二) 项目搭建
官方教程(https://mcforge.readthedocs.io/en/latest/)
解压从forge官网下载的forge mdk,文件夹名字随便改一个。
新的forge有一些改动,官网给出的命令有的无法运行,这里直接点击gradlew.bat 运行。
第一次运行很坑的,要下载好多资源,用来构建环境,所以要耐心等待。
这里是cmd运行后的结果,构建成功,然后用idea打开。还有一些后续需要下载的jar包,游戏运行时的资源文件,只要用idea打开,后续的构建工作会自动完成,有些jar包需要去mc官网去下载,非常的慢,下载速度有20k左右的样子,第一次下载都很慢。第一次过后资源都下载到了本地,以后就不会这么慢了,除非版本不一样。
将项目导入idea
选择你的项目位置,就是你解压mdk的文件夹,然后以gradle的方式导入idea
然后直接下一步到完成。
导入项目就算完了。
导入后项目会自动构建。(这里就是说的下载很慢的地方,点开toggle view 你就会看到后台在干嘛)
构建完毕后来看看项目结构
.gradle 文件时gradle的文件夹,可以忽略。
.idea时idea的项目标志,idea是靠这个打开项目的。删了就得重新导入。
build是gradle构建生成的。
out文件夹这里没有,它是你自己mod编译后产生的文件夹,编译一次生成一次。
gradle是mdk自带的gradle工具。
run是运行客户端时产生的文件,游戏存档就在这里面。
src是资源文件,里面包含了你的mod信息,以及你的代码。
除了build.gradle文件其他的文件就不用管。
这里准备工作已经差不多了,src里面包含了一mod例子,可以打开 ExampleMod.java 看看。
(三)运行mod
接下来就是运行mod了,但是项目里还是缺点东西,就是mc客户端源文件了,forge已经把源文件准备好了,直接运行命令就可以下载。
以前版本的mdk必须要 运行 gradlew.bat idea 才能导入到idea,现在不是了,你解压mdk后及时不运行gradlew.bat也能直接导入。但是要想运行客户端你还得运行一个命令 。
cmd窗口,cd到项目文件夹,运行
gradlew genIntellijRuns
看到绿色的 build success 就算完成了,然后再打开项目,点开运行选项你就能看到runClient 和runService
可以试着运行一下,在mod列表你可以看到到自己mod。
这里的Example Mod就是自带的mod例子
总结
gradlew setupDecompWorkspace 命令 gradlew idea 命令都不能用了,可以直接用idea打开项目,但是项目运行,还得用
g
radlew genIntellijRuns 命令去下载客户端和服务器文件。
完毕
参考
https://blog.csdn.net/lyh20000420/article/details/83659149
https://mcforge.readthedocs.io/en/latest/gettingstarted/