• Forge论坛

导航页

  • 主页
  • 向文档做出贡献
  • 入门
    • 概述
      • 先决条件
      • 从零开始模组开发
      • 自定义你的模组信息
      • 构建并测试你的模组
    • 模组文件
    • 规划你的模组结构
    • 版本号
  • 核心概念
    • 注册表
    • 端位(Sides)
    • 事件
    • 模组生命周期
    • 资源
    • 国际化与本地化
  • 方块
    • 概述
    • 方块状态
  • 物品
    • 概述
    • BlockEntityWithoutLevelRenderer
  • 网络
    • 概述
    • SimpleImpl
    • 实体的同步
  • 方块实体
    • 概述
    • BlockEntityRenderer
  • 游戏特效
    • 粒子效果
    • 音效
  • 数据储存
    • Capabilities
    • Saved Data
    • 编解码器(Codecs)
  • 图形用户界面
    • 菜单(Menus)
    • 屏幕(Screens)
  • 渲染
    • 模型扩展
      • 概述
      • 根变换
      • 渲染类型
      • 部分可见度
      • 面数据
    • 模型加载器
      • 概述
      • 烘焙模型
      • 变换
      • 物品重载
  • 资源
    • 客户端资源(Assets)
      • 概述
      • 模型
        • 概述
        • 纹理色调
        • 物品属性
    • 服务端数据(Data)
      • 概述
      • 配方
        • 概述
        • 自定义配方
        • 原料
        • 非数据包配方
      • 战利品表
      • 全局战利品修改器
      • 标签
      • 进度
      • 条件性加载数据
  • 数据生成
    • 概述
    • 客户端资源(Assets)
      • 模型提供者
      • 语言提供者
      • 音效提供者
    • 服务端数据(Data)
      • 配方提供者
      • 战利品表提供者
      • 标签提供者
      • 进度提供者
      • 全局战利品修改器提供者
      • 数据包注册表对象提供者
  • 杂项功能
    • 配置
    • 键盘布局
    • 游戏测试
    • Forge更新检查器
    • 调试分析器
  • 进阶主题
    • 访问转换器
  • 向Forge做出贡献
    • 概述
    • Pull Request准则
  • 旧版本
    • 概述
    • 移植到当前版本

Forge入门

如果你之前从未制作过一个Forge模组,本节将提供设置Forge开发环境所需的最少信息。其余的文档是关于从这里开始的内容。

先决条件

  • 安装Java 17开发包(JDK)和64位JVM。Forge推荐并官方支持Eclipse Temurin。

    警告

    确保你正在使用64位的JVM。一种检查方式是在终端中运行java -version。使用32位的JVM会导致在使用ForgeGradle的过程中出现问题。

  • 熟练使用一款集成开发环境(IDE)。

    • 建议使用一款集成了Gradle功能的IDE。

从零开始模组开发

  1. 从Forge文件站下载Mod开发包(MDK)。点击“Mdk”,等待一段时间之后点击右上角的“Skip”按钮。如果可能的话,推荐下载最新版本的Forge。
  2. 解压所下载的MDK到一个空文件夹中。它会成为你的模组的目录,且现在应该已包含一些gradle文件和一个含有example模组的src子目录。

    注意

    许多文件可以在不同的模组中重复使用。这些文件是:

    • gradle子目录
    • build.gradle
    • gradlew
    • gradlew.bat
    • settings.gradle

    src子目录不需要跨工作区进行复制;但是,如果稍后创建java(src/main/java)和resource(src/main/resources),则可能需要刷新Gradle项目。

  3. 打开你选择的IDE:

    • Forge只明确支持在Eclipse和IntelliJ IDEA上进行开发,但还有其他针对Visual Studio代码的运行配置。无论如何,从Apache NetBeans到Vim/Emacs的任何开发环境都可被使用。
    • Eclipse和IntelliJ IDEA的Gradle集成,都是已默认安装和启用的,将在导入或打开时处理其余的初始工作区设置。这包括从Mojang、MinecraftForge等下载必要的软件包。如果你使用Visual Studio,则需要安装“Gradle for Java”插件。
    • Gradle将需要被调用来重新评估项目中对其相关文件的几乎所有更改(如build.gradle、settings.gradle等等)。有些IDE带有“刷新”按钮来完成此操作;然而,它也可以通过在终端上运行gradlew来完成。
  4. 为你选择的IDE生成运行配置:
    • Eclipse: 运行genEclipseRuns任务。
    • IntelliJ IDEA: 运行genIntellijRuns任务。如果发生了”module not specified”错误,请将ideaModule属性设置为你的’main’模块(通常为${project.name}.main)。
    • Visual Studio Code: 运行getVSCodeRuns任务。
    • Other IDEs: 你可以通过gradle run*来直接运行这些配置(如runClient、runServer、runData、runGameTestServer)。这对于已提供支持的IDE同样有效。

自定义你的模组信息

编辑build.gradle文件以自定义你的模组的构建方式(如文件名称、artifact版本等等)。

重要

除非你知道你在做什么,否则不要编辑settings.gradle。该文件指定ForgeGradle所上传的仓库。

建议的build.gradle自定义项目

Mod Id替换

将包括mods.toml和主mod文件在内的所有出现的examplemo替换为你的模组的mod id。这还包括通过设置base.archivesName(通常设置为你的mod id)来更改你构建的文件的名称。

// 在某个build.gradle文件中
base.archivesName = 'mymod'

注意

Forge MDK目前使用archivesBaseName来设置artifact名称,而不是base.archivesName。我们建议使用base.archivesName作为替代,因为archivesBaseName由于在Gradle 9中被移除而被废弃,而ForgeGradle的未来版本将支持此功能。

你仍然可以通过以下设置使用archivesBaseName:

// 在某个build.gradle文件中
base.archivesName = 'mymod'

Group Id

group属性应该设置为你的顶级程序包,其应为你拥有的域名或你的电子邮件地址:

类型 值 顶级程序包
域名 example.com com.example
子域名 example.github.io io.github.example
电子邮箱地址 example@gmail.com com.gmail.example
// 在某个build.gradle文件中
group = 'com.example'

java源文件(src/main/java)中的包现在也应该符合这种结构,更深层的包表示mod id:

com
- example (在group属性中所指定的顶级程序包)
  - mymod (mod id)
    - MyMod.java (重命名后的ExampleMod.java)

版本

将version属性设置为你的模组的当前版本。我们推荐采用Maven版本号命名格式。

// 在某个build.gradle文件中
version = '1.19.4-1.0.0.0'

额外配置

额外配置可在ForgeGradle文档中找到。

构建并测试你的模组

  1. 要构建你的模组,请运行gradlew build。这将在build/libs输出一个默认名为[archivesBaseName]-[version].jar的文件。这个文件可以被放在已安装了Forge的Minecraft的mods文件夹中,也可以被分发。
  2. 要在测试环境中运行你的模组,你既可以使用已生成的运行配置,也可以运行功能类似的Gradle任务(例如gradlew runClient)。这将使用任何所指定的源码集从run文件夹中启动Minecraft。默认的MDK包括main源码集,因此任何在src/main/java中编写的源代码都会被应用。
  3. 如果你想要运行dedicated服务端,无论是通过运行配置,还是通过gradlew runServer,服务端都会立刻宕机。你需要通过编辑run文件夹中的eula.txt文件同意Minecraft EULA。一旦同意后,服务器就会加载,之后就可以通过直连localhost进行访问了。

注意

在服务端环境测试你的模组是必要的。这包括只针对客户端的模组,因为在加载到服务端后它们不应该做任何事。

Built with MkDocs using a custom theme. Hosted by Read the Docs.
Enable Dark Theme