FledgeXu
本帖最后由 FledgeXu 于 2020-8-21 23:56 编辑

注意本教程关注的点是 ForgeGradle 项目,而不是 MinecraftForge 本教程假的你有对Gradle有所了解了,不了解的可以看这个Gradle教程

前言

这个教程本来是一个系列,但是我发现一个要做一个系列非常的困难,只能将篇幅缩短,作为「抛砖引玉」的「砖」了。

什么是 Forge Gradle

ForgeGradle(之后用fg代替)是一个Gradle插件,它被创造出来用来构建Minecraft的mod和插件。它负责了你在开发配置环境中的下载资源,反编译,重编译,生成运行脚本,打包mod等工作。 对于Minecraft mod开发者来说,你们一定会在 build.gradle 中看见过:

  1. apply plugin: net.minecraftforge.gradle
复制代码

这里加载的插件就是 FG。

为什么要了解 Forge Gradle

因为中国大陆的网络,FG的下载过程会非常漫长甚至无法进行,这导致了中国大陆的开发在配置Forge开发环境中时常失败,绝大部分的新人在配置环境这一步就放弃了。 但是因为版权和Lex本人的态度,FG本身不让添加使用镜像功能,所以我们有可能需要对FG进行一些改动,来方便中国的开发者。

如何配置 Forge Gradle 的开发环境。

  • 你需要下载一个mdk,并正常的解压。
  • 确认FG的版本,举例来说下面是 1.15.2 版本的 build.gradle 文件节选:

  1. buildscript {
  2.     repositories {
  3.         maven { url = 'https://files.minecraftforge.net/maven' }
  4.         jcenter()
  5.         mavenCentral()
  6.     }
  7.     dependencies {
  8.         classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
  9.     }
  10. }
复制代码

version: '3.+' 可以看出这里的FG的版本是FG3,所以当你获取的FG版本应该也要是FG3。

  • 获取 Forge Gradle

进入你的 MDK 根目录,使用如下命令获取Minecraft Forge(这里用了Git)。

  1. git clone [url]https://github.com/MinecraftForge/ForgeGradle.git[/url] buildSrc
复制代码

运行这条命令以后最新版的FG就存放在 buildSrc 文件夹中了(请注意这个文件夹的名字是不能修改的),如果需要旧版的FG请切换分支。 完成后文件树如下:

  1. .
  2. ├── CREDITS.txt
  3. ├── LICENSE.txt
  4. ├── README.txt
  5. ├── build
  6. │   ├── classes
  7. │   ├── createMcpToSrg
  8. │   ├── downloadMCMeta
  9. │   ├── downloadMcpConfig
  10. │   ├── extractSrg
  11. │   ├── natives
  12. │   ├── resources
  13. │   └── tmp
  14. ├── build.gradle
  15. ├── buildSrc
  16. │   ├── HEADER
  17. │   ├── Jenkinsfile
  18. │   ├── LICENSE
  19. │   ├── README.md
  20. │   ├── build
  21. │   ├── build.gradle
  22. │   ├── gradle
  23. │   ├── gradle.settings
  24. │   ├── gradlew
  25. │   ├── gradlew.bat
  26. │   ├── settings.gradle
  27. │   └── src
  28. ├── changelog.txt
  29. ├── forge-1.15.2-31.1.0-mdk.zip
  30. ├── gradle
  31. │   └── wrapper
  32. ├── gradle.properties
  33. ├── gradlew
  34. ├── gradlew.bat
  35. ├── run
  36. │   ├── config
  37. │   ├── defaultconfigs
  38. │   ├── logs
  39. │   └── mods
  40. └── src
  41.     └── main

  42. 22 directories, 18 files
复制代码

  • 使用本地FG

在默认情况下,mdk使用的是已经打包好的FG,所以我们得修改成自己本地的FG。 以 1.15.2 为例,修改mdk根目录下的 build.gradle 文件。 首先删除或者注释如下语句

  1. dependencies {
  2.     classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
  3. }
复制代码

然后将

  1. apply plugin: net.minecraftforge.gradle
复制代码

修改为

  1. 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/UserDevPluginapply

继续开发

因为ForgeGradle本身是一个非常庞大的项目。这里我只能做简单的介绍。 首先ForgeGradle基本上可以分成两个部分(Lex语):

  • pathcer 部分,pathecer 里面的任务和配置是用来给Forge开发使用的
  • userdev 部分,userdev 这里面的任务是用来给Forge Mod开发者使用的。

除此之外ForgeGradle还有mcp这个包,里面主要是一些放混淆重命名的东西,因为userdevpathcer都用的到所以就独立出来了。 最后一个剩下的是common部分,这个部分里的代码主要是一些「工具类」的代码,比如下载函数之类的,都放在这个子包中。

给ForgeGralde贡献代码的一些经验

  • 不要希望会很快得到反馈
  • Lex本人对版权问题非常的认真,如果有涉及到对FG内处理Minecraft原版内容的代码,请务必小心,只能使用正版相关东西(包括但不限于正版启动器,正版的地址)
  • 请多在Forge的discord里活跃,混个脸熟对你的PR有帮助。
  • 我个人认为,Lex还是很希望有人能帮忙改进ForgeGradle的。
  • 如果你是Linux或者macOS的用户,可以多帮忙测试别人的PR或者尝试解答issue里的问题

附录

Gradle 4.9 用户手册

Gradle 4.9 Java Docs


ljt521
6666666666666666666666666666666666666

jangyee
好评!非常感谢!

第一页 上一页 下一页 最后一页