本帖最后由 普冷姆 于 2022-7-4 12:08 编辑

〇,循环的开始
你可能会在一段时间内,多次反复打开这个帖子;你会在安装过程中遇到各种各样的问题;即使你终于完成了安装,但也许会因为以后某天想要安装新版本forge,亦是参考或修改别人的mod,而不得不再次打开这个帖子。
本文是安装的正常流程,而能真正完美地按顺序一遍过的人几乎没有,但 你可以 通过 如下方式得到帮助
1. 查看本文最末尾章节——关于各种错误的解决方案
2.回复本帖,或联系我
3.如果因为 需要访问国外网站 ,而导致的网络问题,请更换到"能访问国外网站的网络环境",或者使用一定的 网络辅助工具
本文使用的版本:Windows10 2004,IntelliJ IDEA 2020.3.2,Forge 1.16.5
此教程是 通用教程 ,原则上 不区分Forge版本 。如果你安装其他版本的时候报错,请留言, 我会手动测试并找到解决方案,再更新此贴。

P.S.:等等!你学过java吗?没学过?那也没有关系,但是你先得会安装jdk,去百度一下再回来吧!如果你想制作mod但不会java怎么办?你可以选择一边制作mod一边学习java哦!或者……直接参与负责mod模型、贴图或玩法等设计方面的工作?

一,下载IntelliJ IDEA与Minecraft开发包
打开IntelliJ IDEA官网: https://www.jetbrains.com/idea/download

IDEA

IDEA

可以选择社区版(Community)或专业版(Ultimate)。社区版开源免费,功能足够;专业版需要付费,并且只有三十天的免费体验,但功能完整强大。这里我选择的是社区版,就是右下角那个黑色(截止发稿日此界面如此,不保证以后改版)。然后下载安装即可,如有任何问题请百度。

Forge Website

Forge Website
左侧是选择Minecraft游戏的版本。选择某一Minecraft的版本后,再选择任意版本的MDK( Minecraft Development Kit ),最好是 推荐版本 (Download Recommended )的,兼容性最好,BUG最少(不一定)。
或者 最新版 (Download Latest ),会有更多新特性。

下载完成后,是一个压缩包,解压之后,如下图所示:
注:请把文件解压到一个目录,这个目录不能有任何非英文字符 (即,不能用中文、日文、越南文、德文、法文等等) ,并且这个文件夹下的任何文件 (例如*.java文件) 都不能有非英文字符。 但是,如果你已经放在了这种文件夹里,如果不报错,就不能修改;或者,请在另一个符合条件的目录下,再下载一个新的zip压缩包并解压。
错误索引 如果出现任何奇奇怪怪的报错或乱码文字,请先参考 错误编号0

Click To Build

Click To Build
文件build.gradle用以构建整个项目,因为Minecraft Forge是一个gardle项目。
如果你的build.gradle不是默认用IDEA打开(即图标不是IJ),可以右键属性后,选择打开方式为 IntelliJ IDEA
Select how to open.png





二,进行Building
然后你就可以双击 build.gradle 打开了。当然,也可以通过IDEA内的File>>Open选中build.gradle并打开。
然后IDEA就会开始自动下载所需文件了。注意,此过程需要 访问国外的网站 ,如果出现 网速过慢 连接失败 下载失败 等网络问题,请自行百度解决,或者找站内其他帖子——使用国内镜像( https://www.mcbbs.net/thread-1076799-1-1.html ),亦或者直接使用 离线包 https://www.mcbbs.net/thread-896542-1-1.html )。
Gradle Downloading.png
可能需要的时间比较多,只需静静等待完毕即可。
Building Compeleted.png

错误索引: 如果你不能Build,并且红色报错,请参考 错误编号6
期间可能会有报错(或只是提示),如果其不影响接下来的流程,可以忽略。但是也有可能对以后的某个操作会有影响,请自己斟酌是否要寻求解决方案。




三,运行生成任务
初次加载完毕后,在你的IDEA界面上可以找到一个菜单栏 Gradle 。如果找不到,可以双击shift,在弹出的搜索栏中输入”Gradle”;或者百度。

Run Gradle Task

Run Gradle Task
然后在”大象”菜单底下选择 Tasks 文件夹,并找到子目录 fg_runs ( Forge Gradle 的缩写),双击其中的 genIntelliJRuns ,就会开始自动生成项目了。
在短暂的等待后,会显示任务完成。
Task Compeleted.png
genIntelliJRuns 任务会帮你自动创建在IntelliJ IDEA上进行 运行与调试 的配置和其他所需的内容。

如果你在github上下载了别人的mod代码,请务必进行这一步操作,因为Forge MDK压缩包里的. git ignore文件(git修改的上传忽略规则)里面会把IDEA的配置给忽略掉。
错误索引 :如果你不那么做,会造成 错误编号5



四,运行与调试
下载并初始化后,会有一个默认的ExampleMod,如果你的IDEA对于每个java关键字都有不同颜色的高亮显示,则代表MDK安装并识别成功。否则,出现代码报错,请查阅 错误编号4
Finished.png

接下来可以尝试运行一下,点击最上方菜单栏 Run>>Run...,之后会在你的屏幕中央弹出一个小窗口(颜色太相似了,注意辨别,点外面就直接取消掉了)
Try to Run.png
Config Run Successfully.png
然后点击runClient(运行物理客户端)即可,其中runServer(运行物理服务端)可以在自己的电脑上更好地调试@SideOnly(Server)的仅 服务端 代码。
对于调试来说,只是把Run>>Run...换成了Run>>Debug...(就是刚才点的Run...下面那个),具体调试的用途请百度"IDEA 调试"。
错误索引 :如果你的Run小窗口里面什么都没有,请参考 错误编号5

此时会弹出Minecraft游戏窗口,如果其中的Mods列表里面有你刚才的ExampleMod,即表示Minecraft可以正常加载你的mod。(图中以github上 暮色森林mod 1.16.5为例)

Twilight Mod Loaded

Twilight Mod Loaded





五,开始写代码吧!
你可以复制整个MDK多次,自己备用;或者分发给别人,作为离线包。这样一来,就无需在每次写mod前都下载一遍了。如果你有网络问题,这也是终极解决方案。

推荐几个教程文档,但不可全盘照抄,请结合实践结果判断。
[ALL]Forge 官方文档: https://mcforge.readthedocs.io

Forge的API随 Minecraft 版本变化改动而改动,需要具体问题具体分析,每个教程只能适合对应的版本 (甚至有些教程虽然是同一MC版本下,但是因为使用旧版本forge的API,所以在你进行modding的时候,名称会发生改变!)。
编写Minecraft Mod的很多思维方式和哲学是可以学习积累的,即使你只学其中一个版本的教程,对以后其他版本开发都受益匪浅。 对于一些最新版本的修改内容,可以参考 Forge官方文档。

如果在开发期间,Forge更新了新版本,可以通过如下方式进行 升级 。(建议升级到稳定版本)

How to Get Gradle Version

How to Get Gradle Version

你可以找到 类似于"1.16.5-36.1.0" 的文字,这个就是ForgeGradle的版本号,请复制它。并将其与 项目根目录下 build.gradle 中的这一行所替换:
  1. dependencies {
  2. minecraft 'net.minecraftforge:forge:1.16.5-36.1.13'
复制代码
把新的版本号(此处是1.16.5-36.1.0),与其中的"net.minecraftforge:forge"的冒号后面的版本号(此处是1.16.5-36.1.13)进行替换。然后再次执行 第二步 第三步 的操作即可。

How to Update Forge

How to Update Forge

你会发现,我刚刚竟然拿"低的版本号"去替换"高的版本号",也就是说——这是 降级 操作。当最新版有致命BUG的时候,可以选择降级回退到之前的稳定版本。



六,制作Mod的联机模式!
如果你在github上下载(pull)了别人的开源mod的代码,你需要按顺序重复上面"第二步"与"第三步"的操作,之后就可以正常对mod进行调试了。
如果你本来就因为网络原因,使用了离线包 请注意,你还是 有可能因网络原因而下载失败 ,请自行考虑是否使用离线包进行替换文件(是否成功视情况而定)。
如果期间出现了非网络原因造成的报错,请联系mod作者解决。

七, 分享你的mod!
如果你已经成功做出了mod,或者只是想要测试下"是否能正确导出mod的jar包",那么你就需要看接下来的步骤了。
首先,你需要确保你的mod可以在开发环境(这里指IDEA)下运行。
导出jar包,你需要打开Gradle菜单,并且运行"build"这个任务。

Export Jar

Export Jar
然后,静静地等待它生成完毕。
之后你就可以在 X:\...\<你的项目文件夹>\build\libs 中看到"xxx.jar"这个文件了。
特别地 ,如果你的版本是1.12.2,并且使用了 错误编号7 的解决方案。请务必将添加的那一行代码给注释掉(或者删除),不然导出成jar包时,会复制两遍资源文件,导致生产环境(这里指Minecraft启动器所打开的游戏)报错。与此同时,如果你想在开发环境(这里指IDEA)中运行,那么必须要重新添加那行代码(或取消注释)。

接下来,在经过自己的测试后,你就可以分享你的mod给别人,或者上传到curse forge、mcmod或mcbss等任何分享站上(注意:请务必详细阅读并遵守每个论坛、分享站的规定与协议)。

如果你使用了外部库(例如Maven库),导入了数**算库、工具库等,请使用Shadow Jar这个Gradle插件。至于如何使用,你可以先行百度,这个话题目前暂时不在入门级教程的范围内,不过以后会添加相关内容的。


END,无限循环——各种错误解决方案
如果解决方案无效,请先查看是否有其他问题存在(即多个问题同时造成的结果),若依旧未果,请回帖或联系我。
为了不使帖子显得很长,对所有问题的 解决方案 进行了隐藏, 点击即可展开查看
错误编号0 :奇奇怪怪的错误或者乱码
误原因:你的项目所在路径中使用了非ASSIC字符,导致java无法识别。
解决方案:那就别用。像我这样做:D:\MyProject\Minecraft\XXXMod。
错误编号1 :SSL连接中断
SSL Shut Down.jpg
错误原因:网络问题。

错误编号2 :过时的Gradle
Gradle Out of Date.png
错误原因:可能是因为你使用了老旧的Forge离线包。

错误编号3 :JDK选择错误
错误原因:没有选择JDK,或者选择错误的版本(例如过期的java 8,过新的java 11等等)


错误编号4 :大量imoprt net 红色报错
Red and Black.png
错误原因:MDK没有识别成功。

错误编号5 :缺少Run的配置

No Run Config

No Run Config

错误原因:缺少 项目根目录下 .idea\runConfigurations\runClinet 等几个运行配置文件。

错误编号6 :没法Build

Failed to apply plugin 'net.minecraftforge.gradle'

Failed to apply plugin 'net.minecraftforge.gradle'

Failed to apply plugin [id 'net.minecraftforge.gradle']

Failed to apply plugin [id 'net.minecraftforge.gradle']
错误原因:没有选择JDK,导致无法Build

错误编号7 :资源文件没有加载(1.12.2)
No mod information found.png
错误详情:IntelliJ IDEA 开发 Forge 1.12.2 调试(运行)时没有加载资源文件(语言,材质,模型)。
错误原因:因为IDEA和Eclipse的生成文件目录不一样,mod会找不到resources文件夹。但是导出jar包的时候是正常的。



出于更好的服务大众的目的,你可以自愿在以下几种情况下回帖
1.根据教程成功安装。如果期间出现问题(或教程外的问题)但已经解决的,你可以附上你的问题说明和解决方法(如果是教程内提供的 解决方案 ,直接给出 错误编号 即可)。
2.安装期间发生失败,并且无法根据 "教程内提供的 解决方案 " 解决,请回帖(最好有截图)说明详情。

如果有"很难用语言描述"或"非常复杂"的问题,可以直接联系我咨询