package joshie.harvest.core.base.item; import joshie.harvest.core.HFTab; import joshie.harvest.core.helpers.TextHelper; import joshie.harvest.core.lib.HFModInfo; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; import static joshie.harvest.core.lib.HFModInfo.MODID; public abstract class ItemHFBase<I extends ItemHFBase> extends Item { public ItemHFBase() { this(HFTab.FARMING); } public ItemHFBase(CreativeTabs tab) { setCreativeTab(tab); } @Override public String getItemStackDisplayName(ItemStack stack) { return TextHelper.localize(getUnlocalizedName()); } @Override @Nonnull public String getUnlocalizedName() { return HFModInfo.MODID + "." + super.getUnlocalizedName().replace("item.", ""); } @SuppressWarnings("unchecked") public I register(String name) { setUnlocalizedName(name.replace("_", ".")); setRegistryName(new ResourceLocation(MODID, name)); GameRegistry.register(this); if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) { registerModels(this, name); } return (I) this; } @SideOnly(Side.CLIENT) public void registerModels(Item item, String name) { if (item.getHasSubtypes()) { List<ItemStack> subItems = new ArrayList<>(); if (item.getCreativeTabs().length > 0) { for (CreativeTabs tab : item.getCreativeTabs()) { item.getSubItems(item, tab, subItems); } } for (ItemStack stack : subItems) { String subItemName = item.getUnlocalizedName(stack).replace("item.", "").replace(".", "_"); ModelLoader.setCustomModelResourceLocation(item, item.getDamage(stack), new ModelResourceLocation(new ResourceLocation(MODID, subItemName), "inventory")); } } else { ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(new ResourceLocation(MODID, name), "inventory")); } } }