本帖最后由 FledgeXu 于 2020-8-21 23:56 编辑
注意本教程关注的点是 ForgeGradle 项目,而不是 MinecraftForge 。 本教程假的你有对Gradle有所了解了,不了解的可以看这个Gradle教程。
前言
这个教程本来是一个系列,但是我发现一个要做一个系列非常的困难,只能将篇幅缩短,作为「抛砖引玉」的「砖」了。
什么是 Forge Gradle
ForgeGradle(之后用fg代替)是一个Gradle插件,它被创造出来用来构建Minecraft的mod和插件。它负责了你在开发配置环境中的下载资源,反编译,重编译,生成运行脚本,打包mod等工作。 对于Minecraft mod开发者来说,你们一定会在 build.gradle 中看见过:
复制代码
这里加载的插件就是 FG。
为什么要了解 Forge Gradle
因为中国大陆的网络,FG的下载过程会非常漫长甚至无法进行,这导致了中国大陆的开发在配置Forge开发环境中时常失败,绝大部分的新人在配置环境这一步就放弃了。 但是因为版权和Lex本人的态度,FG本身不让添加使用镜像功能,所以我们有可能需要对FG进行一些改动,来方便中国的开发者。
如何配置 Forge Gradle 的开发环境。
复制代码
从 version: '3.+' 可以看出这里的FG的版本是FG3,所以当你获取的FG版本应该也要是FG3。
进入你的 MDK 根目录,使用如下命令获取Minecraft Forge(这里用了Git)。
复制代码
运行这条命令以后最新版的FG就存放在 buildSrc 文件夹中了(请注意这个文件夹的名字是不能修改的),如果需要旧版的FG请切换分支。 完成后文件树如下:
复制代码
在默认情况下,mdk使用的是已经打包好的FG,所以我们得修改成自己本地的FG。 以 1.15.2 为例,修改mdk根目录下的 build.gradle 文件。 首先删除或者注释如下语句
复制代码
然后将
复制代码
修改为
复制代码
其中 net.minecraftforge.gradle.userdev. UserDevPlugin 是与buildSrc/src/userdev/resources/META-INF/gradle-plugins/net.minecraftforge.gradle.properties 值相同。
这里的导入方式没有什么区别,按照正常的导入mdk的方式导入就行。
在你导入项目之后,你得在进行一些配置才能调试FG,这里以IntelliJ举例。

其中 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贡献代码的一些经验
附录
Gradle 4.9 用户手册
Gradle 4.9 Java Docs
注意本教程关注的点是 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 [url]https://github.com/MinecraftForge/ForgeGradle.git[/url] 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里的问题
附录
Gradle 4.9 用户手册
Gradle 4.9 Java Docs
6666666666666666666666666666666666666
好评!非常感谢!