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似乎还需要经过手动的配置才可以使用此项功能。