Jellofish83
本帖最后由 Jellofish83 于 2023-3-31 10:14 编辑

我来教你怎么做模组了
我看这个板块不怎么活跃呀,发的也应该没人看。不过分享一下知识也挺不错的。

第一步:下载集成开发环境(IDE,或者程序编辑器)和需要的材料
标题假如没看懂的话IDE基本上就是用来写代码的。
我用的是Eclipse,你也可以用IntelleJ或者VS Code。本人不推荐VS Code。
Eclipse下载地址:https://www.eclipse.org/ide/
IntelleJ下载地址:https://www.jetbrains.com/idea/
VS Code下载地址:https://code.visualstudio.com/
*因为我用的是Eclipse,所以我推荐大家也安装Eclipse,这样出现问题后我知道如何解决*

1、Forge下载
好了,编码器下完后需要安装Forge,因为这是一个Forge模组制作教程
Forge下载:https://files.minecraftforge.net ... e/index_1.17.1.html
本人推荐下载Forge网站推荐的,而不是最新的。在Forge网站里你会看见有两个选项,图片如下。


Forge安装的时候请注意,点击Mdk,而不是安装包或者Changelog,因为到时候需要用里面的一些文件


2、JDK下载
Forge安装完成,下一步就是安装JDK(Java Development Kit)。我用的是Eclipse的JDK,因为Oracle的现在需要公司信息,对于其他不是软件开发类公司的或者不上班的就下不了Oracle的JDK。
JDK下载网址:https://adoptium.net/zh-CN/temurin/releases/?version=16
*我的世界1.17更新将Java 8更改为Java 16*
到网站里后,在上方操作系统选项,选择你自己的操作系统,我是Windows 10x64,所以我就选择Windows,然后在右边的硬件结构选项选择自己的主机硬件结构就可以了。
JDK下载下来后,双击运行安装包,在第二页,自定义设置页,第一项“Add to path”,点击右边的小三角,然后点击“将整个功能安装在本地硬盘上”,第二、三项操作也都是一样。图片如下:

弄好了之后,就点击下一步、安装即可。
安装完成后,打开文件资源管理器,在上方搜索栏输入“C:\Program Files\”。在Program Files文件夹里你应该会看见新多了一个文件夹,叫做Eclipse Foundations。这就意味着Java 16 和JRE已经成功地安装到电脑里了,我们可以进行下一步了。

3、Eclipse IDE(或者其它IDE)安装与JRE设置
当你的Java下载完成后,IDE应该也下载好了。安装过程都可以自己操作。安装完成后,需要来设置IDE使用那一个版本的Java。假如说你的电脑里用不同版本的Java,而且之前用过Eclipse,你可以自己进到Eclipse设置里更改。假如说没有Eclipse,安装过程中,会出现一个页面,这个页面会问你要是用什么版本的JRE。注意,JRE必须是要是刚才下载的(C:\Program Files\Eclipse Foundation),而且必须是JDK 16。例:(C:\Program Files\Eclipse Foundation\jdk-16.0.2.7-hotspot),这是我的储存地址。

第二步、处理下载完的Forge压缩文件夹
假如说你是按照我说的方法下载的Forge,下载到你电脑里的会是一个压缩文件夹。既然是压缩文件夹就需要把它解压缩,7-Zip和WinRAR都可以达到同样的效果。解压后,删除一切以“.txt”结尾的文件,假如说看不见文件扩展名,在文件资源管理器上方点击查看,然后勾选右方的文件扩展名就好了。

1、修改build.gradle
Eclipse下载完成后,创建一个你自己的文件夹来专门存储模组,然后将解压后的forge文件夹复制到你的文件夹内。然后双击build.gradle文件。你会看见一些代码,如下:

打开之后,这个文件比较乱,所以我们要先删除一切以“//”开头的,这些是注释,不影响代码本身的运作。假如说你不想自己删,我已经删好了,复制下方代码,然后代替原本的build.gradle即可



复制完成后,我们还要做几件事。首先,在文件偏上方,有两行代码:
  1. group = "
复制代码
  1. archivesBaseName = ''
复制代码
在这两行代码里,group就是你模组的package,我也解释不清楚,反正就确保是至少三个英语单词,用英文句号分隔着,然后是全小写就好了。例子如下:
  1. net.jellofish83.testmod
复制代码

模板差不多是这个样子的:
  1. domain.minecraftusername.modid
复制代码
Domain就是像.net,.com,或者.io之类的,你也可以把你的GitHub的网址写进去,不过要确保Github网址是关于模组的,minecraftusername就是你的我的世界用户名,modid就是你的模组ID,比如说当你玩Iron Chest模组的时候,你使用/give指令的时候,你会看见/give @s ironchests:item_name这样的东西,“ironchests”就是模组ID。模组的ID是你取的,不过请注意,每个模组都要有一个不同的ID,ID绝对不能重复。然后version就是模组版本,你写1.0啊或者1.0.0都行,随便。
archivesBaseName就是你的模组ID。
这两个改完后,我们需要把所有提到模组ID的地方全都换成你的模组ID。Ctrl+F来寻找,然后找到寻找,寻找examplemod,换成你的模组ID,图片如下:

这个弄好了之后,我们在build.gradle里只剩下最后一样东西了,就是最下方的一些代码:



在这里需要更改的只有"Specification-Title"、"Specification-Vendor"、"Specification-Version"、和"Implementation-Vendor"。
Specification-Title就是你的模组名称,纯英文,单词中间不能有空格,假如说要有空格,就要像我的一样,Farious Carft变成FariousCraft。
Specification-Vendor就是你的名字,纯英文,不能空格
Specification-Version就是你模组的版本
Implementation-Vendor还是你的名字,翻译成中文就是实施供应商,假如说就你一个人做的话,写你的名字就好了。
好了,到这里我们的build.gradle就编辑完成了,接下来需要运行cmd来获取一些文件。
顺便提一句,文件夹里的src\main\java\com,com文件夹可以删除,没有用的。

2、运行cmd
回到你的模组文件夹,注意,一定要是你存放Forge那些文件的文件夹,而不是里面的子文件夹。然后在文件资源管理器上方搜索栏内输入cmd,然后按下回车键,命令提示符窗口会冒出来,接下来,假如说你用的IDE是Eclipse,先输入以下代码,然后按下回车键运行:
  1. gradlew genEclipseRuns
复制代码
以上代码运行完毕后,再输入以下代码,然后运行:
  1. gradlew eclipse
复制代码
假如说你用的IDE是VS Code,先输入以下代码,然后按下回车键运行:
  1. gradlew genVscodeRuns
复制代码
以上代码运行完毕后,再输入以下代码,然后运行:
  1. gradlew eclipse
复制代码
假如说你用的IDE是IntelliJ,输入以下代码,然后按下回车键运行:
  1. gradlew genIntelliJRuns
复制代码



指令运行完成后,你会看见你的文件夹里多了三份文件:
runClient.launch
runData.launch
runServer.launch
这三份文件每份都有不同的用处,
runClient是主机,单人玩的。
runData一般不用,不过它以一种特殊模式启动我的世界,该模式仅执行自动生成 json 文件(如合成表和方块状态(blockstates))所需的最低要求。runServer是服务器用的。

3、输入gradle数据
我们的东西基本上全部弄好了,不过在我们的IDE里面没有显示怎么办?不用担心,打开Eclipse,在左边的空间里右键,单击import(目前我还不知道怎么调语言),图片如下:

点击完后在出现的列表里点击gradle旁边的小三角,点击Existing gradle project。点完后,点击下一步,在这里,我们可以看见上方有一个可以选择文件夹的地方,点击browse(浏览),然后选择你的模组文件夹,图片如下:


选择完成后点击下一步。
在这一步,上方有一个选项,叫做Override workspace settings,勾选那个选项,然后确定下面的是gradle wrapper,接下来就要检查你的Java_home,点击浏览(browse),然后找到存放JDK的文件夹,我的是C:\Program Files\Eclipse Foundation,然后选择里面的JDK 16文件夹,图片如下:

选好后,点击下一步,然后加载完毕后点击完成。这样,我们就可以开始在IDE里写代码了!

4、编辑mods.toml
mods.toml是一个很重要的文件,里面包含了作者名称,模组版本,模组概述,以及合法版权**。现在我们将要来编辑它,不过在编辑之前,你可能会注意到有很多行“代码”是以井号(#)开头的,这些全部都是注释,都可以删掉。注意,不是以井号(#)开头的全部都是重要的东西,千万不要删除,不过在真正代码后面也有注释,这种可以删,例:modId="examplemod" #mandatory,在这种情况下,#mandatory可以删除,不过前面的一概都不可以删掉。假如说你太懒,我已经删完了,复制剪切以下代码到你的文件内即可。



在这里面,license是你的合法版权**,你可以填All Rights Reserved,就是没有你的许可没人可以对这个模组做任何的更改(整合包,改编版等等)。还有一个是Some Rights Reserved,就是别人可以更改一些的东西,但不过大部分还要你的允许。最后一个我要说的就是MIT,MIT算式知识共享吧,就是别人可以用你的模组干其他的东西,具体记不清了,可以搜索一下。**不只只有这些,还有很多其它的,大家可以自行上网搜搜。
接下来就是modId,modId就是模组ID,需要跟你的archivesBaseName里填的一模一样,不能有差错。
displayName就是现实名称
logoFile是你模组的logo,需要在你的模组文件夹里放一个.png或者.jpg文件,然后把文件名填进去。
credits就是帮你的人,比如说你在那里获得的灵感,谁告诉你的,等等。
authors,作者
description,概述。就是你的模组概述,在这里你可以写任何东西,还可以另起一行。
在这里你可能发现了还有一半的代码都没有了,那是因为我们不需要这些代码。

第三步、文件必要代码编写
做了这么多事了,终于要写代码了!

1. 创建代码文件的“包裹”
首先,我们要创建一个包裹,和文件夹一样,不过是IDE里面的。
右键单击src/main/java,然后点击新建(New),然后点击package。图片如下:

package的名字需要和你的gruop里填写的一样。假如说记不住,可以回到build.gradle检查。
切记,新创建的package必须在src/main/java的下面,确定不是平齐或者在外面。
创建的时候,每一个点就是分隔文件夹的符号,比如说mod.test就是mod文件夹和test文件夹,但如果你写modtest,你就会创建modtest文件夹,而不是mod和test文件夹。

2、创建主文件(DisplayName.java)
右键单击你新创建的package,点击new,然后点击class,在这里,命名你的显示名称。比如说我的显示名称是FariousCraft,我就填FariousCraft。
创建完后,你会看见这样的代码。



(我的显示是TestMod是因为我的class名称是TestMod,你的应该是你自己取的名字,不一样很正常)
第一行就是你的package,不要管它。然后,在public class TestMod {}上面写上以下代码:

@Mod(FariousCraft.MODID)

FariousCraft就是我的class名称,@Mod是用来注解的,括号内的是显示名称,.MODID是一个String值,也就是说以后要写模组ID的时候在后面加上.MODID就好了,方便一些。不过现在@Mod(FariousCraft.MODID)还没有用,我们需要给它填上它的值,代码如下:

public static final String MODID = "fariouscraft";

这一行代码就是告诉系统说,我的MODID等于双引号内的值,而双引号里面应该填上你自己的模组ID。这个很重要,这个要和mods.toml里的和build.gradle里的都一致。这样,MODID就有用了。
接下来,在以上代码的下面,写下以下代码:
  1. public TestMod {

  2. }
复制代码
这样我们就全部写完了!以下是完整的主文件代码:



现在就差运行了!

3、运行
运行的话点击上方运行按钮,就是那个绿色的,上面带个三角形的,然后,选择runClient,等它加载,加载完成后,Mc就会加载出来了!


好了,这就是《我的世界新手模组教程(Forge 1.17)01:设置》的全部教程了!假如说你有疑问的话,可以在下面评论或者私信我,我会尽我所能来帮助你~
假如说这一期的教程有帮到你,就劳烦各位打点赏,毕竟写这个不容易
假如说你不想打赏的话,劳烦各位把一下代码复制到自己的签名里
  1. [b][url=https://www.mcbbs.net/forum.php?mod=viewthread&tid=1436336&page=1&extra=#pid28255052]我的世界新手模组教程(Forge1.17)01:设置[/url][/b]
复制代码
感谢阅读~





世界重构
貌似是第一次在茶馆以外的地方发言。
很不错啊,我先藏着,以后学了java再看看。
那么长的代码不折叠吗?仔细看了一下版规,好像没看到相关规定,不知道是不是看漏了。在问答版好像就要扣分了。

Jellofish83
bsy040511 发表于 2023-3-31 08:49
貌似是第一次在茶馆以外的地方发言。
很不错啊,我先藏着,以后学了java再看看。
那么长的代码不折叠吗?仔 ...

哦没注意哈哈,我再改一下。感谢提醒

teddyxlandlee
有没有一种可能,1.17已经是被淘汰的版本了
不妨看看这个帖子:从AppleSkin的下载量观察模组版本大趋势
如果帖子锁了就用挖掘卡铲一下

对于Forge平台,我更推荐写 1.18.2 的模组教程;不过大部分东西其实都不用改
此外,IDEA似乎比Eclipse更适合用于写模组——IDEA有极其牛逼的IntelliSense,还有Minecraft Development IDE插件。
相比之下,Eclipse的IntelliSense较为呆滞;它的操作习惯也不太适合新手,容易劝退

Jellofish83
teddyxlandlee 发表于 2023-3-31 15:23
有没有一种可能,1.17已经是被淘汰的版本了
不妨看看这个帖子:从AppleSkin的下载量观察模组版本大趋势
如 ...

ok,我看看我有没有能力换成1.18的,感谢提醒