跳到主要内容

Forge

最常用的Minecraft模组框架

Forge官方文档

安装环境

  1. 安装对应版本的JDK
  2. Forge官网下载MDK(Minecraft Development Kit)
  3. 解压后将文件夹在 可以使用Gradle的IDE 中打开,进行构建环境的自动配置
    • 不同网络环境配置时间差距很大,请保证开启魔法并在良好的网络环境下配置
  4. BUILD SUCCESSFULGradle构建完成

配置项目

游戏版本对应的Java版本

版本JDK版本(最低要求)
LowerJava 7
1.12.x(17w13a)~1.16.xJava 8
1.17.x(21w19a)~1.17.xJava 16
1.18.x(1.18-pre2)~HigherJava 17

项目结构

├── LICENSE
├── README

├── gradle
│   └── wrapper
│   ├── gradle-wrapper.jar
│   └── gradle-wrapper.properties
├── build.gradle
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
│ 
└── src
├── generated
│   └── resources
├── main
│   ├── java
│   │   └── net
│   │   └── example
│   │   └── mod
│   │   └── ExampleMod.java
│   └── resources
│   └── META-INF
│   └── mods.toml
└── test
└── java
└── net
└── example
└── mod
└── ExampleModTest.java

build.gradle

mod.toml

你或许应该了解

Minecraft实际上已经成为了最大的游戏模组社区了
不只是模组,Minecraft社区也是最大的独立游戏玩家社区

模组是什么?
模组其实是游戏的外置拓展

游戏模组(Game Mod)是指游戏玩家使用自己的创意和技能
通过修改游戏的原始数据、代码和资源来创建新的游戏体验和玩法
通常,游戏模组是游戏的非官方修改版本
玩家可以使用模组来增强游戏体验、改进游戏机制、添加新的关卡、角色、任务等等
游戏模组通常由游戏社区中的开发者、玩家和爱好者制作
并且它们可以在互联网上自由地分享和下载
有些游戏甚至专门为玩家开放了游戏开发工具包
以鼓励他们制作更多的游戏模组
从而促进游戏的创新和发展
如《魔兽争霸III》、《上古卷轴V:天际》等,都有大量的游戏模组
这些模组为游戏带来了更多的乐趣和持久性

回到Minecraft刚发布的时候
也就是2009年
Minecraft模组还没有像现在这样大范围流行
甚至没有什么话题度
因为那个时候整个社区只有几百个人。

但是随着两周以后的0.0.15a的发布
多人游戏被加入到游戏中
这鼓励玩家创造更多的UGC内容
但是那个时候Minecraft甚至没有客户端,大伙都是在网页上玩的
即使如此,也有一些向游戏中添加模组的方法,比如服务器插件
但是不像今天的bukkit或者sponge插件
这些插件只能实现一些基本功能
一年之后其实才有一个真正意义上的模组出现

到目前为止的问题就只有一个了,就是编写模组非常复杂

因为Minecraft毕竟是一个商业软件,它的代码都是混淆过的
就是说,它的代码被打乱到人肉眼难以看懂的地步了
你要保证两个模组互相兼容,你可能得逐条验证他们的代码有没有冲突
而且很多情况下模组并不能达到你想要的效果
所以你甚至要修改Minecraft的源代码

这个时候MCP,也就是Mod Coder Pack出现了
他对Minecraft的源码做了解析和反编译,并且做了标注,让人能读懂了
然后它的作者Searge后来进了mojang工作了,属于是被诏安了

再后面就是bukkit的出现取代了所有以前的服务器插件
然后bukkit整个团队又双叒进mojang了
你不用改Minecraft的源码就能添加很多功能进游戏了

然后modloader出现了
自此之后模组就相对而言比较容易兼容了

在这一时期,像是Industry工业和buildcraft被做出来了
但是远远称不上做得好
因为像这种大型的模组要实现的功能还是过于复杂了
还是要修改Minecraft的源码
你想要兼容,那大概率是不可能的
你得手动把修改的源码加到Minecraft的.java里面
这对普通玩家来说真的称不上友好

这个时候两个模组开发者建立了Forge
也就是我们今天要讲的,一个modloader的插件
后面开发人员将这个工作移交给了新的团队
这个团队开发了一个全新的modloader,一直沿用至今

其实除了forge还有其他的一些modloader
像是新兴的fabric,停更的liteloader,还有超级新的、现在还没什么人用的quilt

现在主流的modloader还是forge,绝大多数模组也都在forge上

我其实不太知道大家对于Minecraft到底是个怎样的认知
不过如果你玩过一些流行的大型模组,像是暮色森林或者是虚无世界、植物魔法
那么你其实就能知道我讲的这些是什么了

Forge因为牢大Lex现在分裂了,已经是夕阳框架了
Forge的时代或许要结束了

希望Cpw带领的NeoForge能够继往开来吧
在不久的将来

微小的开始

你需要干什么?

Forge本质上是破解了闭源程序的API
里面各种函数的功能都是靠猜出来的
而且不同的版本的详细实现也不一样
所以,这里只会讲一些通用的思路
具体到某个版本的实现,你需要去看书签
其实Forge文档写的不好,如果有不懂还是得善用Ctrl+B查看源码

如上,写模组是极度依赖经验的
除非你是天才
否则你不可能一下子就写出机械动力或者是应用能源这样的模组

所以,我建议你从微小开始

第一步

这里有一件很清楚的事情
就是你想写模组而不拥有这样的技术
你会在互联网上看到数不清的教程,一头雾水

首先,你需要冷静
你可以随便打开IDEA玩一玩,抄一抄网上的教程代码运行一下

然后先想清楚你要做什么
比如做一个腐肉烧皮革或者更多装备与工具
这样的模组比较简单,有很多现成的教程会手把手教你做

不要试图复刻现实中的专业器械,我的惨痛教训(bushi