注意本教程关注的点是 ForgeGradle
项目,而不是 MinecraftForge
。
本教程假的你有对Gradle有所了解了,不了解的可以看这个Gradle教程。
前言
这个教程本来是一个系列,但是我发现一个要做一个系列非常的困难,只能将篇幅缩短,作为「抛砖引玉」的「砖」了。
什么是 Forge Gradle
ForgeGradle(之后用fg代替)是一个Gradle插件,它被创造出来用来构建Minecraft的mod和插件。它负责了你在开发配置环境中的下载资源,反编译,重编译,生成运行脚本,打包mod等工作。
对于Minecraft mod开发者来说,你们一定会在 build.gradle
中看见过:
apply plugin: net.minecraftforge.gradle
这里加载的插件就是 FG。
为什么要了解 Forge Gradle
因为中国大陆的网络,FG的下载过程会非常漫长甚至无法进行,这导致了中国大陆的开发在配置Forge开发环境中时常失败,绝大部分的新人在配置环境这一步就放弃了。
但是因为版权和Lex本人的态度,FG本身不让添加使用镜像功能,所以我们有可能需要对FG进行一些改动,来方便中国的开发者。
如何配置 Forge Gradle 的开发环境。
- 你需要下载一个mdk,并正常的解压。
- 确认FG的版本,举例来说下面是
1.15.2
版本的build.gradle
文件节选:
buildscript {
repositories {
maven { url = 'https://files.minecraftforge.net/maven' }
jcenter()
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
}
从
version: '3.+'
可以看出这里的FG的版本是FG3,所以当你获取的FG版本应该也要是FG3。
- 获取 Forge Gradle
进入你的 MDK 根目录,使用如下命令获取Minecraft Forge(这里用了Git)。
git clone https://github.com/MinecraftForge/ForgeGradle.git buildSrc
运行这条命令以后最新版的FG就存放在 buildSrc
文件夹中了(请注意这个文件夹的名字是不能修改的),如果需要旧版的FG请切换分支。
完成后文件树如下:
.
├── CREDITS.txt
├── LICENSE.txt
├── README.txt
├── build
│ ├── classes
│ ├── createMcpToSrg
│ ├── downloadMCMeta
│ ├── downloadMcpConfig
│ ├── extractSrg
│ ├── natives
│ ├── resources
│ └── tmp
├── build.gradle
├── buildSrc
│ ├── HEADER
│ ├── Jenkinsfile
│ ├── LICENSE
│ ├── README.md
│ ├── build
│ ├── build.gradle
│ ├── gradle
│ ├── gradle.settings
│ ├── gradlew
│ ├── gradlew.bat
│ ├── settings.gradle
│ └── src
├── changelog.txt
├── forge-1.15.2-31.1.0-mdk.zip
├── gradle
│ └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── run
│ ├── config
│ ├── defaultconfigs
│ ├── logs
│ └── mods
└── src
└── main
22 directories, 18 files
- 使用本地FG
在默认情况下,mdk使用的是已经打包好的FG,所以我们得修改成自己本地的FG。
以 1.15.2
为例,修改mdk根目录下的 build.gradle
文件。
首先删除或者注释如下语句
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
然后将
apply plugin: net.minecraftforge.gradle
修改为
apply plugin: net.minecraftforge.gradle.userdev.UserDevPlugin
其中
net.minecraftforge.gradle.userdev. UserDevPlugin
是与 buildSrc/src/userdev/resources/META-INF/gradle-plugins/net.minecraftforge.gradle.properties
值相同。
- 导入项目
这里的导入方式没有什么区别,按照正常的导入mdk的方式导入就行。
- 调试配置
在你导入项目之后,你得在进行一些配置才能调试FG,这里以IntelliJ举例。
- 首先打开你的
Edit Configurations
,并点击新建一个Gradle Configuration
- 按照以下内容填入
其中 Gradle project
选择你的mdk根目录的名字。
Name
的内容可以自己填写。
点击 OK
即可保存配置,然后你就可以在FG内肆意的下断点,然后在Debug面板里选择运行 FG Runclient
,即可触发你的端点。
另外对于FG3.0来说,FG的入口函数是 buildSrc/src/userdev/java/net/minecraftforge/gradle/userdev/UserDevPlugin
的 apply
。
继续开发
因为ForgeGradle本身是一个非常庞大的项目。这里我只能做简单的介绍。
首先ForgeGradle基本上可以分成两个部分(Lex语):
除此之外ForgeGradle还有mcp这个包,里面主要是一些放混淆重命名的东西,因为userdev和pathcer都用的到所以就独立出来了。
最后一个剩下的是common部分,这个部分里的代码主要是一些「工具类」的代码,比如下载函数之类的,都放在这个子包中。
给ForgeGralde贡献代码的一些经验
- 不要希望会很快得到反馈
- Lex本人对版权问题非常的认真,如果有涉及到对FG内处理Minecraft原版内容的代码,请务必小心,只能使用正版相关东西(包括但不限于正版启动器,正版的地址)
- 请多在Forge的discord里活跃,混个脸熟对你的PR有帮助。
- 我个人认为,Lex还是很希望有人能帮忙改进ForgeGradle的。
- 如果你是Linux或者macOS的用户,可以多帮忙测试别人的PR或者尝试解答issue里的问题