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
  • 类名以大写字母开头,方法名以小写字母开头,驼峰式 (TileEntityBase09FacingSingleaddToolTips
  • 我添加的类会以 _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,保证原本汉化文件不需要修改