开始
# 环境要求
- IntelliJ IDEA (建议Ultimate 2023.2.7及以上)
- ModMultiVersion (opens new window)0.14.0及以上
- Minecraft-Development (opens new window)
- 任意JDK(建议21)
# 知识前置
- 了解gradle构建
- 了解mc源代码
- 了解模组加载器相关开发
# 创建项目
创建一个空项目,建议勾选创建git仓库
并且删除除了.idea
文件夹外的所有文件和文件夹
# 开发的模组加载器
比如我想开发forge
和fabric
那我就创建forge
和fabric
文件夹
我的部分代码可能会用于开发bukkit
的服务器插件,那我就再创建一个bukkit
文件夹,并且右键该文件夹选择将文件夹bukkit设置为监听的加载器
提示
默认会监听forge
,fabric
,neoforge
,quilt
四个文件夹,别的文件夹均需要右键添加监听
添加完后需要将.idea/ModMultiLoaders.xml
加入到git内(右键-git-添加)
# 开发
在fabric文件夹内创建你需要开发的版本
比如,我想开发1.20.1,则使用Minecraft-Development
插件创建fabric-1.20.1
模板项目
注意
加载器文件夹下的版本文件夹,必须为{加载器名称}-{mc版本}格式
其他版本也一样
# 重复代码处理
// fabric/fabric-1.16.5/src/main/java/io/github/kituin/chatimage/ChatImage.java
public static final Logger LOGGER = LogManager.getLogger();
2
// fabric/fabric-1.20.1/src/main/java/io/github/kituin/chatimage/ChatImage.java
public static final Logger LOGGER = LogUtils.getLogger();
2
// Make sure to add code blocks to your code group
我们可以看到两个版本有一些细微差别,但是别的部分都是一致的
那么我们就可以将这部分抽离出来
在fabric
(加载器文件夹)下创建origin
文件夹,与其他版本文件夹同级
创建相同路径的文件
以上文为例:fabric/origin/src/main/java/io/github/kituin/chatimage/ChatImage.java
整个复制过去就行
然后我们针对这个细微变化进行修改
// fabric/origin/src/main/java/io/github/kituin/chatimage/ChatImage.java
// IF fabric-1.16.5
// public static final Logger LOGGER = LogManager.getLogger();
// ELSE
// public static final Logger LOGGER = LogUtils.getLogger();
// END IF
2
3
4
5
6
这是最常用的一种功能
fabric/origin内文件只会覆盖掉fabric下的文件夹
如果你希望能覆盖所有加载器的文件夹,请在加载器同级目录创建origin
提示
加载器的origin文件夹的优先级高于全局origin文件夹
注意
默认在版本文件夹内的修改会反向同步到origin文件夹中
📦 ChatImage
├── 📂 forge
│ ├── 📂 forge-1.20.1
│ │ └── 📜 B.java
│ ├── 📂 forge-1.16.5
│ │ └── 📜 C.java
│ ├── 📂 forge-1.17.1
│ │ └── 📜 D.java
│ └── 📂 origin
│ └── 📜 A.java
├── 📂 fabric
├── 📂 ...
└── 📜 ...
2
3
4
5
6
7
8
9
10
11
12
13
以上示例中,如果你修改了B,那么你需要打开一遍A,才会将你在B中的修改同步到C和D中
更多功能可以查阅ModMultiVersion (opens new window)的介绍
# 简化仓库内容
如果你的版本文件已经整合到origin文件中了,那么你可以将版本文件删除
通过ModMultiVersionTool (opens new window)可自动将origin文件复制到各个版本文件夹
示例可见:
- 将origin文件复制到各个版本文件夹的初始化脚本,需要tool文件夹下包含ModMultiVersionTool.jar
- Github Action 自动构建测试fabric