【Forge】Minecraft 1.7.10 Mod开发研究

Mod已经创建好了,现在该把内容添加进来了。

首先建一个类来统一管理Mod中所有的物品的实例和实例的初始化。

建包的事就不提了,看着建吧。

public class ModItems {
    public static ItemKuroNekoBag kuroNekoBag;
    
    public static void init() {
        kuroNekoBag = new ItemKuroNekoBag();
    }
}

直接在主类中的preInit方法里用起来。

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
    ModItems.init();
}

然后把上面的ItemKuroNekoBag给创建出来,MC中的物品基类是net.minecraft.item.Item类,所以继承这个类。

MC的命名方式是Item×××、Block×××,可以敲个item看看自动提示,应该是所有物品都有,可以根据需要继承现成的物品。

建完类给一个无参构造方法,然后在构造方法里设置物品的各种属性,其中大部分是set×××。

setUnlocalizedName(NAME);
setCreativeTab(CreativeTabs.tabTools);
setMaxStackSize(1);
setTextureName(Constants.MOD_ID + ":" + NAME);
像这样

setCreativeTab决定了把这个道具放到创造模式的物品栏中的哪一个标签页里,CreativeTabs是个枚举类,还可以自己创建,不过暂时用不着。

setMaxStackSize决定了这个物品最大可以堆叠多少个,背包肯定不能堆叠,所以就给个1。

然后是两个比较麻烦的方法,先说setTextureName,这个方法用来设置物品的材质,接受的参数格式是主类中用注解设置的modID加上一个冒号再加上图片的名字,不包含后缀名。

第二篇里说了工程目录中除了放代码的java文件夹还有一个放资源文件的resources文件夹,里面一开始是空的,需要自己建路径。大部分文件都需要放到assets文件夹下,在assets文件夹下需要建立一个以modID命名的文件夹作标识,而材质文件又要放到其中的textures文件夹下,现在需要的物品材质还要放到更深一层的items文件夹下,这些文件夹自然是要自己来建的。

于是一顿创建之后就成了这样:assets/nekobags/textures/items/kuronekobag.png。

因为我材质的文件名和物品的名字弄成了一样的,所以就直接用了常量,如果图片名不一样话就照着改。

之后再说setUnlocalizedName这个方法。

和Android的处理方式差不多,为了多语言兼容,同一个名字的各种翻译是统一用配置文件来管理的,这个方法设置的顾名思义是一个统一的标志,我这里直接叫kuronekobag。

然后创建语言文件,同样在resources文件夹下,像这样:assets/nekobags/lang/

然后在这个文件夹下面创建各语种的语言文件,我这里只用中英两种,en_US.lang和zh_CN.lang,需要其他语言依此类推,看不懂文件名的话需要自行补语言代码知识。

里面是各种键值对,比如这样:

item.kuronekobag.name=黑猫背包

如果是方块的名称的话就把item改成tile。

这样一个物品就创建好了,然后需要把它注册到游戏里面。

在物品构造方法里加上一行代码:

GameRegistry.registerItem(this, NAME);

保存编译运行,这个黑猫背包就可以在创造模式物品栏里的工具那栏最下面找到了。

原文地址:https://www.cnblogs.com/chihane/p/4182363.html