基础知识和原理

我们先得了解什么是Mod[原文]:

大多数Mod向游戏加入新内容以修改游戏玩法,改变创造的气氛或是给予玩家更多的与“Minecraft”世界交互的选择。大多数为“Minecraft:Java版”创建Mod的人(称为“Modder”)利用Fabric或是Minecraft Forge与MCP(Mod Coder Pack)一同编写Mod。一些Mod对游戏有较大的扩展,同时一些Mod添加更多的设置与选项以优化游戏的速度、画面或是玩法。服务端Mod,或插件(Plugins),给予服务器管理员更多的选择,同时易于使用。而大多数单人Mod也有服务端版本以让该模组在多人模式上运行或是有针对多人模式的优化。

从中我们可以明白对于Minecraft模组的实现,并不是由官方提供的接口,而是由ForgeFabric等Minecraft模组社区共同维护的

假如感兴趣的话可以了解一下模组实现的原理,这有利于我们去深入了解Mod,所以我从这篇文章中找到了适合我们理解的解释【这篇教程只讲解了Forge的原理,其他的加载器实现原理也大同小异】:

forge的运行原理就是在强奸字节码(比喻来自szszss的coremod教程)。要知道minecraft是基于java的,java的类加载器一旦加载了一个类到java虚拟机中,这个类就不可能被外部修改了,但是加载之前的类的字节码可不是这样被严格的保护的,那些字节码处于一种谁想强X就强X的程度。forge本身通过修改启动器的json(1.6以后是这样,而1.6之前是直接修改jar文件)而优先于minecraft加载,并且forge会在minecraft加载的时候调教那些正要被加载的字节码。

经过forge的一翻调教,安装完forge的minecraft就会在适当的时候去调用forge了。当然如果只做到这样的话那么也就是一个普通的mod了,既然是mod加载器就要有加载器的样子。forge不光自己强奸那些字节码,而且还允许基于forge的mod一起来调教minecraft。

如果一个mod只是在minecraft加载之后动一动minecraft提供的接口,那么这种mod就是普通mod。如果一个mod在minecraft加载的时候修改了minecraft本身的字节码被加载到jvm中那么这个mod就是所谓的coremod。简单的讲,coremod能够修改minecraft本身的类。当然了如果仅仅为了调用一些非公开的接口的话那么完全没有必要制作coremod,通过反射就可以的。我目前还不打算动coremod这种大坑。

上面扯了这么长一大段有的没的估计人都吓跑了吧,下面来讲一讲一个普通的mod是怎么被加载的。

forge会优先minecraft加载并且遍历mods文件夹中的压缩文件。forge会通过压缩文件里面的mcmod.info文件来判断mod的信息。如果符合mod加载条件的话forge就会加载整个mod的字节码到虚拟机里面。forge会通过asm来分析mod的字节码,如果发现mod的主类确实符合mod的要求,forge就会加载整个mod的类到jvm里面。

forge在加载了mod之后forge就会根据mod的订阅消息情况适时的发送消息。也就是说mod也是消息驱动的程序。当然开始一个mod的编程就要从消息处理开始。


模组加载器的安装

Forge的安装

启动器安装【推荐】

通过PCL2HMCL等启动器可以一键安装和游戏版本对应的Forge版本

手动安装【出自知乎文章

一、下载 Forge

首先,我们需要打开 Forge 官方网站

https://files.minecraftforge.net/net/minecraftforge/forge/

Forge 官方网站

默认是1.19.4,这里我使用1.20.1。但打开后不要直接左键“Installer”,而是右键“Installer”,选择“复制链接"。

右键“Installer”选择“复制链接”

复制后粘贴,你会发现链接内有两个“https”。例如1.20.1版本:

https://adfoc.us/serve/sitelinks/?id=271228&url=https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.0.35/forge-1.20.1-47.0.35-installer.jar

在浏览器里打开链接你会发现,苦苦等了那么久,跳出的竟不是下载界面,而是广告界面!

广告

就算右边有滑块,但整个界面也找不到跳过按钮,也不知道什么时候修。

其实,前面的“https”是广告链接,后面的“https”才是真正的下载链接。所以只要把第二个“https”之前的字段全删了,管它是数字还是字母或是符号,全删了,就像这样:

https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.0.35/forge-1.20.1-47.0.35-installer.jar

在浏览器内打开后就直接开始下载了。

jar 文件

二、下载 Java

但你会发现,这不是安装包。没错,它是一个后缀为“jar”的文件。这种文件是需要用 Java 打开。

Java | Oracle​www.java.com/zh-CN/

打开网站,直接左键“下载”。

Java 官网界面

英文界面不用管,直接点“Downloads

Java 下载界面

下载后打开安装包,安装即可,建议选择其它路径。

三、安装 Forge

等待好 Java 的安装,打开下载好的 Forge 文件。

Forge 安装文件

选择 “Java(TM) Platform SE binary”,左键“确定

选择 Java(TM) Platform SE binary

当打开后将会发生两种情况:

  • 界面如下图(不同 Forge 版本界面可能有差距),并无红色字体。

  • 如果下方出现红色的一句话,那么你的安装位置不是 Minecraft 的路径,需按下“. . .”重新选择 Minecraft 安装路径。

那个“季之羽”是用户名,一般情况是“Administrator”

直接点“确定”,开始安装。

安装界面

当弹出下方窗口时就安装好了:

安装成功界面

四、打开游戏

如果您的 Minecraft Launcher 是打开的状态,请将其关闭,并重新启动。

左键“Minecraft:Java Edition”并左键“配置”,你会发现多出了一个名为“forge”的版本。

Minecraft Launcher 界面

右上角的“!”不用管,直接开始游戏


Fabric的安装

启动器安装【推荐】

通过PCL2HMCL等启动器可以一键安装和游戏版本对应的Fabric版本

手动安装【出自知乎文章

第一步:下载Fabric安装包

第二步:运行已安装Fabric的MC

第三步:安装Fabric API

第四步:安装Fabric Mods

第一步:下载Fabric安装包

https://fabricmc.net/use/下载Windows exe

安装前注意关闭Minecraft Launcher

双击安装下载好的Fabric安装包

安装包logo如图

在安装包里修改想要的配置,一般默认配置就可以使用,如需要快照则可勾选快照版本

1.20.4的默认配置如图

点击安装后关闭安装器窗口

第二步:运行已安装Fabric的MC

在Minecraft Launcher上选择含有fabric的版本

会有安全功能提示,可以忽略

打开后界面如下图

会出现Fabric的标志

这就说明Fabric安装已经成功啦,现在我们可以暂时点击退出游戏然后往mod文件夹里装东西啦!

mod文件夹一般在

C:\Users\{用户名}\AppData\Roaming\.minecraft\mods
第三步:安装Fabric API

Fabric API 是Fabric的核心组件,需要单独下载安装到mod文件夹。

我们可以从Fabric API - Versions下载jar包之后放到上一步的mod文件夹中

1.20.4 beta版本

第四步:安装Fabric Mods

Mod Menu (Fabric)为例来测试一下mod安装

Mod Menu - Versions 下载Mod Menu后同样放到第二步中的mod文件夹

现在我们有2个mod啦

再次从Minecraft Launcher打开Fabric版本的MC,我们就能看到模组按钮了

好耶

点击模组按钮,我们就能查看安装好的模组和相关的配置了

也可以直接拖拽放mods

其他的安装

一般来说PCL等启动器都会做适配,选择合适启动器即可。如有能力可以根据对应教程安装。


未完待续:

TODO:模组推荐