package minefantasy.item; import java.util.List; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumMovingObjectType; import net.minecraft.util.Icon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.StatCollector; import net.minecraft.world.World; public class ItemBandage extends Item { private String[] types = new String[]{"crude", "basic", "tough"}; private Icon[] icons; public ItemBandage(int i) { super(i); setMaxStackSize(16); setCreativeTab(CreativeTabs.tabTools); setHasSubtypes(true); setMaxDamage(0); } public void getSubItems(int id, CreativeTabs tabs, List list) { for (int n = 0; n < types.length ; ++n) { ItemStack item = new ItemStack(id, 1, n); list.add(item); } } @Override public Icon getIconFromDamage(int id) { return icons[id]; } @Override public String getItemDisplayName(ItemStack item) { int i = item.getItemDamage(); return StatCollector.translateToLocal("item.bandage."+ types[i] +".name"); } @Override public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player) { return heal(player, player, item); } @Override public boolean itemInteractionForEntity(ItemStack itemstack, EntityPlayer player, EntityLivingBase entity) { if(player.isSneaking()) { heal(player, entity, itemstack); return true; } return super.itemInteractionForEntity(itemstack, player, entity); } private ItemStack heal(EntityPlayer player, EntityLivingBase toHeal, ItemStack item) { if(player.worldObj.isRemote) { return item; } if(toHeal != null) { if(toHeal.getHealth() <= (toHeal.getMaxHealth()-1F) && toHeal.getActivePotionEffect(Potion.regeneration) == null && !toHeal.isBurning()) { toHeal.worldObj.playSoundEffect(toHeal.posX, toHeal.posY, toHeal.posZ, "dig.cloth", 1.0F, 0.5F); player.swingItem(); if(!player.worldObj.isRemote) { toHeal.addPotionEffect(new PotionEffect(Potion.regeneration.id, 200, item.getItemDamage(), true)); if(!player.capabilities.isCreativeMode) { item.stackSize --; if(item.stackSize <= 0) { } } } } } return item; } @SideOnly(Side.CLIENT) @Override public void registerIcons(IconRegister reg) { icons = new Icon[types.length]; for (int i = 0; i < types.length; ++i) { this.icons[i] = reg.registerIcon("minefantasy:Misc/bandage_" + i); } } }