Posted May 5, 201312 yr Hello everyone! Today I updated my mod to 1.5.2, and everything seems to be working exept for my bow animation. It worked fine in 1.5.1, but not anymore. It also broke all of my other item textures that I used the @Override public void updateIcons(IconRegister iconRegister) { iconIndex = iconRegister.registerIcon("Folder:Texture"); } thing for, but I know that I can use the .setUnlocalizedName("Folder:Texture") for that, but you cant do that with a bow animation. Here is the bow class that worked in 1.5.1: package mods.crystalia.common; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.ArrowLooseEvent; import net.minecraftforge.event.entity.player.ArrowNockEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class BaconiteBow extends Item { public BaconiteBow(int par1) { super(par1); this.maxStackSize = 1; this.setMaxDamage(500); this.setCreativeTab(CreativeTabs.tabCombat); } /** * called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount */ public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) { int j = this.getMaxItemUseDuration(par1ItemStack) - par4; ArrowLooseEvent event = new ArrowLooseEvent(par3EntityPlayer, par1ItemStack, j); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return; } j = event.charge; boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0; if (flag || par3EntityPlayer.inventory.hasItem(Item.arrow.itemID)) { float f = (float)j / 20.0F; f = (f * f + f * 2.0F) / 3.0F; if ((double)f < 0.1D) { return; } if (f > 1.0F) { f = 1.0F; } EntityArrow entityarrow = new EntityArrow(par2World, par3EntityPlayer, f * 2.0F); entityarrow.setFire(100); if (f == 1.0F) { entityarrow.setIsCritical(true); } int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack); if (k > 0) { entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D); } int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack); if (l > 0) { entityarrow.setKnockbackStrength(l); } if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0) { entityarrow.setFire(2000); } par1ItemStack.damageItem(1, par3EntityPlayer); par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F); if (flag) { entityarrow.canBePickedUp = 2; } else { par3EntityPlayer.inventory.consumeInventoryItem(Item.arrow.itemID); } if (!par2World.isRemote) { par2World.spawnEntityInWorld(entityarrow); } } } public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { return par1ItemStack; } /** * How long it takes to use or consume an item */ public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 72000; } /** * returns the action that specifies what animation to play when the items is being used */ public EnumAction getItemUseAction(ItemStack par1ItemStack) { return EnumAction.bow; } /** * 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) { ArrowNockEvent event = new ArrowNockEvent(par3EntityPlayer, par1ItemStack); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return event.result; } if (par3EntityPlayer.capabilities.isCreativeMode || par3EntityPlayer.inventory.hasItem(Item.arrow.itemID)) { par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); } return par1ItemStack; } /** * Return the enchantability factor of the item, most of the time is based on material. */ public int getItemEnchantability() { return 2; } @SideOnly(Side.CLIENT) private Icon[] baconiteBow = new Icon[4]; public void updateIcons(IconRegister iconRegister) { iconIndex = iconRegister.registerIcon("crystalia:" + this.getUnlocalizedName().substring(5) + "_0"); for (int N = 0; N < 4; N++) { this.baconiteBow[N] = iconRegister.registerIcon("crystalia:" + this.getUnlocalizedName().substring(5) + "_" + N); } } public Icon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) { if(player.getItemInUse() == null) return this.iconIndex; int time = stack.getMaxItemUseDuration() - useRemaining; if (time >= 18) { return baconiteBow[3]; } else if (time > 13) { return baconiteBow[2]; } else if (time > 0) { return baconiteBow[1]; } return baconiteBow[0]; } } Any help is appreciated! Check out my mod: http://www.minecraftforum.net/topic/1809937-152forge-minecraft-enriched-mod/
May 5, 201312 yr 1. ALWAYS use @Override to methods you intend to override, you'll see what's wrong then! 2. updateIcons was renamed to registerIcons Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! | mah twitter This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.
May 6, 201312 yr Author 1. ALWAYS use @Override to methods you intend to override, you'll see what's wrong then! 2. updateIcons was renamed to registerIcons Thanks, but I'm still getting an error on the iconIndexs. Any suggestions? Check out my mod: http://www.minecraftforum.net/topic/1809937-152forge-minecraft-enriched-mod/
May 6, 201312 yr 1. ALWAYS use @Override to methods you intend to override, you'll see what's wrong then! 2. updateIcons was renamed to registerIcons Thanks, but I'm still getting an error on the iconIndexs. Any suggestions? change it to this.icon
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.