本篇教程由作者设定使用 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上建立一个工作区仓库,点开右上角+号处
点击此时的下拉菜单中的“New repository”,会进入一个新的页面
在“Repository template”处选择“CleanroomMC/TemplateDevEnv”,如果找不到可以打开这个界面,点击“Use this template”,然后再点击“Create a new repository”即可。
选择完毕后界面会更改一些选项
在“Repository name”处写入您模组的名称,同时也是仓库名称,这里使用ExampleGTCEuAddonMod作为参考。
在“Description”处可以填入该仓库的简介,这是一个可选项,可填可不填。
在上图此处可以选择仓库的可见度,选择Public意味着可以被任何人查看仓库,Private则高度封闭。
填入所有的信息后,可以点击下方的“Create repository”来创建一个仓库。
接着进入该仓库的主页面
此时点击绿色的“Code”按钮
点击链接后的复制按钮,复制该仓库的Clone Link。
然后打开您选择的IDE的主界面,这里使用Intellij IDEA Community作为示例
点击右上角处的“从VSC获取”[3]
将刚刚复制的Clone Link粘贴到此处的“URL”内,目录请自选[4];
然后点击克隆,等待项目克隆到本地即可完成配置工作区的第一步——下载工作区。
√配置工作区
现在,您可以看到打开了一个新的界面[5]
这既是IDEA打开项目的主界面,在打开此界面后需要等待一段时间。
IDEA会运行构建,在构建的控制台显示“BUILD SUCCESSFUL in ...”后,请点击左侧栏,即页面关闭按钮下方的“大象”图标
上图中左侧栏依次是“通知”与“Gradle”
点开Gradle,可以看到几个标签卡
打开Tasks-modded minecraft中的setupDecompWorkspace
双击运行该task[6],然后等待构建完成“BUILD SUCCESSFUL”,再跑一次构建即可。
如果您显示“BUILD FAILD”并且下载速度极慢或无法下载时,可以参考这篇教程或如果你相信玄学的话就挂个梯子硬跑也行。
√搭建最基本的开发结构
正式开始快乐Modding之前,我们还需要做一点事情。
将GTCEu和您需要的前置/扩展加进开发环境里。
打开项目下的build.gradle文件,找到dependencies部分
在 // Example of deobfuscating a dependency 处下方加入一段新的添加前置的函数:
//{Groovy | Gradle}
implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:4701483")
您需要通过按时查看CurseForge来检查最新版GTCEu的File ID,否则没法保证适应最新版。
如果您需要添加其他模组到开发环境,请看Harbinger的这一篇。
接着打开 “gradle.properties”,修改以下内容
将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
也是可以的,但这一步是为了教读者如何运行task。