this.setHasSubtypes(true);
, чтобы пометить этот предмет, что он имеет подтипы. Далее тебе нужно в этом же конструкторе вызвать this.setMaxDamage(ЧИСЛО);
, чтобы опеределить диапазон метадат от 0 до итема с последней метадатой. Это нужно чтобы ты мог сравнивать субтипы по метадате./**
* Создание субтипов
* @param item TODO: Добавить Javadoc
* @param tab TODO: Добавить Javadoc
* @param list TODO: Добавить Javadoc
*/
@Override
public void getSubItems(Item item, CreativeTabs tab, List list) {
for (int i = 0; i < this.icons.length; ++i) {
list.add(new ItemStack(item, 1, i));
}
}
/**
* Регистрирует иконку для каждого подтипа статы
* @param reg TODO: Добавить Javadoc
*/
@Override
public void registerIcons(IIconRegister reg) {
for (int i = 0; i < this.icons.length; ++i) {
this.icons[i] = reg.registerIcon(registerIconPrefix + (i + 1));
}
}
/**
* Возвращает иконку, соответствующую субтипу.
* @param meta Порядковый номер субтипа
* @return Икнока, соответвующая субтипу
*/
@Override
public IIcon getIconFromDamage(int meta) {
if (meta > this.icons.length) {
meta = 0;
}
return this.icons[meta];
}
@Override
public boolean showDurabilityBar(ItemStack stack) {
return false;
}
public class ItemIngots extends Item
{
public static String[] names =
{
"cobaltum", //0
"magnesium", //1
"nickel" //2
};
public ItemIngots()
{
super();
this.setMaxDamage(0);
this.setHasSubtypes(true);
this.setMaxStackSize(64);
this.setUnlocalizedName("ingots");
this.setCreativeTab(GSCreativeTabs.GSItemsTab);
}
@Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list)
{
if (tab == GSCreativeTabs.GSItemsTab || tab == CreativeTabs.SEARCH)
{
for (int i = 0; i < ItemIngots.names.length; i++)
{
list.add(new ItemStack(this, 1, i));
}
}
}
@Override
public String getUnlocalizedName(ItemStack par1ItemStack)
{
return "item." + this.names[par1ItemStack.getItemDamage()];
}
@Override
public int getMetadata(int par1)
{
return par1;
}
}
package ru.bs.vancraft.items.metadata.mallet;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import ru.bs.vancraft.main;
public class MalletTypes extends Item
{
public static String[] names =
{
"cobaltum", //0
"magnesium", //1
"nickel" //2
};
public MalletTypes()
{
super();
this.setMaxDamage(0);
this.setHasSubtypes(true);
this.setMaxStackSize(64);
this.setUnlocalizedName("mallet");
this.setCreativeTab(main.CREATIVE_TAB);
}
@Override
public void getSubItems(CreativeTabs tab, NonNullList<ItemStack> list)
{
if (tab == main.CREATIVE_TAB || tab == CreativeTabs.SEARCH)
{
for (int i = 0; i < MalletTypes.names.length; i++)
{
list.add(new ItemStack(this, 1, i));
}
}
}
@Override
public String getUnlocalizedName(ItemStack par1ItemStack)
{
return "item." + this.names[par1ItemStack.getItemDamage()];
}
@Override
public int getMetadata(int par1)
{
return par1;
}
}
public class InitItems
{
public static final List<Item> ITEMS = new ArrayList<Item>();
//Material
public static final ToolMaterial EMERALD_DIAMOND_M = EnumHelper.addToolMaterial("emerald_diamond_m", 4, 3999, 13.0F, 4.0F, 10);
//Items
public static final Item HAMMER = new ToolHammer("tool_hammer");
public static final Item IRON_STICK = new ItemIronStick("iron_stick");
public static final Item FIRE_SWORD_B = new ItemFireSwordB("fire_sword_b");
public static final Item MAGIC_ESSENCE = new ItemMagicEssence("magic_essence");
public static final Item DUST_SEED = new ItemDustSeed("dust_seed");
public static final Item DUSTY_VERTEX = new ItemDustyVertex("dusty_vertex");
public static final Item WOODEN_MALLET = new ItemWoodenMallet("wooden_mallet");
public static final Item IRON_MALLET = new ItemIronMallet("iron_mallet");
public static final Item DIAMOND_MALLET = new ItemDiamondMallet("diamond_mallet");
public static final Item STONE_MALLET = new ItemStoneMallet("stone_mallet");
public static final Item DAISY_PETAL = new ItemDaisyPetal("daisy_petal");
//resources
public static final Item B_EM_DIAMOND = new ItemBEmDiamond("b_em_diamond");
public static final Item EM_DIAMOND = new ItemEmDiamond("em_diamond");
public static final Item DIAMOND_NUGGET = new ItemDiamondNugget("diamond_nugget");
public static final Item GROWN_CRYSTAL = new ItemGrownCrystal("grown_crystal");
public static final Item UNSTABLE_CRYSTAL = new ItemUnstableCrystal("unstable_crystal");
//Tool
public static final ItemPickaxe EMERALD_DIAMOND_PICKAXE = new ItemEmeraldDiamondPickaxe("emerald_diamond_pickaxe", EMERALD_DIAMOND_M);
public static final ItemSword FIRE_SWORD = new ItemFireSword("fire_sword", EMERALD_DIAMOND_M);
}
//где-нить в init
int i = 0;
for(String ingots : ItemIngots.names)
registerItemJson(GalaxySpace.TEXTURE_PREFIX, GSItems.INGOTS, i++, "ingots/" + ingots);
public static void registerItemJson(String texturePrefix, Item item, int meta, String name)
{
FMLClientHandler.instance().getClient().getRenderItem().getItemModelMesher().register(item, meta, new ModelResourceLocation(texturePrefix + name, "inventory"));
}
@Override
public void registerVariants()
{
addVariant("ingots", "ingots/", ItemIngots.names);
}
//Это где-нить в хандлере эвентов
@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
Mod.proxy.registerVariants();
}
private static void addVariant(String name, String folder, String... variants)
{
Item itemBlockVariants = Item.REGISTRY.getObject(new ResourceLocation(GalaxySpace.MODID, name));
ResourceLocation[] variants0 = new ResourceLocation[variants.length];
for (int i = 0; i < variants.length; ++i) {
variants0[i] = new ResourceLocation(GalaxySpace.MODID + ":" + folder + variants[i]);
}
ModelBakery.registerItemVariants(itemBlockVariants, variants0);
}