MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针。
如果在编辑的过程中遇到了什么问题,可以去讨论板提问。
为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证。
MCBBS Wiki GitHub群组已上线!
您可以在回声洞中发表吐槽!
服务器状态监控。点击进入
本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>
用户:MashKJo/1.12.2模组开发教程/1.构建开发环境
这一步,可以说是最难的一步。
不要以为笔者在开玩笑,实际上很多潜在的Modder都被这一步拦住了。
构建步骤
首先访问Forge官网:https://files.minecraftforge.net 。
然后选择版本,找到1.12.2,选择2859这个版本的“Mdk”一栏下载。注意如果你网不好,直接点击下载是不行的,因为这一步中插入了广告,在国内互联网环境下访问很不畅(丝滑顺畅)。因此你得先耐心等待Forge官网加载完全,然后点击“Mdk”后加载出的一个小按钮图标,即可开始下载。
下载完之后解压,然后打开命令行,切换到你解压出的这个文件夹中,依据你使用的IDE的不同,有如下三条构建命令可以选择:
gradlew genIntellijRuns
gradlew genEclipseRuns
gradlew genVSCodeRuns
以上是Windows系统的写法,对于Mac或Linux,在最前面加上./
即可。
什么?你说你不用IDE而是用文本编辑器写模组?差不多得了。虽说网上有“用记事本写代码很高端,一看就是大佬”的风气,但是具体到写MC模组这件事上,没有IDE还真不行,因为你需要时刻查阅Referenced Libraries中的代码,而且,你也不希望写几行代码就手动import某个类吧(笑)。
然后你要做的就是耐心等待了,直到出现BUILD SUCCESSFUL的绿色字样。
残酷的事实
但是,到如今,上面的那段话,基本等同于没有价值的废话。
为什么?因为现在如果你在国内网络环境中,就按照上面的步骤来构建开发环境,99.9%会失败。
原因大致有如下几条:
- Forge使用Gradle来管理开发项目,且下载源默认为Gradle官网。但是在国内网络环境下,从这个源下载Gradle可以说是一定会超时。
- Forge自己的服务器经常会抽风。
- 1.12.2在如今(2024年)已经算是很陈旧的版本了,而Forge官方恰好又对“提供对旧版本MC的Forge的开发环境的支持”这种事很抵触(点名批评LexManos)。
所以,现在要构建1.12.2的环境,常见的方法是:使用镜像下载源,或使用构建好的离线包。
使用镜像下载源,需要更改gradle-wrapper.properties
和build.gradle
中的链接。其中,build.gradle
文件中,应该有这样一个部分:
buildscript { repositories { maven { url = 'https://maven.minecraftforge.net/' } mavenCentral() } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:3.+' } }
把其中的链接替换成你要用的镜像源链接即可。
但笔者建议直接下载构建好的离线包,当然下载完之后还是要在命令行中输入一下相关的构建命令。
修改build.gradle和Mod元数据
如果你没有什么特殊需求的话,那么,对于build.gradle
,你只需要修改以下的地方:
version = '1.0' group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'modid'
jar { manifest { attributes([ "Specification-Title": "examplemod", "Specification-Vendor": "examplemodsareus", "Specification-Version": "1", // We are version 1 of ourselves "Implementation-Title": project.name, "Implementation-Version": "${version}", "Implementation-Vendor" :"examplemodsareus", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } }
根据你的项目包名和模组的modid修改即可。
另外在文件末尾再加上这些,这是为了保证resources文件夹中的内容被读取:
sourceSets { main { output.resourcesDir = output.classesDir } }
另外,在路径src/main/resources
下,你应该会找到mcmod.info
和pack.mcmeta
这两个文件。其中,mcmod.info
是这样的:
[ { "modid": "examplemod", "name": "Example Mod", "description": "Example placeholder mod.", "version": "${version}", "mcversion": "${mcversion}", "url": "", "updateUrl": "", "authorList": ["ExampleDude"], "credits": "The Forge and FML guys, for making this example", "logoFile": "", "screenshots": [], "dependencies": [] } ]
按需修改即可。
至于pack.mcmeta
,这个文件是用于资源包的,显然每个Forge模组都相当于一个资源包,这里要注意的是pack_format必须为3。如果你不小心删除了这个文件,启动游戏测试时,虽然这个文件会自动生成,但pack_format会莫名其妙的变成2,如果发现了这个情况,要手动改成3。至于为什么?去Minecraft Wiki的相关条目可以找到答案,这属于原版的知识了。