Posted August 18, 20169 yr I've been struggling with how to make it so that when you equip all 4 pieces of a set of armor, you get a potion effect. I had it working back in 1.7.10, but the updates in 1.8 and up have changed the way things work. I tried a few other ideas, but it just doesn't seem to work. Can anyone help? This is my armor class: package sureen.core.armor; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.inventory.EntityEquipmentSlot; 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; import sureen.core.SureenCore; import sureen.core.registry.SureenItems; public class CrystalArmor extends ItemArmor { public CrystalArmor(int renderIndex, EntityEquipmentSlot slot){ super(SureenCore.CrystalArmor, renderIndex, slot); } public void OnUpdate(ItemStack item, World world, Entity entity, int itemSlot, boolean isSelected){ if(entity instanceof EntityLivingBase){ EntityLivingBase livingBase = (EntityLivingBase) entity; if(livingBase.getItemStackFromSlot(EntityEquipmentSlot.HEAD) != null && livingBase.getItemStackFromSlot(EntityEquipmentSlot.CHEST) != null && livingBase.getItemStackFromSlot(EntityEquipmentSlot.LEGS) != null && livingBase.getItemStackFromSlot(EntityEquipmentSlot.FEET) != null){ ItemStack helmet = livingBase.getItemStackFromSlot(EntityEquipmentSlot.HEAD); ItemStack chestplate = livingBase.getItemStackFromSlot(EntityEquipmentSlot.CHEST); ItemStack leggings = livingBase.getItemStackFromSlot(EntityEquipmentSlot.LEGS); ItemStack boots = livingBase.getItemStackFromSlot(EntityEquipmentSlot.FEET); System.out.println(helmet + " " + chestplate + " " + leggings + " " + boots); if (helmet.getItem() == SureenItems.crystal_helmet && chestplate.getItem() == SureenItems.crystal_chestplate && leggings.getItem() == SureenItems.crystal_leggings && boots.getItem() == SureenItems.crystal_boots){ ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.getPotionFromResourceLocation("absorption"), 1, 1)); } } } } }
August 18, 20169 yr What is the specific problem? No potion effect at all? VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 18, 20169 yr Author Yeah, it's not putting any potion effect at all. I have absorption in the code because I thought maybe it just wasn't showing the potion effects, but was still applying them, but it didn't give me any absorption hearts, so I can tell it's not applying any effects.
August 18, 20169 yr Try putting @Override over your method you should see the error. And if you don't does it print out the ItemStacks? VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 18, 20169 yr Author When I put @Override, I get this: "The method OnUpdate(ItemStack, World, Entity, int, boolean) of type CrystalArmor must override or implement a supertype method" Otherwise, it doesn't even seem to operate at all.
August 18, 20169 yr Exactly you are not overriding the "right" method(not any method at all), just a suggestion but whenever you are using a method that you didn't create in that class always put @Override. When it was like that it should not have worked at all in previous versions either. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 18, 20169 yr Author Odd, well, I've always used the OnArmorTick method (which doesn't seem to work here) and neither does OnUpdate. Any idea which method I should be using here?
August 18, 20169 yr Go to ItemArmor and find the onArmorTick method, copy its signature, paste it over your method. 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.
August 18, 20169 yr Author I don't seem to see an onArmorTick method in ItemArmor... I even did a search for it, but it said it wasn't there.
August 18, 20169 yr It is actually in Item. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 18, 20169 yr Author Awesome, it works now! Not sure if this code can be cleaned up further due to the changes made, but this is what I got to work. package sureen.core.armor; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; 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; import sureen.core.SureenCore; import sureen.core.registry.SureenItems; public class CrystalArmor extends ItemArmor { public CrystalArmor(int renderIndex, EntityEquipmentSlot slot){ super(SureenCore.CrystalArmor, renderIndex, slot); } @Override public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack){ if(player instanceof EntityLivingBase){ EntityLivingBase livingBase = (EntityLivingBase) player; if(livingBase.getItemStackFromSlot(EntityEquipmentSlot.HEAD) != null && livingBase.getItemStackFromSlot(EntityEquipmentSlot.CHEST) != null && livingBase.getItemStackFromSlot(EntityEquipmentSlot.LEGS) != null && livingBase.getItemStackFromSlot(EntityEquipmentSlot.FEET) != null){ ItemStack helmet = livingBase.getItemStackFromSlot(EntityEquipmentSlot.HEAD); ItemStack chestplate = livingBase.getItemStackFromSlot(EntityEquipmentSlot.CHEST); ItemStack leggings = livingBase.getItemStackFromSlot(EntityEquipmentSlot.LEGS); ItemStack boots = livingBase.getItemStackFromSlot(EntityEquipmentSlot.FEET); System.out.println(helmet + " " + chestplate + " " + leggings + " " + boots); if (helmet.getItem() == SureenItems.crystal_helmet && chestplate.getItem() == SureenItems.crystal_chestplate && leggings.getItem() == SureenItems.crystal_leggings && boots.getItem() == SureenItems.crystal_boots){ ((EntityLivingBase) player).addPotionEffect(new PotionEffect(Potion.getPotionFromResourceLocation("absorption"), 1, 1)); } } } } }
August 18, 20169 yr You could make the variables before checking if they are != null then use them to check if they are not equal to null. Remove the println. That is all I can think of right now, everything else looks good. VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect. Forge and vanilla BlockState generator.
August 18, 20169 yr Awesome, it works now And now you know that to Override a method you should always let your IDE do it or find the method you want to override and copy it, and then never touch its signature. 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.
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.