The_Fireplace Posted February 22, 2014 Share Posted February 22, 2014 When I equip the armor, it doesn't apply potion effects. I know it is probably being caused by something simple, but I can't figure out what. Here's my code: Armor File: package firearmor.armor; import java.io.Console; import firearmor.FireArmorBaseFile; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; 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.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; public class FireArmor extends ItemArmor { public FireArmor(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4, String armornamePrefix) { super(par1, par2EnumArmorMaterial, par3, par4); this.material = par2EnumArmorMaterial; par2EnumArmorMaterial.getDamageReductionAmount(par4); this.setMaxDamage(par2EnumArmorMaterial.getDurability(par4)); this.maxStackSize = 1; armorNamePrefix = armornamePrefix; } public String armorNamePrefix; public EnumArmorMaterial material; @Override public boolean getIsRepairable(ItemStack tool, ItemStack material) { return material.itemID == FireArmorBaseFile.fireCore.itemID; } public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer) { if (stack.toString().contains("leggings")) { return "firearmor:textures/models/armor/fire2.png"; } if (stack.toString().contains("Leggings")) if (itemID == FireArmorBaseFile.FireLeggings.itemID) { return "firearmor:textures/models/armor/fire2.png"; } return "firearmor:textures/models/armor/fire1.png"; } public void registerIcons(IconRegister par1iconRegister) { if (itemID == FireArmorBaseFile.FireHelmet.itemID) { itemIcon = par1iconRegister.registerIcon("firearmor:FireHelmet"); } if (itemID == FireArmorBaseFile.FireChestplate.itemID) { itemIcon = par1iconRegister.registerIcon("firearmor:FireChestplate"); } if (itemID == FireArmorBaseFile.FireLeggings.itemID) { itemIcon = par1iconRegister.registerIcon("firearmor:FireLeggings"); } if (itemID == FireArmorBaseFile.FireBoots.itemID) { itemIcon = par1iconRegister.registerIcon("firearmor:FireBoots"); } } @Override public void onArmorTickUpdate(World world, EntityPlayer player, ItemStack itemStack) { if (player.getCurrentArmor(0) != null && player.getCurrentArmor(1) != null && player.getCurrentArmor(2) != null && player.getCurrentArmor(3) != null) { ItemStack helmet = player.getCurrentArmor(0); ItemStack plate = player.getCurrentArmor(1); ItemStack legs = player.getCurrentArmor(2); ItemStack boots = player.getCurrentArmor(3); if (helmet.getItem() == FireArmorBaseFile.FireHelmet && plate.getItem() == FireArmorBaseFile.FireChestplate && legs.getItem() == FireArmorBaseFile.FireLeggings && boots.getItem() == FireArmorBaseFile.FireBoots) { player.addPotionEffect((new PotionEffect(Potion.fireResistance.getId(), 400, 0))); } if (helmet.getItem() == FireArmorBaseFile.FireHelmet) { player.addPotionEffect((new PotionEffect(Potion.nightVision.getId(), 400, 0))); } if (legs.getItem() == FireArmorBaseFile.FireLeggings) { player.addPotionEffect((new PotionEffect(Potion.moveSpeed.getId(), 400, 0))); } } } } Base File: package firearmor; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.common.EnumHelper; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; import firearmor.util.CommonProxy; import firearmor.items.*; import firearmor.armor.*; import firearmor.tabs.TabFireArmor; @Mod(modid="firearmor", name="Fire's Armors", version="0.1.0") @NetworkMod(clientSideRequired=true) public class FireArmorBaseFile { @Instance(value = "firearmor") public static FireArmorBaseFile instance; //Creative Tab Registry public static CreativeTabs TabFireArmor = new TabFireArmor(CreativeTabs.getNextID(), "Fire's Armors"); //Armor Materials public static EnumArmorMaterial armorFire = EnumHelper.addArmorMaterial("FIRE", 15, new int[]{3, 7, 5, 3}, 45); //Item Registry public static Item fireCore = new fireCore(11255).setCreativeTab(TabFireArmor).setUnlocalizedName("fireCore").setCreativeTab(TabFireArmor); public static Item FireHelmet = new FireArmor(11256, armorFire, 0, 0, "FIRE").setUnlocalizedName("FireHelmet").setCreativeTab(TabFireArmor); public static Item FireChestplate = new FireArmor(11257, armorFire, 0, 1, "FIRE").setUnlocalizedName("FireChestplate").setCreativeTab(TabFireArmor); public static Item FireLeggings = new FireArmor(11258, armorFire, 0, 2, "FIRE").setUnlocalizedName("FireLeggings").setCreativeTab(TabFireArmor); public static Item FireBoots = new FireArmor(11259, armorFire, 0, 3, "FIRE").setUnlocalizedName("FireBoots").setCreativeTab(TabFireArmor); @SidedProxy(clientSide="firearmor.util.ClientProxy", serverSide="firearmor.util.CommonProxy") public static CommonProxy proxy; @EventHandler public void preInit(FMLPreInitializationEvent event) { } @EventHandler public void load(FMLInitializationEvent event) { proxy.registerRenderers(); //Visible Name Registry LanguageRegistry.addName(FireHelmet, "The_Fireplace Helmet"); LanguageRegistry.addName(FireChestplate, "The_Fireplace Chestplate"); LanguageRegistry.addName(FireLeggings, "The_Fireplace Greaves"); LanguageRegistry.addName(FireBoots, "The_Fireplace Boots"); LanguageRegistry.addName(fireCore, "The_Fireplace Core"); //ItemStacks ItemStack fireCoreStack = new ItemStack(fireCore); ItemStack enderPearlStack = new ItemStack(Item.enderPearl); ItemStack lavaStack = new ItemStack(Item.bucketLava); ItemStack blazePowderStack = new ItemStack(Item.blazePowder); ItemStack orangeDyeStack = new ItemStack(Item.dyePowder, 1, 14); ItemStack fireHelmStack = new ItemStack(FireHelmet); ItemStack fireChestStack = new ItemStack(FireChestplate); ItemStack fireBootsStack = new ItemStack(FireBoots); ItemStack fireLegsStack = new ItemStack(FireLeggings); ItemStack ObsidianStack = new ItemStack(Block.obsidian); ItemStack NetherrackStack = new ItemStack(Block.netherrack); ItemStack GlowstoneStack = new ItemStack(Block.glowStone); //Recipes GameRegistry.addRecipe(fireCoreStack, "xyx", "yzy", "xyx", 'x', lavaStack, 'y', blazePowderStack, 'z', enderPearlStack); GameRegistry.addRecipe(fireHelmStack, "ooo", "oco", "nen", 'o', ObsidianStack, 'c', fireCoreStack, 'n', GlowstoneStack, 'e', enderPearlStack); GameRegistry.addRecipe(fireChestStack, "oeo", "ncn", "oeo", 'o', ObsidianStack, 'c', fireCoreStack, 'n', GlowstoneStack, 'e', enderPearlStack); GameRegistry.addRecipe(fireLegsStack, "oeo", "n n", "e e", 'o', ObsidianStack, 'c', fireCoreStack, 'n', GlowstoneStack, 'e', enderPearlStack); GameRegistry.addRecipe(fireBootsStack, "d d", "oeo", "n n", 'o', ObsidianStack, 'd', orangeDyeStack, 'n', GlowstoneStack, 'e', enderPearlStack); } @EventHandler public void postInit(FMLPostInitializationEvent event) { } } Let me know if I left anything out of the post, and I will edit it in. If I helped please press the Thank You button. Check out my mods at http://www.curse.com/users/The_Fireplace/projects Link to comment Share on other sites More sharing options...
The_Fireplace Posted February 23, 2014 Author Share Posted February 23, 2014 UPDATE: I have narrowed it down to the following section of code: if (helmet.getItem() == FireArmorBaseFile.FireHelmet && plate.getItem() == FireArmorBaseFile.FireChestplate && legs.getItem() == FireArmorBaseFile.FireLeggings && boots.getItem() == FireArmorBaseFile.FireBoots) { player.addPotionEffect((new PotionEffect(Potion.fireResistance.getId(), 400, 0))); } if (helmet.getItem() == FireArmorBaseFile.FireHelmet) { player.addPotionEffect((new PotionEffect(Potion.nightVision.getId(), 400, 0))); } if (legs.getItem() == FireArmorBaseFile.FireLeggings) { player.addPotionEffect((new PotionEffect(Potion.moveSpeed.getId(), 400, 0))); } If I helped please press the Thank You button. Check out my mods at http://www.curse.com/users/The_Fireplace/projects Link to comment Share on other sites More sharing options...
Draco18s Posted February 23, 2014 Share Posted February 23, 2014 And this is where we do things like System.out.println(helmet.getItem() == FireArmorBaseFile.FireHelmet) And see what its doing. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
The_Fireplace Posted February 23, 2014 Author Share Posted February 23, 2014 That is exactly how I narrowed it down. If I helped please press the Thank You button. Check out my mods at http://www.curse.com/users/The_Fireplace/projects Link to comment Share on other sites More sharing options...
Draco18s Posted February 23, 2014 Share Posted February 23, 2014 Ok, but that doesn't tell us what's failing. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given. Link to comment Share on other sites More sharing options...
The_Fireplace Posted February 23, 2014 Author Share Posted February 23, 2014 That section of code that I narrowed it down to is failing to activate, so the Potion Effects aren't being applied to the player while the armor is worn, which is the goal. That's why I asked, is to see if anyone could figure out why it isn't activating. If I helped please press the Thank You button. Check out my mods at http://www.curse.com/users/The_Fireplace/projects Link to comment Share on other sites More sharing options...
TLHPoE Posted February 23, 2014 Share Posted February 23, 2014 Try adding this before doing all of that: if(!world.isRemote) Kain Link to comment Share on other sites More sharing options...
TheGreyGhost Posted February 23, 2014 Share Posted February 23, 2014 Hi if (helmet.getItem() == FireArmorBaseFile.FireHelmet) { player.addPotionEffect((new PotionEffect(Potion.nightVision.getId(), 400, 0))); } So you say that this line is being executed if (helmet.getItem() == FireArmorBaseFile.FireHelmet but it is never true, even when you think the helmet is being worn Depending on how you've coded FireHelmet, this might work instead if (helmet.getItem().itemID == FireArmorBaseFile.FireHelmet.itemID) BTW that should probably be FireArmorBaseFile.fireHelmet ? If that doesn't work, show us your FireArmorBaseFile.java? -TGG Link to comment Share on other sites More sharing options...
The_Fireplace Posted February 23, 2014 Author Share Posted February 23, 2014 Neither of those suggestions fixed it, and I'll edit in the FireArmorBaseFile in a sec. EDIT: Ok, the base file is there now. If I helped please press the Thank You button. Check out my mods at http://www.curse.com/users/The_Fireplace/projects Link to comment Share on other sites More sharing options...
mardiff Posted February 23, 2014 Share Posted February 23, 2014 So just to clarify, what do the if statements return that are checking whether or not the player is wearing the armor? We really don't know what the exact problem is... If you really want help, give that modder a thank you. Modders LOVE thank yous. Link to comment Share on other sites More sharing options...
coolAlias Posted February 23, 2014 Share Posted February 23, 2014 I'm pretty sure you've got the armor slots backwards; the vanilla java docs on this are very confusing, but this is what I've come up with after testing quite a bit: // this is what the java docs will tell you, but it's for rendering position only: Armor types as used in armor class: 0 helm, 1 chest, 2 legs, 3 boots // this is what is actually used for storing the positions in the player inventory: Armor types as used on player: 0 boots, 1 legs, 2 chest, 3 helm Use the second set of values with getCurrentArmor or add one for getCurrentItemOrArmor http://i.imgur.com/NdrFdld.png[/img] Link to comment Share on other sites More sharing options...
Recommended Posts