我的世界1.20.1模组开发---3.数据生成

发布时间 2023-10-23 18:02:54作者: 小明同学404

介绍

  我们在模组里每添加一个物品或方块后,在游戏里显示的都只是马赛克,因为我们还没有为我们的物品或方块设置对应的模型贴图。我的世界游戏里,每一个物品和方块我们所看到的样子都是一张张贴图,就是画的像素画,贴在了一个模型表面。我们想设置对应的贴图,需要写一个对应的json文件来描述这个物品,如下图所示。但是,由于是一个json文件,编译器中对json文件并没有代码提示和相应的错误提示,我们手写很容易写错,出现各种各样的bug。当然也有更高效的方式,我们可以用forge为我们提供的json文件生成器生成对应的json文件。下面就开始正式介绍。

  ModelProvider类

  我们的自定义类要继承ItemModelProvider类,这是forge为我们提供的自动生成json数据的类。从他的名字我们不难看出,这个类是用来生成Item对应的模型的json的文件的类,所以我们自定义的生成数据的类要继承这个类。但是ItemModelProvider类也是继承于ModelProvider类,大部分的方法都在这个最基础的父类里面,所以我们进入ModelProvider类里看看我们能用得上哪些方法。

  在我们的自定义类里面,我们要重写父类的registerModels方法,这个方法就是我们最主要的方法,需要添加的物品需要生成对应的json文件要写在这个方法里。

  我们给一个物品添加贴图时,首先要知道这个物品是什么,然后是贴图资源的位置,有了这两个参数我们就能成功的为一个物品添加贴图。这里我们要用到ModelProvider类里的withExistingParent方法,因为游戏里有给物品的通用材质,所以我们可以继承这个材质,把这个通用材质作为我们的父材质继承过来用。

    public T withExistingParent(String name, ResourceLocation parent) {
        return getBuilder(name).parent(getExistingFile(parent));
    }

  这个方法需要传入物品的名称和对应的父材质资源,返回一个泛型对象也就是我们的自定义类的对象,得到的对象会设置好对应的父材质,我们再调用这个对象身上的texture方法来设置我们的物品贴图即可。

  代码

  这么说着可能确实比较抽象,我理解的也不是太透彻,对于初学者来说,我们不需要太过于要求自己明白原理,起步阶段会用就行x.x。下面的代码写多了以后慢慢也能理解的。