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);
保存编译运行,这个黑猫背包就可以在创造模式物品栏里的工具那栏最下面找到了。