引言

本文主要介绍 如何使用 Anuken 提供的 Mod 开发模板 在 IntelliJ IDEA 上构建 mod开发环境
您可能在此过程中需要外国网站,请确保您拥有此能力或合理使用网络辅助工具,此后,本文默认您能正常访问相关网站。
您也可以使用 Liplum 的模板 构建开发环境,该模板为您提供了更多功能。
更多信息可以访问官方wiki:https://mindustrygame.github.io/wiki/modding/1-modding/#content

下载

Mindustry 主要作者 Anuken 在 Github 上提供了 Mod 开发环境的模板,该模板已经为您大致配置好了Mod开发需要的依赖与库。
下载地址:https://github.com/Anuken/MindustryJavaModTemplate
打开上述地址,点击 “Code” 然后 点击 “Download ZIP”,将代码作为 zip压缩文件 的形式下载下来。如果您会使用 Github,可以使用 git clone 或 Github 的 “Use this template” 功能。
Downlaod Template.png

构建

然后在一个 全英文 (只能包含英文符号和数字) 的路径下,解压该压缩包。之后,双击点击 “build.gradle”文件,如果您的 IDEA 在安装时使用默认设置的话,会自动为您把 “.gradle”拓展名 的文件的打开方式设置为 IDEA的。如若不是,请手动使用右键菜单,将文件的打开方式设置为 IntelliJ IDEA。
注:如果您在这步上依然存在问题,请查阅本文中 手动创建项目 一章
OpenBuildGradle.png
之后,IDEA 会自动为您构建 Gradle 项目,联网下载必要的依赖库(例如 Mindustry 的核心库 Core)。如果您的网络状态良好,且一直保持畅通,那么会在等待一段时间后完毕。
如果您在构建过程中出现错误(或即使没有报错),还请您先检查项目的 JDK 版本有没有正确设置。请打开:
FIle >> Project Structure
OpenProjectStructureSettings.png
然后在弹出的窗口中选择 Project 子标签页,检查是否使用了正确的 Java SDK。
图中,普冷姆使用的是 Java 1.8 和 使用了 Language Level 8。您可以选择其他版本,Anuken 的模板需要使用 Java17。Java 17 在语法上比 Java 8 多了一些特性,但本教程并不需要考虑版本差异。
SetProjectJdkVerison.png
现在,我们的Gradle环境已经构建好了。InitPageInProject.png
如图所示,该模板为您提供了 作为mod所需的 一些基础的 文件和配置,图中红色线框部分为 您需要重点关注的几个文件,普冷姆会在稍后的章节为您介绍这些文件的含义与作用。

尝试生成 Jar 包

此步的目的并非是教学”如何导出 Jar 包供以游玩”,而是”测试您的环境是否正常,是否还需要根据不同的设备或情形进行修改”。
默认可以在 IDEA 窗口的侧边栏中找到 被折叠 Gradle 标签页,单击打开后找到 Tutorial >> Tasks >> build >> jar 任务 (Task),然后双击运行。
RunGradleTaskJar.png
此时,您的底边栏的 Run 标签 会自动弹出,在控制台中打印出运行情况与报错信息(如果有的话)。
介于您是第一次构建项目,这一步可能需要一些时间,请您耐心等待。如果耗时过长,也可能是在编译过程中出现了一些错误。此时需要您手动停止 Task ,并再次运行。
如果您在运行 Task 过程中出现了红色的报错提示或其他异常信息,请与下节的错误处理进行核对查阅,否则可以跳过下节。

错误处理

错误编号A

运行 Jar 任务时报错:

invalid flag: —release

ErrorA.png
解决路线:
因为您可能使用了 Java 8 SDK 进行开发,此时您需要修改部分在 “build.gradle”文件里的代码。需要删除的部分使用蓝色标注,需要添加的部分使用红色标注。请注意,只需要找到如下的部分并进行替换,请勿清空整个build.gradle文件!

targetCompatibility = 8
sourceCompatibility = JavaVersion.VERSION_16
sourceCompatibility = 8sourceSets.main.java.srcDirs = [“src”]
repositories{
mavenCentral()
maven{ url ‘https://www.jitpack.io‘ }
}
ext{
//the build number that this mod is made for
mindustryVersion = ‘v131’
jabelVersion = “0.7.0”
sdkRoot = System.getenv(“ANDROID_HOME”) ?: System.getenv(“ANDROID_SDK_ROOT”)
}
//java 8 backwards compatibility flag
allprojects{
tasks.withType(JavaCompile){
options.compilerArgs.addAll([‘—release’, ‘8’])
}
}**

最终的修改结果应该如下:

  1. targetCompatibility = 8
  2. sourceCompatibility = 8
  3. sourceSets.main.java.srcDirs = ["src"]
  4. repositories{
  5. mavenCentral()
  6. maven{ url 'https://www.jitpack.io' }
  7. }
  8. ext{
  9. //the build number that this mod is made for
  10. mindustryVersion = 'v131'
  11. jabelVersion = "0.7.0"
  12. sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT")
  13. }

之后,再次运行 Gradle 的 jar Task,等待 打包 Jar 的结果。

检查生成的 Jar 包

当您在控制台中看到如下的结果 (<尖括号>内的是普冷姆进行额外的解释,并非控制台内的真实内容),和 “BUILD SUCCESSFUL“,即代表您成功生成了 Jar 包。

<您的时间>: Executing ‘jar <额外参数>’… Task :compileJava
Task :processResources NO-SOURCE
Task :classes
Task :jar UP-TO-DATE
BUILD SUCCESSFUL in <运行 Task 所花费的时间>
2 actionable tasks: 1 executed, 1 up-to-date

之后,您就可以在 项目的根目录下的 build/libs 里找到 对应的文件了——文件的 默认命名 是 您的项目所在根目录的文件夹。
BuiltJar.png
接下来,您可以使用 资源管理器(Explorer) 打开其所在的文件夹,然后使用 压缩工具 进行解压缩 或 直接查看文件内容,正常情况时应该如下。
JarContent.png
之后,您就可以打开游戏,导入刚刚构建好的 Jar 包啦。
熟悉安装Mod的读者,应该会对此步骤比较熟悉,普冷姆再次会再介绍一遍。
在 Mods 对话框中选择 “Import Mod”
HowToImportMod.png
然后选择 “Import File”
ImportModFromFile.png
之后,找到您项目的位置,在 根目录下 build/libs 中,您也可以放在任何您喜欢的位置。点击Load后,需要重启游戏。
HowToLoadMod.png
重启之后,您就能看到自己的 mod 出现在 Mod 列表中了,这里的名称是 Java Mod Template。至于如何修改 Mod 名称,会在下一章节中介绍。SuccessToImportMod.png

祝贺自己! Congratulations!

至此,您已经成功搭建了 Mindustry 的 Mod 开发环境,普冷姆将在下一章节介绍更多关于 Modding 的知识与内容,请您继续阅读。

更多信息与帮助 Info

在此向您推荐 普冷姆主要参与开发的mod —— Cyber IO
开源项目地址 https://github.com/liplum/CyberIO,如果这个教程能帮到您,请您别忘了为我的项目点个Star哟qwq