这一系列的教程呢,我们来学习关于《我的世界》的mod开发,针对Forge的mod开发。本次我们使用的版本是1.20,目前应该是1.20.1是最新的版本。想要进行mod开发,我们需要做一些准备工作。
首先,最基础的一步是要熟悉Java的基本语法。虽然网上有很多教程,但很多内容可能已经过时,教授的仍是Java 7之前的知识。我们知道1.20版本使用了Java 17,其中包含许多新特性如Lambda表达式和record等。因此,有必要学习这些新特性,尤其在mod开发中经常会用到Lambda表达式和方法引用等。
另外,国内镜像存在一些问题,比如部分镜像已经关闭,更新速度较慢等,因此要找到稳定的途径访问国际互联网,而且不能使用HTTP代理,需要通过操作系统的命令行设置。
接下来,需要安装开发环境,首先是安装JDK。从Java 9开始,Oracle不再提供官方的JRE,而是采用模块化的方式。用户可以自行打包所需的运行库,只包含程序需要的部分,而不是整个Java运行库。因此,只需安装JDK即可,可以选择合适的下载站点进行下载和安装。至于其他平台的安装方法,可以根据操作系统自行查找相关资料。
安装完JDK后,我们需要安装一个开发环境,主要有两个选择:Eclipse和IntelliJ IDEA。虽然两者都可以使用,但我更推荐使用IntelliJ IDEA。当然,如果你习惯使用Eclipse也没有问题,两者并无绝对优劣之分,根据个人喜好选择即可。
对于IntelliJ IDEA,它有专业版和社区版,而我建议使用社区版。你可以在官网搜索到IntelliJ IDEA,然后找到社区版下载页面,避免使用破解补丁等方式获取完整版。社区版已经足够满足我们的需求,其中包含了我们所需要的功能。
第三步是安装Forge Mod开发环境。您可以去Forge官网下载,并且IntelliJ IDEA还有中文语言包插件可供下载。关于Forge Mod开发环境的具体安装步骤,您可以在Forge官网上查找相关指引,选择适合1.20.1版本的Mod开发工具进行下载安装。
如果在下载过程中遇到广告页面或者链接不明确的情况,可能需要等待一段时间或者留意倒计时后跳过广告页面。同时,如果网络情况不佳,可能会影响到页面加载和下载速度,请耐心等待或尝试其他网络环境。
安装完JDK后,我们打开IntelliJ IDEA并选择解压的文件夹,点击"Gradle",然后确认并选择"作为项目打开"。一定要记得点击"作为项目打开",接着可以在左下角点击"构建"来查看构建进度。如果您的界面看起来与我的不同,可能是因为您以前已经下载过,所以没有显示新的UI。您可以根据个人喜好选择使用旧版UI还是新版UI,在设置中找到"外观和行为",勾选启用新UI和紧凑模式,使界面与我的一致。
在第一次构建时可能会花费较长时间,请耐心等待直至出现"Build Successful",这需要良好的网络连接,特别是在第一次构建时需要下载许多依赖项。如果网络状况不佳,可能会导致下载失败。流畅访问网络对于成功构建项目非常重要。
完成以上步骤后,我们需要对一些内容进行修改。首先是Java文件中的包名和类参数,然后是在"GRADLE"的"properties"中调整一些参数。注意要根据Forge官网上显示的版本信息进行相应的更改,包括Mac版本、Forge版本和混淆映射表等。混淆映射表是将混淆过的类名翻译成可读性较强的名称,这对于理解代码结构非常重要。您可以在Minecraft Wiki上找到相应的混淆映射表,以便更好地理解和开发Mod。
这个类在被混淆后,例如被命名为EGE,实际上可能代表着其他名称,比如某个参数被混淆成了C,另一个参数被混淆成了A等。然而,现有的混淆映射表通常只提供包名和类名的翻译,缺少方法名、参数名以及成员变量名的对应关系。这样就会导致我们看到方法后面的参数时,虽然知道参数的类型,但无法直接得知参数名。
在外部库中,比如Minecraft Forge中的net.minecraft下,我们可以找到具体的包,比如"world.entity.animal.Chicken",来查看混淆后的写法。虽然官方未提供参数名的翻译,但基于参数的类型往往可以推测出参数名,比如"serverLevel"可能被混淆成小写的"serverlevel",这些都是根据Java的语法规则来推断。
虽然混淆后的代码仍然可运行,因为参数类型已经被正确解析,但看起来确实不够友好。为了解决这个问题,存在一种名为"Parchment"的方案,它可以将参数名称也翻译成可读性更强的形式。您可以通过访问相关链接了解更多关于Parchment的信息,以便获得更清晰的代码理解。
需要注意的是,由于Parchment需要逐步翻译大量的参数名称,更新速度可能较慢。如果当前版本尚未涵盖1.20版本,您可以留意更新情况,以便在新版本发布后使用其提供的参数名翻译服务。
在设置Mod Idea时非常关键。您可以将Mod Idea直接修改为您自己的Idea,给您的Mod起一个名称。如果您不确定要使用什么名称,可以先选择一个通用的名称,比如"test mod",然后在Mod Idea中写入全小写、无空格、长度适中(11~63个字符)的名称,例如"testmod"。
接下来是Mod Lessons,这里需要指定您的Mod所遵循的授权协议,即别人如何使用您的Mod。您可以选择适合您需求的协议,比如GPL3.0。如果您不确定选择哪种协议,可以点击提供的链接查看一些建议的协议,或者参考一些知名项目所采用的协议进行借鉴。请务必注意查看所选择的协议内容,确保您认可其他人按照该协议使用您的作品。若您认为GPL3.0是合适的选择,则可以直接填写为GPL3.0。
最后是Mod Verse,这里指定您Mod的版本号,比如1.0。填写适当的版本号即可。在进行Mod Grow排地时,您需要填写您包的名称。如果您使用Forge,默认会生成一个示例Mod,其中包含视力Mod的包名。您需要将其更改为自己的包名,例如命名为"test mod"。不仅要修改这里,还要确保其他相关位置也做了相应的修改。
接着是Mod的作者名,您可以直接填写您的名字,并用逗号空格隔开。如果有其他人一起协作制作此Mod,可以继续列出其他人的名字,例如"GitHub, GoodPilot"。
在Mod的描述中,甚至提供了使用转义字符斜杠N来换行的提示,这对新手很友好。您可以写几句关于Mod的描述,比如"测试Mod",然后保存。
若发现有多余的内容,可以删除掉。示例Mod也可以改成您自己的主类的名字,比如"Mod"或者"TestMod",只要您认得这是主类即可。进行重构后,进入主类文件,找到mod idea的字符串,并设置为您的Mod Idea,最好直接复制粘贴以确保正确性。
完成以上步骤后,点击加载Gradle进行更改,查看构建进度。通常情况下,构建速度较快。等待执行完毕并显示"build successful"后,表示修改完成。
接着我们点击这个task,然后选择forge gradle rs。根据您使用的IDE不同,具体操作也会有所差异。比如说,如果我们使用的是IntelliJ IDEA,只需要双击它即可执行。这一步需要网络环境,因为需要下载许多必要的文件和依赖项,等待下载完成后会显示"build successful"。
完成上述步骤后,可以关闭这个窗口,然后找到启动选项。在这里选择"run lint",这将启动一个客户端来测试您的Mod。如果有其他的任务暂时用不上,可以暂时忽略。
接着是"run data",这部分目前暂时不需要用到;而"run server"则用于启动一个服务器以测试Mod,但对于初学者来说可能还不需要考虑这个。
在运行Lint任务时,您可以选择“运行”(Run)或“调试”(Debug),运行就是启动在正常情况下的游戏模式,而调试则是在开发环境中进行Mod的调试,您可以设置断点等。首选我们选择调试模式。
等待窗口成功加载完成,确保配置没有问题。稍等片刻,如果出现弹窗,可以继续然后关闭。确认Mod已经成功启动后,点击"quit"退出。
这样完成了整个开发环境的配置。以上就是本期教程的内容,我们做好了一些准备工作,安装了开发环境。下一期将正式开始我们的mod开发过程。