1. 为什么选择Forge作为Minecraft模组开发框架
Forge作为Minecraft Java版最主流的模组开发框架,已经存在超过10年历史。我最初接触Forge是在1.4.7版本时期,当时就被它完善的API设计和活跃的社区所吸引。相比其他模组框架,Forge最大的优势在于:
- 版本覆盖全面:从早期的1.4.7到最新的1.20.1,几乎所有主流Minecraft版本都有对应的Forge支持
- API设计成熟:事件系统、注册机制、网络通信等核心功能都有完善的封装
- 社区生态丰富:CurseForge平台上有超过5万个Forge模组,开发者可以轻松找到现成的解决方案
提示:虽然Fabric框架近年来发展迅速,但Forge仍然是功能最全面、文档最完善的模组开发选择,特别适合需要深度修改游戏机制的模组。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开发环境准备
2.1 JDK安装与配置
Forge开发需要Java 8或更高版本。我推荐使用Amazon Corretto JDK 17,这是目前Forge官方推荐的长期支持版本:
bash复制# 在Ubuntu上安装
sudo apt install -y wget
wget https://corretto.aws/downloads/latest/amazon-corretto-17-x64-linux-jdk.deb
sudo dpkg -i amazon-corretto-17-x64-linux-jdk.deb
# 验证安装
java -version
Windows用户可以直接从Amazon Corretto官网下载安装包。安装完成后需要设置JAVA_HOME环境变量:
bash复制# Linux/MacOS
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
# Windows
# 在系统环境变量中添加JAVA_HOME,指向JDK安装目录
2.2 IDE选择与配置
IntelliJ IDEA是Forge开发的首选IDE。社区版就足够使用,但终极版对Gradle的支持更好。安装后需要:
- 安装Minecraft Development插件
- 配置Gradle使用本地分发(避免每次新建项目都下载)
- 调整JVM参数:Help -> Edit Custom VM Options,添加
-Xmx4G(至少分配4GB内存)
2.3 Forge MDK获取
Forge提供了专门的Mod Development Kit(MDK),我们可以从官方站点下载:
bash复制# 以1.20.1版本为例
wget https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.1.0/forge-1.20.1-47.1.0-mdk.zip
unzip forge-1.20.1-47.1.0-mdk.zip
解压后会得到以下关键文件结构:
code复制forge-mdk/
├── build.gradle # 项目构建配置
├── gradle/ # Gradle包装器
├── src/
│ ├── main/
│ │ ├── java/ # 模组源代码
│ │ └── resources/ # 资源文件
│ └── test/ # 测试代码
└── gradlew # Gradle执行脚本
3. 项目初始化与配置
3.1 build.gradle关键配置
打开build.gradle文件,有几个关键配置需要修改:
groovy复制version = '1.0' // 模组版本号
group = 'com.yourname.modid' // 包名前缀
// 修改模组ID(必须全小写无空格)
minecraft {
mappings channel: 'official', version: '1.20.1'
runs {
client {
workingDirectory project.file('run')
property 'forge.logging.markers', 'REGISTRIES'
property 'forge.logging.console.level', 'debug'
mods {
examplemod {
source sourceSets.main
}
}
}
}
}
注意:模组ID应该全局唯一,建议使用反向域名格式(如com.yourname.modid),避免与其他模组冲突。
3.2 模组主类创建
在src/main/java下创建你的包结构,然后新建主类:
java复制package com.yourname.examplemod;
import net.minecraftforge.fml.common.Mod;
@Mod("examplemod")
public class ExampleMod {
public ExampleMod() {
// 模组初始化代码
}
}
3.3 mods.toml元数据配置
src/main/resources/META-INF/mods.toml是模组的元数据文件:
toml复制modLoader="javafml"
loaderVersion="[47,)"
license="All rights reserved"
[[mods]]
modId="examplemod"
version="${file.jarVersion}"
displayName="Example Mod"
authors="YourName"
description='''
A simple example mod for Minecraft Forge.
'''
4. 核心开发实践
4.1 物品注册与添加
创建一个新物品是模组开发的基础操作。首先创建ItemInit类:
java复制public class ItemInit {
public static final DeferredRegister<Item> ITEMS =
DeferredRegister.create(ForgeRegistries.ITEMS, ExampleMod.MOD_ID);
public static final RegistryObject<Item> EXAMPLE_ITEM = ITEMS.register(
"example_item",
() -> new Item(new Item.Properties().tab(CreativeModeTab.TAB_MISC))
);
public static void register(IEventBus eventBus) {
ITEMS.register(eventBus);
}
}
然后在主类的构造函数中注册:
java复制public ExampleMod() {
ItemInit.register(FMLJavaModLoadingContext.get().getModEventBus());
}
4.2 方块与方块实体
创建自定义方块需要同时注册方块和对应的物品:
java复制public class BlockInit {
public static final DeferredRegister<Block> BLOCKS =
DeferredRegister.create(ForgeRegistries.BLOCKS, ExampleMod.MOD_ID);
public static final RegistryObject<Block> EXAMPLE_BLOCK = BLOCKS.register(
"example_block",
() -> new Block(BlockBehaviour.Properties.of(Material.STONE)
.strength(3.5f)
.requiresCorrectToolForDrops()
)
);
public static final RegistryObject<Item> EXAMPLE_BLOC
