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”一栏下载。注意如果你网不好,直接点击下载是不行的,因为这一步中插入了广告,在国内互联网环境下访问很不畅(<s>丝滑顺畅</s>)…”) |
无编辑摘要 |
||
(未显示同一用户的1个中间版本) | |||
第3行: | 第3行: | ||
不要以为笔者在开玩笑,实际上很多潜在的Modder都被这一步拦住了。 |
不要以为笔者在开玩笑,实际上很多潜在的Modder都被这一步拦住了。 |
||
== 步骤 == |
== 构建步骤 == |
||
首先访问Forge官网:https://files.minecraftforge.net 。 |
首先访问Forge官网:https://files.minecraftforge.net 。 |
||
第44行: | 第44行: | ||
} |
} |
||
} |
} |
||
⚫ | |||
把其中的链接替换成你要用的镜像源链接即可。 |
把其中的链接替换成你要用的镜像源链接即可。 |
||
但笔者建议直接下载构建好的离线包,当然下载完之后还是要在命令行中输入一下相关的构建命令。 |
但笔者建议直接下载构建好的离线包,当然下载完之后还是要在命令行中输入一下相关的构建命令。 |
||
== 修改build.gradle和Mod元数据 == |
|||
如果你没有什么特殊需求的话,那么,对于<code>build.gradle</code>,你只需要修改以下的地方: |
|||
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 |
|||
} |
|||
} |
|||
另外,在路径<code>src/main/resources</code>下,你应该会找到<code>mcmod.info</code>和<code>pack.mcmeta</code>这两个文件。其中,<code>mcmod.info</code>是这样的: |
|||
[ |
|||
{ |
|||
"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": [] |
|||
} |
|||
] |
|||
按需修改即可。 |
|||
至于<code>pack.mcmeta</code>,这个文件是用于资源包的,显然每个Forge模组都相当于一个资源包,这里要注意的是pack_format必须为3。如果你不小心删除了这个文件,启动游戏测试时,虽然这个文件会自动生成,但pack_format会莫名其妙的变成2,如果发现了这个情况,要手动改成3。至于为什么?去Minecraft Wiki的相关条目可以找到答案,这属于原版的知识了。 |
|||
== 测试与发布Mod == |
|||
运行客户端Minecraft: |
|||
gradlew runClient |
|||
运行服务端Minecraft: |
|||
gradlew runServer |
|||
另外,运行这两个命令时,会尝试连接Forge的服务器,如果这个时候Forge服务器正好抽风了,那就会BUILD FAILED,那么,你可以选择加上参数<code>--offline</code>,以离线运行游戏。 |
|||
发布Mod: |
|||
gradlew build |
|||
然后你就可以在路径<code>build/libs</code>下看到一个.jar文件,这就是构建好的Mod了。 |
|||
== 在IDE中执行Gradle Task == |
|||
上述Gradle Task都是ForgeGradle这一Gradle插件提供的。实际上,你不需要非要在命令行中执行这些task,上述的三种IDE:IDEA、Eclipse和VSCode都有Gradle支持插件,因此理论上如果你使用这三种IDE之一,是可以直接在IDE中执行task的。但实际上VSCode似乎还需要经过手动的配置才可以使用此项功能。 |
2024年12月2日 (一) 19:56的最新版本
这一步,可以说是最难的一步。
不要以为笔者在开玩笑,实际上很多潜在的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的相关条目可以找到答案,这属于原版的知识了。
测试与发布Mod
运行客户端Minecraft:
gradlew runClient
运行服务端Minecraft:
gradlew runServer
另外,运行这两个命令时,会尝试连接Forge的服务器,如果这个时候Forge服务器正好抽风了,那就会BUILD FAILED,那么,你可以选择加上参数--offline
,以离线运行游戏。
发布Mod:
gradlew build
然后你就可以在路径build/libs
下看到一个.jar文件,这就是构建好的Mod了。
在IDE中执行Gradle Task
上述Gradle Task都是ForgeGradle这一Gradle插件提供的。实际上,你不需要非要在命令行中执行这些task,上述的三种IDE:IDEA、Eclipse和VSCode都有Gradle支持插件,因此理论上如果你使用这三种IDE之一,是可以直接在IDE中执行task的。但实际上VSCode似乎还需要经过手动的配置才可以使用此项功能。