kitUIN kitUIN
首页
  • 帮助手册

    • PicImageSearch (opens new window)
    • InkBall
    • ChatImage (opens new window)
    • ShadowViewer (opens new window)
  • 推荐

    • pixiv画师推荐
  • 技术大坑

    • Debain中使用pyppeteer走过的坑
    • 在红米AC2100上OpenWrt使用
    • 创建nuget包(C++/WinRT)
  • 友情链接
  • 关于
  • 音乐
支持
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
控制台 (opens new window)
GitHub (opens new window)

KitUIN

芜湖!正在摸鱼~
首页
  • 帮助手册

    • PicImageSearch (opens new window)
    • InkBall
    • ChatImage (opens new window)
    • ShadowViewer (opens new window)
  • 推荐

    • pixiv画师推荐
  • 技术大坑

    • Debain中使用pyppeteer走过的坑
    • 在红米AC2100上OpenWrt使用
    • 创建nuget包(C++/WinRT)
  • 友情链接
  • 关于
  • 音乐
支持
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
控制台 (opens new window)
GitHub (opens new window)
  • 推荐

  • 技术大坑

  • Minecraft

    • 养老服务器

    • 多加载器MC模组统一开发

      • 开始
        • 环境要求
        • 知识前置
        • 创建项目
        • 开发的模组加载器
        • 开发
        • 重复代码处理
        • 简化仓库内容
  • 文章
  • Minecraft
  • 多加载器MC模组统一开发
kitUIN
2024-12-10
目录

开始

# 环境要求

  • IntelliJ IDEA (建议Ultimate 2023.2.7及以上)
  • ModMultiVersion (opens new window)0.14.0及以上
  • Minecraft-Development (opens new window)
  • 任意JDK(建议21)

# 知识前置

  • 了解gradle构建
  • 了解mc源代码
  • 了解模组加载器相关开发

# 创建项目

创建一个空项目,建议勾选创建git仓库

empty.png

并且删除除了.idea文件夹外的所有文件和文件夹

# 开发的模组加载器

比如我想开发forge和fabric

那我就创建forge和fabric文件夹

我的部分代码可能会用于开发bukkit的服务器插件,那我就再创建一个bukkit文件夹,并且右键该文件夹选择将文件夹bukkit设置为监听的加载器
bukkit-right.png

提示

默认会监听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();
    
    1
    2
      // fabric/fabric-1.20.1/src/main/java/io/github/kituin/chatimage/ChatImage.java
      public static final Logger LOGGER = LogUtils.getLogger();
    
    1
    2
    // Make sure to add code blocks to your code group

    我们可以看到两个版本有一些细微差别,但是别的部分都是一致的

    那么我们就可以将这部分抽离出来

    在fabric(加载器文件夹)下创建origin文件夹,与其他版本文件夹同级

    img.png

    创建相同路径的文件

    以上文为例: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
    
    1
    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               
    ├── 📂 ...                  
    └── 📜 ...     
    
    1
    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
      • init.ps1 (opens new window)
    • Github Action 自动构建测试fabric
      • test_fabric.yml (opens new window)
    #Minecraft#mod
    上次更新: 2025/03/11, 12:44:31
    设置

    ← 设置

    Theme by Vdoing | Copyright © 2021-2025 KitUIN | MIT License | 浙ICP备2023024391号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式