《我的世界》游戏模组开发指南:用AI构建你的第一个模组

在整理在《我的世界》Java版本模组开发过程中的心得体会,系统性地介绍模组开发全流程

《我的世界》游戏模组开发指南:用AI构建你的第一个模组

一、模组加载器

《我的世界》模组加载器可分为两大类:

  • Fabric-轻量化,加载快
  • Forge/NeoForge-高度集成,功能丰富

从玩家数量来说,Forge和NeoForge的玩家数量大于Fabric,理论上来说更受欢迎(也可能是因为大部分整合包都选择使用Forge或NeoForge作为模组加载器)。

1.1 Fabric加载器

1.1.1 简介

Fabric加载器作为目前《我的世界》(版本>1.14)的主流加载器之一,模组库数量庞大,玩家数量稳定。部分复杂功能可能需要依赖外部模组。

1.1.2 环境配置

Fabric加载器在配置环境时需要搭配正确版本的Gradle、Fabric Version、Fabric API 和 Fabric Loom。例如:对于Minecraft JE 1.20.1 Fabric版本,一般使用

  • Gradle 8.7
  • Fabric Version 0.18.3
  • Fabric API xxx
  • Fabric Loom 1.6-SNAPSHOT

以上环境配置部分可详细参考Fabric Wiki

1.1.3 创建项目

创建新项目时,推荐使用Fabric官方模组模版生成器,按照需要设置模组信息:

  • Mod Name-模组显示的名称,不影响代码
  • Mod ID-模组标识符,嵌入代码中
  • Package Name-项目内部路径名,一般为“开发者.模组名”,也可以直接使用模组名(开发者可以作为项目“水印”

推荐在Advanced Options中关闭Mojang Mappings

1.2 Forge/NeoForge加载器

1.2.1 简介

Forge和NeoForge加载器作为目前市面上玩家数量最多的加载器,内置多种编程方法工具,在不依赖外部模组的情况下可以实现多种功能。

1.2.2 环境配置

一般情况下,1.20及以下版本使用Forge加载器,1.21及以上版本使用NeoForge加载器。其在配置时也有一定区别。在1.20/1.21版本,使用Gradle 9.0和对应的Forge/NeoForge版本。在官方网站可以下载完整的模版文件,一般不需要再过多调整。

1.2.3 创建项目

创建新项目时,推荐使用Forge官方模组模版生成器/NeoForge官方模组模版生成器

二、编程环境

2.1 编辑器选择

一般情况下,推荐使用IntelliJ IDEA,并安装MinecraftDev插件(也可直接在编辑器设置中的插件市场下载并安装)。

2.2 AI编程配置

2.2.1 TRAE

初次尝试推荐使用TRAE,在编辑器自带的插件市场即可下载安装,简单注册账号后即可使用。

2.2.2 Claude Code

对于有复杂需求或大型项目编程的项目,推荐使用Claude Code,同样可在插件市场找到。对于国内环境,推荐使用火山引擎,具体配置操作详见火山引擎官方指南

2.3 环境配置操作

我们可以粗略地将src文件夹内的文件当作项目文件,将src以外的部分当作环境文件。每当环境文件内容发生变化,都需要刷新Gradle,可点击代码栏右上角的刷新图标快速刷新,此时右下角会出现进度提示,若配置失败,将报错信息交给AI分析。

三、模组项目结构介绍

3.1 Fabric通用结构

{mod_name}/
├── build.gradle              # Gradle 构建脚本(依赖声明、任务配置)
├── gradle.properties         # 版本属性与元数据
├── settings.gradle           # Gradle 项目设置
├── gradle/
│   └── wrapper/              # Gradle Wrapper 配置
├── src/
│   ├── main/
│   │   ├── java/             # Java 源码根目录
│   │   │   └── com/example/modid/
│   │   │       ├── {ModClass}.java          # 主初始化类
│   │   │       ├── {ModClass}Client.java    # 客户端初始化类(可选)
│   │   │       ├── item/                    # 物品相关类
│   │   │       ├── block/                   # 方块相关类
│   │   │       └── mixin/                   # Mixin 类目录
│   │   │           └── ExampleMixin.java
│   │   └── resources/
│   │       ├── fabric.mod.json              # 模组元数据(必需)
│   │       ├── {modid}.mixins.json          # Mixin 配置(如使用)
│   │       └── assets/{modid}/
│   │           ├── lang/
│   │           │   ├── en_us.json           # 英文本地化
│   │           │   └── zh_cn.json           # 中文本地化
│   │           ├── models/
│   │           │   ├── item/                # 物品模型定义
│   │           │   └── block/               # 方块模型定义
│   │           ├── textures/
│   │           │   ├── item/                # 物品纹理
│   │           │   └── block/               # 方块纹理
│   │           └── blockstates/             # 方块状态定义
│   └── client/java/          # 客户端专用源码(分离架构时)
├── run/                      # 开发环境运行目录(自动生成)
└── build/                    # 构建输出目录(自动生成)

3.2 Forge/NeoForge通用结构

{mod_name}/
├── build.gradle                    # Gradle 构建脚本
├── gradle.properties               # 版本属性配置
├── settings.gradle                 # Gradle 项目设置
├── gradle/
│   └── wrapper/                    # Gradle Wrapper 配置
├── src/
│   ├── main/
│   │   ├── java/                   # Java 源码根目录
│   │   │   └── com/example/modid/
│   │   │       ├── {ModClass}.java              # 主入口类(@Mod 注解)
│   │   │       ├── client/                      # 客户端专用代码
│   │   │       ├── common/                      # 通用代码(物品、方块等)
│   │   │       │   ├── item/
│   │   │       │   ├── block/
│   │   │       │   └── blockentity/
│   │   │       └── datagen/                     # 数据生成器(可选)
│   │   └── resources/
│   │       ├── META-INF/
│   │       │   ├── mods.toml                    # Forge 元数据(1.13+)
│   │       │   ├── neoforge.mods.toml           # NeoForge 元数据(1.20.1+)
│   │       │   └── accesstransformer.cfg        # 访问转换器配置(可选)
│   │       ├── pack.mcmeta                      # 资源包元数据
│   │       ├── assets/
│   │       │   └── {modid}/
│   │       │       ├── blockstates/             # 方块状态定义
│   │       │       ├── lang/                    # 本地化文件
│   │       │       │   ├── en_us.json
│   │       │       │   └── zh_cn.json
│   │       │       ├── models/
│   │       │       │   ├── block/               # 方块模型
│   │       │       │   └── item/                # 物品模型
│   │       │       ├── textures/
│   │       │       │   ├── block/               # 方块纹理
│   │       │       │   └── item/                # 物品纹理
│   │       │       ├── sounds.json              # 音效定义
│   │       │       └── shaders/                 # 着色器(可选)
│   │       └── data/
│   │           └── {modid}/
│   │               ├── recipes/                 # 配方 JSON
│   │               ├── loot_tables/             # 战利品表
│   │               │   └── blocks/
│   │               ├── tags/                    # 数据标签
│   │               ├── advancements/            # 进度定义
│   │               └── structures/              # 结构模板(可选)
│   ├── client/java/                # 客户端专用源码(分离架构)
│   ├── test/java/                  # 测试代码
│   └── generated/                  # 数据生成输出目录
├── run/                            # 开发环境运行目录(自动生成)
└── build/                          # 构建输出目录(自动生成)

四、Vibe Coading

使用模组模版模组生成器生成模版文件后,在代码编辑器打开模组项目文件夹。 在侧边栏展开AI编程插件,信任项目,用自然语言描述需求,例如:“帮我构建一个我的世界模组,游戏版本为Java 1.21.1,使用Fabric加载器(详细信息见gradle.properties),我需要xxx。”

五、测试与调试

在生成所需代码后,在终端控制台输入指令进行测试:

  • 清理缓存
./gradlew clean
  • 构建模组文件
./gradlew build
  • 运行测试客户端
./gradlew runclient
  • 以上指令可组合使用,如:
./gradlew clean build runclient

在控制台中可使用上下方向键切换历史输入指令,无需重复输入

六、模组导出

在运行./ gradlew build指令后,项目文件中的build/lib文件夹中会出现对应名称的.jar模组文件,即为最终的客户端模组文件。

七、模组上传与分发

7.1 平台选择

目前主流的模组分发平台有MC百科、Modrinth和Curseforge三大平台,国内分发首选MC百科,Modrinth在国内外的接受程度都较高,Curerforge则主打国外受众。

7.2 分发原则

在Modrinth和Curseforge上传的模组可被整合为链接内置于整合包中,在玩家下载并导入启动器时从平台下载被链接的模组。 如果允许整合包制作者随意使用模组,在模组简介务必表明分发原则(即在打包时确保整合包中使用链接而不是内置模组本体)。否则整合包的下载量将不会被计算到模组中。…

KEEP READING