最近更新:2021年6月12日
前言
本文是《使用VSCode搭建基于Forge的Minecraft模组开发环境》的附文,由于总的篇幅过长,笔者另起一文以减小正文的阅读成本。
Forge模组制作教程推荐(高版本)
对于模组制作等教程,可以在MCBBS的 编程开发 板块找到。
- MCBBS楼主@FledgeXu的教程:
- B站UP主@Felis__Catus_的系列视频教程:
安装两个 JDK 的原因
之所以安装两个版本的JDK,是因为【Language Support for Java™ by Red Hat】这个拓展更新到 0.65.0版本 的原因。Eclipse 平台决定将 JDK11 作为 9 月发布的最低要求,而 VSCode 是依赖 eclipsejdt.ls 服务器的,所以需要更新到 JDK11。(摘自博主@ElasticForce在《VSCode中不再支持JDK8的解决方案》中的一段话)
但是 Forge 制作和加载模组一般都是 使用JDK1.8版本,所以需要安装两个 JDK,且将 VSCode 运行环境改为 JDK1.8。如果你需要在 VSCode 中使用 JDK11 的环境,只需将代码中的
1 | "java.configuration.runtimes": [ |
更改为
1 | "java.configuration.runtimes": [ |
就行了。注意这里是 VSCode,Windows 的 CMD 窗口仍然是 JDK1.8,改 CMD 中用的版本要将系统环境变量 JAVA_HOME 的值 %JAVA_HOME1.8% 修改为 %JAVA_HOME11% 。
另外,Minecraft 从快照 21w19a 开始,使用 Java16 运行游戏,目前暂不清楚 Forge 的模组开发是否要跟着改。(其实你可以在安装 JDK 时不用 JDK11 而改用 JDK16 甚至 JDK17,但考虑到兼容性,不推荐这么做)

OpenJDK 与 OracleJDK 等其它 JDK 的区别
Oracle JDK 是基于 OpenJDK 源代码构建的,因此 Oracle JDK 和 OpenJDK 之间没有重大的技术差异,所以两者用于模组开发是没有区别的。至于为什么用 OracleJDK 介绍,笔者只是觉得 Minecraft Launcher 使用的 java1.8 是 Oracle 公司的,跟着用准没问题(1.17 版本的用的是微软自家的开源 JDK16)。
推荐安装的 VSCode 扩展
- 【Chinese (Simplified) Language Pack for Visual Studio Code】提供中文界面支持
- 【indent-rainbow】使缩进更加明显(强迫症勿用)
- 【TOML Language Support】提供
.toml文件的语法支持 - 【Material Icon Theme】不错的图标主题
- 【GitLens — Git supercharged】版本控制工具
git的扩展,界面化操作 Git - 【Project Manager】项目管理器,方便管理多个项目
MDK 离线包下载
离线包的使用教程参见下载的网站。
- MCBBS楼主@FledgeXu的地址:https://github.com/FledgeXu/ForgeGradleOffline
- MCBBS楼主@耗子的地址:Minecraft模组开发离线包
VSCode 与 Java 专业 IDE 对比
Visual Studio Code 支持不少的语言,因其轻巧、启动速度快、性能要求少,所以优势主要体现在查看代码,制作网页、插件方面。对于大型项目而言,VSCode就显得力不从心了:编程效率不高,插件漏洞较多,功能无法满足工作需求等等。毕竟,VSCode的定位就是一款轻量级的编辑器,有再强大的扩展,也难以达到专业 IDE 的水平。
Eclipse、IntelliJ IDEA 等专业的 IDE,不仅对大型项目调试有极佳的优化,而且代码提示到位,内容全面丰富,工具齐全又方便。缺点也很明显,就是不支持多语言,启动速度慢,占用资源多,对性能要求高,不适合打开单个文件。
总之,不同的软件要配合使用,才能达到最好的的工作编程效率。虽然笔者的文章写的是用 VSCode 做模组开发,但还是推荐大家练习使用专业的 IDE,熟练掌握能大幅度提高开发效率。
常见问题
MDK导入失败
文中提到过,MDK导入需要用很长的时间,失败了就重启项目再试一试。一般是网络问题,可能是防火墙阻止了,如果关闭防火墙也没用那就 科 学 上 网 用离线包 吧。
MDK 导入成功但是运行 genVSCodeRuns 失败
经过测试,含有中文等非法字符的项目名会造成 Gradle 构建失败(用户文件夹显示为中文,底层却是英文)


但是项目存放路径中含有中文名(“新 建 文 件 夹”)可以成功启动游戏(注意这里说的是能启动游戏,但配置文件中是乱码的,仍然存在其它潜在的问题)。
导入、构建成功,但是游戏启动失败

这个问题一般是 .gradle 文件夹挪动了位置,或是使用离线包而导致资源加载错误,手动修改 .vscode/launch.json 中所有有关位置的参数,然后重启项目试试。仍然不行就用全新的 MDK 重新导入。

中文路径的问题
中文路径问题在前文的问题二和问题三中就已经提到了,但是需要提醒读者:不要随意移动项目!项目路径不要有中文,否则会出现乱码!(图中是问题二路径包含中文“新 建 文 件 夹”导致的配置文件乱码)

修改游戏启动内存
懒得再搞了直接截现成的,配置文件见问题四。

其它问题
为了撰写这些文章,笔者对 VSCode 的配置都是在虚拟机中全新配置的,没有安装过其它的拓展,如果出现前文没有提及的失败或报错,有可能是拓展之间冲突了,禁用或卸载与模组制作不相干的拓展,问题或许就能迎刃而解。
同时欢迎各位开发者前来留言分享自己的经历,为国内模组发展提供丰富的参考。