我的世界fabric-1.21.1mod制作心得一——物品注册
我的世界fabric-1.21.1mod制作心得一——物品注册
‘祈止’主要架构
主要java文件
下文统一用”A“代表您mod的名字,用”modid”代表您mod的modid。
AClient.java
此文件是必备文件,用于游戏客户端的主要内容。但与本篇文章无关。
AMod.java
此文件也是必备文件,内容非常重要。
1 | public class AMod implements ModInitializer { |
AModDataGenerator.java
这是最后一个必备文件,以上三个java文件就是fabric必须的三个文件,位置在您的项目层最内部的mixin文件夹中(比如src/main/java/com/name/A/mixin)。不过这个文件我们还用不到,所以略过。
AModItems.java
现在让我们进入主题,在目录src/main/java/com/name/A下创建item文件夹,并在此文件夹中创建ModItems.java。
您可以自由命名,但建议用意义更加明确的名称。这里要提醒您的是在我的世界中,复数词表示注册,单数词表示内容。比如Item和Items就是不同的。如果您想要注册物品那么建议您创建如ModItems的类名,以保证和原版风格相同,避免混乱。
下面给出此类的原版写法:
1 | public class ModItems { |
官方的这种写法或许有某种考虑,但我们完全可以用更简单发方法来实现:
1 | public static Item registerItems(String id, Item item){ |
好了我们完成了物品注册的方法,现在要开始注册物品了!
上文的register注册方法,它们的返回值是Item类。现在我们需要使用它们注册物品,就需要用一个Item变量来接收这个Item。显然这个变量应该是静态的常量。
1 | public static final Item MOD_ITEM = registerItem("物品id",new Item(new Item.Settings())); |
显然,我们注册的物品是一个Item静态常量。此后再要注册物品参考上例,全部写在这个类中便可。也就是我们上文中所说的,Item等单数类名是类本身,Items这样的复数类名类是用于注册的。
最后还有一步,你还记得我们在必备类中调用了一个静态方法吗?现在让我们来编写它!
1 | public static void registerItems(){ |
以上我们就完成了物品注册的全部过程。但想要让物品能够正常使用,还需要一些工作。
配置的json文件
文件结构
src/main/resources/assets/id 此文件夹下,有您需要创建三个文件夹:“lang”,“models”,“textures”。
这些文件夹的作用:
”lang“文件夹是语言文件夹,您需要创建语言json文件。
“models”文件夹是贴图路径文件夹,您需要创建规定贴图路径的json文件。
“textures”文件夹是贴图文件夹,这里放置您的贴图文件。
lang文件夹
语言文件的文件名有硬性规定。
比如:英语文件(默认文件)是“en_us.json”,中文是“zh_cn.json”;
书写方法如下:
1 | { |
models文件夹
此文件夹之下需要两个文件夹:“block”,“item”。分别装方块和物品的json文件。
需要注意的是文件名建议和物品或方块的id一致。
如果物品id用了分类前缀,可以再加一个文件夹,名字就是您的分类前缀名。
写法如下:
1 | { |
textures文件夹
此文件夹之下需要两个文件夹:“block”,“item”。分别装方块和物品的json文件。
同样的文件名建议和物品或方块的id一致。
如果物品id用了分类前缀,可以再加一个文件夹,名字就是您的分类前缀名。
注意点:所有的贴图文件必须是png格式!!!