本篇教程由作者设定使用 CC BY-NC-ND 协议。

√写在开头 | 教程相关

本教程遵循CC: BY-NC-ND协议,MCMOD为唯一发布站。

本页面内容最后更新时间: 2023/9/8 19:54(GMT+9)


在开始之前,您需要知道出现在各章节的特定符号:

√表示该章节已完成编写,仅在游戏机制拥有重大改动时更改;

…表示该章节正在编写或者完成主干部分;

×表示该章节没有编写。


以及各类标识:

[1...]:表示此处含有较长注释,请前往页面底部查看,百科未提供注释跳转功能;

{Java...}:表示代码块的语言(由于百科的代码块没法显示此段代码的语言);

<...>:导向到其他章节的标志(但百科未提供直接跳转到某一个标题段落的功能,请自行切换)。


以及在开始正式编写前,您所需的一系列开发工具与准备事项:

  • 安装一个趁手好用的IDE(集成开发环境,Integrated Development Environment),此处推荐使用JetBrains公司开发的Intellij IDEA Community[1]

  • 喜欢的浏览器,最好带有翻译网页内容的插件,因为大多数时候您需要阅读全英文界面,如果您拥有良好的英文阅读能力,那么请忽略这条提醒;

  • 配好的Java 1.8 (Java8)环境,并非JRE(Java Runtime Environment,Java运行时环境),而是JDK(Java Development Kit,Java开发工具包)[2]

  • 稍微一点点的Java基础/模组开发经验,前者需要您至少阅读完3/4的任意Java教程,或是菜鸟教程的开头到此处;后者您可以通过实战编写或阅读一些模组开发教程来积攒;

  • 一些工具网站的账号与访问,例如GitHub,MCMOD,Harbinger,Discord(用于访问GTCEu Discord服务器的1-12-dev-talks,使用英语在该频道内询问开发相关问题)


...正式开始

首先,您需要在GitHub上建立一个工作区仓库,点开右上角+号处

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第1张图片点击此时的下拉菜单中的“New repository”,会进入一个新的页面

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第2张图片

在“Repository template”处选择“CleanroomMC/TemplateDevEnv”,如果找不到可以打开这个界面,点击“Use this template”,然后再点击“Create a new repository”即可。

选择完毕后界面会更改一些选项

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第3张图片

在“Repository name”处写入您模组的名称,同时也是仓库名称,这里使用ExampleGTCEuAddonMod作为参考。

在“Description”处可以填入该仓库的简介,这是一个可选项,可填可不填。

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第4张图片在上图此处可以选择仓库的可见度,选择Public意味着可以被任何人查看仓库,Private则高度封闭。

填入所有的信息后,可以点击下方的“Create repository”来创建一个仓库。

接着进入该仓库的主页面

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第5张图片此时点击绿色的“Code”按钮

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第6张图片

点击链接后的复制按钮,复制该仓库的Clone Link。

然后打开您选择的IDE的主界面,这里使用Intellij IDEA Community作为示例

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第7张图片点击右上角处的“从VSC获取”[3]

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第8张图片将刚刚复制的Clone Link粘贴到此处的“URL”内,目录请自选[4]

然后点击克隆,等待项目克隆到本地即可完成配置工作区的第一步——下载工作区。


√配置工作区

现在,您可以看到打开了一个新的界面[5]

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第9张图片

这既是IDEA打开项目的主界面,在打开此界面后需要等待一段时间。

IDEA会运行构建,在构建的控制台显示“BUILD SUCCESSFUL in ...”后,请点击左侧栏,即页面关闭按钮下方的“大象”图标

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第10张图片

上图中左侧栏依次是“通知”与“Gradle”

点开Gradle,可以看到几个标签卡

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第11张图片打开Tasks-modded minecraft中的setupDecompWorkspace

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第12张图片

双击运行该task[6],然后等待构建完成“BUILD SUCCESSFUL”,再跑一次构建即可。

如果您显示“BUILD FAILD”并且下载速度极慢或无法下载时,可以参考这篇教程或如果你相信玄学的话就挂个梯子硬跑也行


√搭建最基本的开发结构

正式开始快乐Modding之前,我们还需要做一点事情。

将GTCEu和您需要的前置/扩展加进开发环境里。

打开项目下的build.gradle文件,找到dependencies部分

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第13张图片在 // Example of deobfuscating a dependency 处下方加入一段新的添加前置的函数:

//{Groovy | Gradle}
implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:4701483")

您需要通过按时查看CurseForge来检查最新版GTCEu的File ID,否则没法保证适应最新版。

如果您需要添加其他模组到开发环境,请看Harbinger的这一篇

接着打开 “gradle.properties”,修改以下内容

[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第14张图片将version修改为您模组的当前版本;

将maven_group改成您的域名倒置(例如com.mcmod,当然请用您自己的域名,如果没有的话使用 me.您名字小写 也行,记得把src/java下的com.cleanroom改成您的maven_group);

archive_base_name改为您模组的modid,记得小写。

接着运行gradlew setupDecompWorkspace,成功后再次运行构建即可。


...创建所有基础类

暂未编写


×如何在开发环境内测试模组|启动游戏

暂未编写



×基础内容|元数据项目

元数据内容指的是以Meta ID或以数字ID为标识符的游戏内注册内容,如MetaItem(元数据物品),MetaBlock(元数据方块),MetaTileEntity(元数据方块实体),Material(材料)


×元数据内容|物品

暂未编写


×元数据内容|方块

暂未编写


×元数据内容|方块实体

暂未编写


×单方块机械与发电机相关

暂未编写

×多方块机械与发电机相关

暂未编写

×额外拓展|多方块部件

暂未编写


×元数据内容|材料

暂未编写


×材料附加|自定义标签、材质集、矿石前缀

暂未编写


×配方相关

暂未编写


×配方基础|自定义RecipeMap和RecipeLogic相关

暂未编写


×配方附加|添加自定义配方

暂未编写


×添加原版配方

暂未编写


×基于RecipeMap的添加配方方法

暂未编写



注释

[1]:为何不选择Ultimate版?如果您已经有了,那么可以使用该版本;Ultimate属于租赁版,需要按时付款继续使用,其拓展功能对模组开发无过大帮助,因此使用Community版本即可(我使用的是Intellij IDEA的最新版本,但并非快照版)。

[2]:如果您的电脑上已经安装了多个Java,请检查是否是正确的Java版本,即在CMD内运行java -version指令,如果版本并非Java 1.8.xxx,请修改Java环境变量

[3]:为什么是中文呢,这其实得归咎于我没写添加Plugin的部分(IDEA称Plugin/插件,如果是VSCode的话可能称为Extended/扩展,其他IDE我没使用过),如果您用的是IDEA的话,可以在开始页-插件处找到插件页面,在Markplace里可以搜索插件社区里的好的插件,我这里已经安装了“Chinese (Simplified) Language Pack / 中文语言包”插件,因此IDEA的语言为中文。

[4]:如果您没有已经下载好的内置Git,请在一旁点击快速下载。

[5]:如果你发现我的界面和您的不一样,那是因为我启用了IDEA的Beta UI,但Legacy UI的功能与Beta UI无异,仅按钮位置与界面设计有调整。

[6]:其实在主界面处直接点击gradlew setupDecompWorkspace[送给Modpacker们的礼物]如何试着去制作一个CEu的附属模组-第15张图片

也是可以的,但这一步是为了教读者如何运行task。