前言

  • 由于源码解读记录没有一个能跟随的流程,因此源码解读记录将会转变为阅读forge官方文档

  • 因为是一边学习一边做记录,未来可能会修改或者添加更多的内容

  • 有一些阅读时认为不太需要的不会记录,不一定会跟着官方文档

  • 有时候阅读别的模组源码或许会给新的思路

  • 需要有点java基础

环境搭建

本篇主要是介绍环境搭建,以及一些框架搭建

下载及配置

配置使用的操作系统为Windows,配置gradlew时使用的是java 1.8.0_221,运行minecraft时使用的是openjdk-17,IDE为IDEA

官方网站,点进去下载Mdk版本,我下的时候是1.18.1-39.0.79,下载完毕后,在目录下打开控制台(cmd)输入gradlew xxx,需要注意你的IDE是什么,xxx为下面中的一个:

  • Eclipse: genEclipseRuns
  • IDEA: genIntellijRuns
  • VSCode: genVSCodeRuns

等待一段时间,如果不成功看看java版本是不是1.8.0或者问问百度等,在此处我用的是IDEA,直接在IDEA中选择打开你下载的路径,等待一会后右上角的运行旁应该会有RUNCLIENT标识,进去后记得设置JDK为openjdk-17

下面打出一些配置文件,文件里面有详细的介绍,此处就不展开了

  • build.gradle
  • src/main/resources/META-INF/mods.toml
  • src/main/resources/pack.mcmeta

代码框架搭建

首先建立包,包名一般为com.游戏名.模组id,我的游戏名是waoa,模组id就命名为examplemod,如果你更改了模组id以及游戏名,可能要修改上面提到的配置文件

代码已经放在这里了,提取码4tn2,下载后覆盖src/main,记得改游戏名等,在Item一章才会正式开始编写代码

代码框架介绍

  • ExampleMod: 主类,用来创建Mod实例
  • util/Reference:配置,用来配置你的modid等信息
  • proxy/*:代理,其中Client代表客户端代理,Server代表服务端代理
  • items/ItemBase:用于自定义的Item基类
  • handlers/RegistryHandler:用于订阅注册事件,注册物品,方块,Registry等
  • core/*:用于定义Mod内的所有物品,方块,并提供注册函数
  • blocks/BlockBase:用于自定义的Block基类

资源介绍

位于src/main/resources/assets/examplemod下(注意examplemod为modid)

  • lang/*:语言,en_us为英文,zh_cn为中文
  • models/*:为block和item对应模型
  • textures/*:为block和item对应材质