package joshie.mariculture.core.util.item; import joshie.mariculture.core.helpers.StringHelper; import joshie.mariculture.core.util.MCTab; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; import static joshie.mariculture.core.lib.MaricultureInfo.MODID; public abstract class ItemFoodMC<E extends Enum<E>> extends ItemFood implements MCItem { protected final E[] values; public ItemFoodMC(Class<E> clazz) { this(MCTab.getCore(), clazz); } public ItemFoodMC(CreativeTabs tab, Class<E> clazz) { super(0, 0.0F, false); values = clazz.getEnumConstants(); setHasSubtypes(true); } @Override public int getHealAmount(ItemStack stack) { return getHealAmount(getEnumFromStack(stack)); } public abstract int getHealAmount(E e); @Override public float getSaturationModifier(ItemStack stack) { return getSaturationModifier(getEnumFromStack(stack)); } public abstract float getSaturationModifier(E e); public ItemStack getStackFromEnum(E e) { return new ItemStack(this, 1, e.ordinal()); } public E getEnumFromStack(ItemStack stack) { return values[Math.max(0, Math.min(values.length, stack.getItemDamage()))]; } @Override public int getMetadata(int damage) { return damage; } @Override public String getItemStackDisplayName(ItemStack stack) { String unlocalized = getUnlocalizedName(); String name = stack.getItem().getUnlocalizedName(stack); return StringHelper.localize(unlocalized + "." + name); } @Override public int getSortValue(ItemStack stack) { return 500; } @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List<ItemStack> list) { for (E e: values) { list.add(new ItemStack(item, 1, e.ordinal())); } } @SideOnly(Side.CLIENT) public void registerModels(Item item) { for (int i = 0; i < values.length; i++) { ModelLoader.setCustomModelResourceLocation(item, i, new ModelResourceLocation(new ResourceLocation(MODID, getUnlocalizedName().replace(MODID + ".", "") + "_" + values[i].name().toLowerCase()), "inventory")); } } }