basic - CHanzyLazer/gregtech6-CH_Edition GitHub Wiki
基础知识
我也是第一次制作/魔改 minecraft mod,如有错误欢迎指出
感谢群友
白濑濑濑濑濑
教我如何制作 minecraft mod,才让我得以进行这个项目(进入这个深坑)
如果没有任何制作 mcmod 的经验,推荐先观看油管的视频教程 Minecraft 1.7: Modding Tutorial ,一共 17 集不一定要全部看完
如果没有任何编程知识的(甚至不是计算机科学专业的),建议观看 b站的 java 教程视频 ,了解到多态,反射等知识会对代码的理解会有很大帮助
软件版本
由于这是 1.7.10 版本的 mcmod,所以需要使用较久版本的 jdk 进行开发,我使用的是 AdoptOpenJDK
这是基于 gradle 的项目,ide 使用的是对 gradle 兼容比较好的 Intellij
,直接选择了最新版本
由于 JDK 版本较老,所以需要注意在 ide 中设置 jdk 版本为 1.8
,并且使用 powerShell
命令行来测试而不是 ide 内部直接运行
已知的命令
./gradlew setupDevWorkspace setupDecompWorkspace
设置工作环境./gradlew assemble
打包到build\lib
./gradlew clean
清理工作区./gradlew runClient
在客户端上运行./gradlew runServer
在服务端上运行- 可以组合使用,例如
./gradlew clean setupDevWorkspace setupDecompWorkspace
,清理并重新设置工作环境
命名规则
本项目命名规则会尽量保证和 GT6 原本的规则一致(尽管我不认为有多好),比较常见的有:
- 变量名以小写字母开头,驼峰式 (
recipeObject
);静态变量一般全部大写,使用下划线分隔 (NBT_ENERGY
) - 成员变量以
m
开头 (mProgressRate
);方法接收变量以a
开头aList
;临时变量以t
开头 (tConversionsEff
) - 类名以大写字母开头,方法名以小写字母开头,驼峰式 (
TileEntityBase09FacingSingle
,addToolTips
) - 我添加的类会以
_CH
结尾以示区分 (MultiTileEntityBasicMachine_CH
) - 我添加的 NBT 标签,lang 条目名称等,会将开头的
gt.
替换为gtch.
以示区分 (gtch.eff
)
日志
GT6 的日志是独立的文件,位于 .minecraft\logs\gregtech.log
,魔改增加的输出也统一放在这里,可以查看这个文件观察 mod 是否工作正常
文件结构
为了使得我修改的和原本的代码区分明显,方便开发,采用了
- 将我添加的类(或接口)都放入文件夹
main\java\gregtechCH
中 - 对于修改比较大的类尽量新建一个类,并且以
_CH
结尾,放入main\java\gregtechCH
中,后续路径和原本保持一致方便开发 - 对于不能分文件编写的(或者不太方便的),则在修改部分加入注释标识
- 新添加的配置文件都放入文件夹
config\gregtechCH
中 - 新添加的文本,需要汉化的都放入文件
gregtechCH.lang
,保证原本汉化文件不需要修改