考虑到部分读者可能对环境搭建流程不熟,所以本章教程简单地过一遍环境搭建,并在项目中整合Mixin。
下载MDK
打开https://files.minecraftforge.net/net/minecraftforge/forge/,选择需要的mdk版本,点击下载。本教程使用1.18.2 - 40.2.0。在下载前会打开一个广告链接,由于某些不可描述的原因导致广告链接打开很慢或失败,采用以下办法跳过广告:
-
右键“Mdk”,点击“复制链接地址”
-
将链接复制到地址栏中,图中高亮部分就是Mdk下载链接,访问该链接即可
搭建项目
解压缩Mdk,将文件夹名改成自己项目的名字,笔者以ZjTutor
作为项目名。~/README.txt
(这里‘~’指模组项目文件夹路径)中记录了搭建项目的流程,笔者使用eclipse(也可以使用idea,拥有更强大的插件,搭建流程略有不同)跟着做一遍:
- 进入项目文件夹,在地址栏中输入
cmd
点击Enter
打开控制台
- 在控制台中运行
gradlew genEclipseRuns
,如果是第一次运行需要等待较长时间下载大量依赖文件,这个过程可能因为网络原因导致失败,可以多次或换个网络重试 - 打开Eclipse,Import > Existing Gradle Project > 选择模组的项目文件夹并导入
项目配置——build.gradle
mdk是基于gradle的项目,使用build.gradle对其进行配置。在~/gradle.properties
添加以下参数,这些参数将在~/build.gradle
中调用,关于parchment将在后面说明
mod_id=zjtutor//模组id
mod_group=com.zjqc.zjtutor//包名
mod_name=ZjTutor//模组名字
version_name=Demo=Demo
mod_version=0.0.1//模组版本
mc_version=1.18.2//mc版本
forge_version=40.2.0//forge版本
mappings_version=2022.11.06-1.18.2//映射表版本
mapping_channel=parchment//映射表,用于反混淆
注意,mod_id
只能是下划线+小写字母,并且不能与其它模组的id重名。
按以下修改~/build.gradle
,这里保留原文件详细的注释。其中涉及到Mixin的内容将在后面说明。
buildscript {
repositories {
// These repositories are only for Gradle plugins, put any other repositories in the repository block further below
maven {
url = 'https://maven.minecraftforge.net' }
maven {
url = 'https://maven.parchmentmc.org' }
//mixin仓库地址
maven {
name = "SpongePowered"
url = 'https://repo.spongepowered.org/repository/maven-public/'
}
mavenCentral()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
classpath 'org.parchmentmc:librarian:1.+'
classpath group: 'org.spongepowered', name: 'mixingradle', version: '0.7-SNAPSHOT'
}
}
apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
apply plugin: 'org.parchmentmc.librarian.forgegradle'
apply plugin: 'org.spongepowered.mixin'
version =property("mc_version")+"-"+property("mod_version")+ "-" + property("version_name")
group = property("mod_group")
archivesBaseName = property("mod_name")
// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17.
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
compileJava.options.encoding = 'UTF-8'
ta