Posted April 27, 201312 yr Hi, I'm trying to make a piece of armor that appears enchanted when you wear it, without having an enchantment. There is a method in ItemStack called isItemEnchanted, but i'm not sure if I can use that to be able to get desired results. I already have hasEffect applied to the Item, but it doesn't effect the rendering on the player while worn. Please help! package Bionicle; import java.util.List; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockDispenser; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.dispenser.IBehaviorDispenseItem; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.Icon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.IArmorTextureProvider; public class ItemMask extends ItemArmor implements IArmorTextureProvider { public static final String[] textureName = new String[] {"Gold", "Red", "Green", "Brown", "Blue", "White", "Black"}; @SideOnly(Side.CLIENT) private Icon[] field_94594_d; //Always set to 0 for Masks public final int armorType; public final int damageReduceAmount; /** * Used on RenderPlayer to select the correspondent armor to be rendered on the player: 0 is cloth, 1 is chain, 2 is * iron, 3 is diamond and 4 is gold. */ public final int renderIndex; private final EnumArmorMaterial material; @SideOnly(Side.CLIENT) private Icon field_94605_cw; @SideOnly(Side.CLIENT) private Icon field_94604_cx; public ItemMask(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4, boolean par5) { super(par1, par2EnumArmorMaterial, par3, par4); this.material = par2EnumArmorMaterial; this.armorType = par4; this.renderIndex = par3; this.hasSubtypes = par5; this.damageReduceAmount = 0; this.maxStackSize = 1; this.setMaxDamage(0); this.setCreativeTab(CreativeTabs.tabCombat); } public String getArmorTextureFile(ItemStack par1) { if(this.hasSubtypes) { return "/mods/Click_Bionicle/armor/" + this.getUnlocalizedName().substring(5) + "_" + par1.getItemDamage() + ".png"; } return "/mods/Click_Bionicle/armor/fire_1.png"; } @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack par1ItemStack) { return !(par1ItemStack.getItemDamage() > 0); } @SideOnly(Side.CLIENT) /** * Gets an icon index based on an item's damage value */ public Icon getIconFromDamage(int par1) { int j = MathHelper.clamp_int(par1, 0, 6); return this.field_94594_d[j]; } @SideOnly(Side.CLIENT) public void updateIcons(IconRegister par1IconRegister) { if(this.hasSubtypes) { this.field_94594_d = new Icon[7]; for (int i = 0; i < 7; ++i) { this.field_94594_d[i] = par1IconRegister.registerIcon(Bionicle.modid + ":" + this.getUnlocalizedName().substring(5) + textureName[i]); } } if(!this.hasSubtypes) { this.field_94594_d = new Icon[1]; for (int i = 0; i < 1; ++i) { this.field_94594_d[i] = par1IconRegister.registerIcon(Bionicle.modid + ":" + this.getUnlocalizedName().substring(5)); } } } /** * Return whether this item is repairable in an anvil. */ public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return true; } @SideOnly(Side.CLIENT) /** * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) */ public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) { if(this.hasSubtypes) { for (int j = 0; j < 7; ++j) { par3List.add(new ItemStack(par1, 1, j)); } } else { par3List.add(new ItemStack(par1, 1, 0)); } } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { int i = EntityLiving.getArmorPosition(par1ItemStack) - 1; ItemStack itemstack1 = par3EntityPlayer.getCurrentArmor(i); if (itemstack1 == null) { par3EntityPlayer.setCurrentItemOrArmor(i + 1, par1ItemStack.copy()); //Forge: Vanilla bug fix associated with fixed setCurrentItemOrArmor indexs for players. par1ItemStack.stackSize = 0; } return par1ItemStack; } /** * Asks if the helmet equipped has metadata, and then what mask it is an negates fall damage */ public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack stack) { ItemStack helmet = player.getCurrentItemOrArmor(4); if(this.hasSubtypes) { if(helmet.getItem() == Bionicle.maskMiru || !(helmet.getItemDamage() > 0)) { player.fallDistance = 0; } } } }
April 27, 201312 yr You need this method in your item class: public boolean hasEffect(ItemStack is){ return true; } Writing a steampunk mod called MineTech, and author of a long dead fishing mod
April 27, 201312 yr Author You need this method in your item class: public boolean hasEffect(ItemStack is){ return true; } Look agian, I do.
April 28, 201312 yr Yeah, I misunderstood and thought you needed the item enchanty I haven't done anything with armour myself (for shame) so I can'tt really help, sorry Writing a steampunk mod called MineTech, and author of a long dead fishing mod
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.