前言
本篇主要是讲解如何添加自己的物品
踩了不少坑,浪费了不少时间:(
正文
要想添加一个新物品,首先需要在src/main/java目录下新建一个包
包名推荐采用作者id+modid的格式,全小写字符
接下来在包下再创建一个名为item的子包
在子包内创建一个名为ItemRegistryHandler的类
同时添加@Mod.EventBusSubscriber注解,使得它成为监听注册事件的类
@Mod.EventBusSubscriber(modid = "urmod")
public final class ItemRegistryHandler
{
public static Item TEST_ITEM;
@SubscribeEvent
public static void registerItem(RegistryEvent.Register<Item> event)
{
event.getRegistry().registerAll(
TEST_ITEM = new Item()
.setRegistryName("urmod:test_item")
.setCreativeTab(TEST_TAB)
.setUnlocalizedName(urmod.MODID + "testItem")
.setMaxStackSize(64),
);
}
public static final CreativeTabs TEST_TAB = new CreativeTabs("test_tab")
{
@Override
public ItemStack getTabIconItem()
{
return new ItemStack(Items.DIAMOND);
}
};
}
接下来讲解上面提到的代码
第五行到第十八行,创建了一个注册名为test_item的物品
.setRegistryName用处为定义物品的唯一标识符
.setCreativeTab意为该物品属于创造模式中的TEST_TAB物品栏,创造该物品栏的代码为第十九行到第二十六行(return new ItemStack(Items.DIAMOND);意为该物品栏的标志是钻石)
.setUnlocalizedName(urmod.MODID + "testItem")它的作用为标识物品较为可读的名称,可以配合语言文件实现翻译
.setMaxStackSize(64)定义了该物品的最大堆叠数量
进行到这里,你便已经成功的创建了你的第一个物品,但它现在既没有一个自己的名字,也没有属于自己的材质
接下来再次在item包下新建一个ModelMapper类
@Mod.EventBusSubscriber(value = Side.CLIENT,modid = "urmod")
public final class ModelMapper
{
@SubscribeEvent
public static void onModelReg(ModelRegistryEvent event)
{
ModelLoader.setCustomModelResourceLocation(ItemRegistryHandler.TEST_ITEM,0,
new ModelResourceLocation(ItemRegistryHandler.TEST_ITEM.getRegistryName(),"inventory"));
}
}
这样,通过监听ModelMapper并且调用ModelLoader类中的setCustomModelResourceLocation方法成功注册了物品材质,该方法三个参数第一个决定物品本身,第二个是物品的meta值,就像橡木与深色橡木的区别就是在meta值,第三个则将物品的模型定义文件指向了java/resources/asset/urmod/models/item/test_item.json
在上述目录创建名为test_item.json的文件
{
"parent": "item/generated",
"textures": {
"layer0": "urmod:items/test_item"
}
}
意为采用原版默认模型item/generated,并指定它唯一一层材质位于asset/urmod/textures/items
只需要预先将png格式的材质文件命名为test_item.png并放置在此文件夹下就好了
(16*16与32*32像素都是可行的)
最后,为了让你的物品存在一个自己的名字
在asset/urmod/lang文件夹下创建两个文件en_us.lang与zh_cn.lang
en_us.lang
item.urmod.testItem.name=Test Item
zh_cn.lang
item.urmod.testItem.name=测试物品
做完这些之后,重启游戏,你便能在你的创造模式物品栏中发现你所添加的物品:)
后记
最好的后记就是没有后记
Comments NOTHING