【干货】《我的世界》Mod开发教程03:制作简单的方块


3楼猫 发布时间:2024-12-20 13:47:30 作者:甄别 Language

【干货】《我的世界》Mod开发教程03:制作简单的方块-第0张

好,那么这一期教程的内容主要是关于版本管理和简单的注册方块与物品。版本管理很简单,你只需要在网上搜索git,然后点击下载,选择适合你系统的版本,比如Windows 64位,然后安装即可。安装完成后,在IDE里面找到设置,搜索git,然后在版本控制里面配置好git。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第1张

测试一下,如果正确的话就可以了,如果不行可能需要重启电脑。然后我们可以点击左下角的git,如果你还没有创建仓库的话,会有一个创建git存储库的选项,点击即可。然后我们再来提交一次,你可以看到,我已经把我们用不着的东西都删完了,现在再提交一下。关闭提交窗口,然后勾选上要提交的文件,写好提交信息,然后点击提交。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第2张

提交完成后,我们再点击git,就可以看到我们刚才提交了一个新模块的提交。现在假如说我乱改了一些东西,不知道原来长啥样了,怎么办呢?我们找到刚才的提交点,右键,然后将当前分支重置到此处,选中,然后点击重置即可。这样就可以还原到之前的版本了。版本管理工具非常方便。接下来我们来注册方块和物品。首先我们看看forge的文档是怎么写的,他有两个推荐的方法,一个是DEFAREGISTER,一个是register event。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

我们就用DEFAREGISTER这个方法。我们直接学着文档里面的写法,然后把该导入的东西都导入一下。为什么我不直接给你写而是要从文档里找呢?因为版本总会更新,每个版本可能会有变化,所以我希望即使过了几个版本,教程还是能用。这个文档虽然不是特别详细,但可以作为参考,因为有一些复杂的东西光看文档是写不出来的,需要实际操作和经验积累。

首先,我们已经复制了注册方块的部分,接下来我们照着写注册方块的代码。

我们可以使用 psf 来声明我们的方块。然后使用 RegistryObject<Block> 来声明一个方块对象,我们直接使用之前注册的方块。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

然后,我们需要使用 Lambda 表达式来创建一个新的方块实例。我们可以设置一些属性,比如硬度为 3.0f,还可以设置声音类型。我们可以从选项中选择合适的声音类型,比如作物声音。

接着,我们需要给我们要注册的方块命名,我们就使用 myBlock。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

写完这个之后,我们需要在构造函数中将其注册到游戏中。

我们可以看看他怎么写的,但是这里他注册的是方块,如果我们以后还需要注册物品,注册其他的东西,这个东西肯定是要用很多次的,所以我们直接把这个定义成一个变量。

然后导入,直接注册我们的 blocks,然后调用 register bus 就可以了。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

好,我们直接运行一下看看效果。

进入游戏后,我们可以在物品栏里面看到我们注册的方块吗?没有,因为我们没有定义它在哪个位置。我们尝试搜索物品,但是并没有搜到。所以我们直接使用命令来放置方块。使用命令 setblock 在我们的位置创建这个方块。这样就出来了我们注册的方块。然后我们可以切换到生存模式来看一下它的硬度。看起来还挺硬的,因为我们刚才设置了硬度比较大。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

但是每次都靠命令来创建方块肯定不方便,我们肯定是要把它拿在手上。但是按中键的时候我们却发现有一个报错,说这个没有对应的物品。这是什么意思呢?实际上,方块在世界上是方块,但在你的背包里,它是一种物品。所以我们需要给这个方块注册一个对应的物品。

因此,我们需要先定义一个注册物品的变量。

首先,我们还是一样,复制 VivStaticFinal,然后使用 DefaultRegister 来声明注册物品。我们使用 items 来声明一个物品对象,直接使用 DefaultRegister,然后点击创建。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

然后,我们需要按照 Forge Registries 来写。我们选择 items,然后输入 mod ID。

其实,大多数游戏中的方块,当拿在手上时,效果都是一样的。放置方块的物品实际上都是一样的,右键把方块放下去。所以 Minecraft 把这些东西都为我们写好了,我们直接用就会有一个特殊的物品类型,叫做 BlockItem。

我们还是一样,使用 RegistryObject<Item>,myBlockItem 等于 items 点 register。这是一样的,因为那是物品,所以不影响。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

然后,我们创建一个新的物品,new Item(BlockItem) ,需要传入一个 block。我们直接使用 block 点 get,然后 new Item 点 Properties 就可以了,因为我们不需要任何特殊的属性。

然后,block 点 items 点 register bus,这样就注册好了。

我们在游戏中对着这个物品点击中键,就会发现我们的物品已经存在,它的名字好像没有翻译,但是没关系,好像我们就有了,对吧?

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

我们会发现一个问题,就是这个材质丢失了,没有材质,也没有名字,这个东西放在手上好像也不好看,太大了,很遮挡视野。我们找个其他的方块对比一下,发现其他方块在手上很小,也不遮挡视野。

那他们是怎么做到的呢?很简单,我们不知道他们怎么做到的,所以我们去学。

那怎么样给我们的物品和方块添加材质呢?首先,我们需要找到资源文件夹,就是 resource,然后在这里打开文件资源管理器,找到了。

然后,我们新建一个文件夹,叫做 assets,用来存储我们的材质数据资源。然后我们再新建一个名字,就是我们的 mod ID,表示我们的资源是要应用在这个命名空间下的。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

我们按照原版的方式,需要创建 blockstate、model 和 textures。我们把这几个都建出来。

首先,接下来就是要把这些东西填充进去了,对吧?在 models 里面,我们也是需要的,需要一个 block,还要一个 item。然后在 textures 里面,我们也需要一个 block。这样就算创建好了,跟他这个目录里面都是有的,都是对得上的,block 和 item。

那我们这些东西创建好了以后,我就介绍一个工具,叫做这个 Blockbench,也可以在网上直接下载的。我们就直接选这个 Java 版方块物品点创建新模型。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

然后,负极模型怎么选的,我们可以看一下原版的,他们这些 models 的负极模型都是怎么选的。因为假如说我们现在就创建的是一个完整的方块,我们也找一个完整的方块啊。假如翻不到一个完整的话,就选一个煤炭块,可以啊。它的负极模型是这个。

然后,我们给它直接复制过来,文件名是我们的这个 my block,因为我们是要给这个方块创建材质的嘛。然后我们就点确定。

然后我们在这里就可以添加一个块儿,我们要做的是完整的,对吧?完整的一块,所以我们这里就是十六十六十六,这样就是完整的。然后我们可以点到绘画模式,然后先在这里创建一个纹理名称的,就是这个 my block 文件夹,就写我们的这个 mod ID,就是 test mode,然后点确定。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

这里它就自动给我们生成了一个模型啊,你可以拿个画笔在这里画几下,随便画几道,然后保存。保存的话,首先是保存这个模型的这个材质啊,我们就找到我们刚才的这个 src/main/resource,assets/test mode/textures/block,给它保存到这里。

然后,这里呢我们就选择这个 Java Block Model,选它,然后把这个文件保存到我们的这个 models/block 里面。好,这样就保存好了,然后这个软件的功能就到这里,它已经帮我们把最麻烦、最难写的东西已经写完了。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

那接下来呢,我们就看看还缺什么?我们还缺 block states 和 model 里面的 item,这个好说,我们直接找 item 里面也找一个完整方块的东西,复制一下 clay 吧。这是 parent 什么,这个我们就忽略它。复制过来,改成我们自己的名字,就是 my block。这里 parent 就是我们自己的 test mode,然后 block my block。

然后,这个 block states 我们就也找一个啊,我们就还是找一个 log states 里面就找个 dirt 吧。这个就不错,我们直接复制过来,改成我们自己的名字,然后这个里东西的 model,当然要改成我们自己的 test mode my block。

在这里刷新检查一下 assets,点 test mode,然后 texture block 里面是我们的材质,models block 里面是我们的这个自动创建的这个文件,我们可以格式化一下,可以看看他是怎么写的,然后 item 里面有这是我们这个 item,然后 models 里面就是这些,然后 block states 这是我们刚才复制过来的。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

有了这些文件之后,我们直接给它运行起来。你会发现,哇,我们这个东西有材质了。好,在这个背包里面也是有材质的,对吧?只是它现在还没有名字。由于我们的模型比较简单,所以我们也没有特别复杂的功能需求。这就是我们这个方块的材质非常简单,你可以自己随便画。但是,没有名字是不行的,我们再给它起个名字。

那我们就在 assets/test_mode 下面参照原版创建一个文件夹,叫做 lang。然后在 lang 里创建一个文件,叫做 en_us.json 表示这是英语的。在这个文件里,我们写上 "block.test_mode.my_block": "Block",然后复制一份为中文 "block.test_mode.my_block": "我的方块"。重新启动游戏,你会看到方块的名字变成了“我的方块”。

【干货】《我的世界》Mod开发教程03:制作简单的方块-第3张

这样方块就有了自己的名字。我们这样就简单地创建了一个方块,以及方块所对应的物品。但是,之后我们需要对这个东西增加更多的功能。这一期先到这里,下一期我们开始给这个东西加功能。


© 2022 3楼猫 下载APP 站点地图 广告合作:asmrly666@gmail.com