TesserWreck Posted August 31, 2014 Posted August 31, 2014 I am relatively new to Minecraft modding so I decided to create a custom enchantment. I have looked over several tutorials and they do show how to create an enchantment and apply it to a custom items, but I want my enchantment to be applied to the standard Minecraft items. Does anyone know how I would go about doing this or if there is a guide/tutorial that describes this? Quote
TesserWreck Posted August 31, 2014 Author Posted August 31, 2014 That worked and I can enable it for specific items, but now I have two more questions; how would I apply it to a group of items(i.e. all helmets) and where do I put the code that makes the enchantment actually do something? Quote
Eternaldoom Posted August 31, 2014 Posted August 31, 2014 Probably use events to make it do something. For helmets, check if it's an instance of itemarmor and if the armor type is 0. Quote Check out my mod, Realms of Chaos, here. If I helped you, be sure to press the "Thank You" button!
TesserWreck Posted August 31, 2014 Author Posted August 31, 2014 I know about the onArmorTick event, but I can't put that in a class that extends Enchantment. I did check for an instance of ItemArmor, but I don't know how to compare that instance's armorType value. Quote
Eternaldoom Posted August 31, 2014 Posted August 31, 2014 Post the enchantment class. Quote Check out my mod, Realms of Chaos, here. If I helped you, be sure to press the "Thank You" button!
TesserWreck Posted August 31, 2014 Author Posted August 31, 2014 I did manage to get it to find the armorType value, still don't know about the event. package com.twreck.stride; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnumEnchantmentType; import net.minecraft.init.Items; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; public class EnchantmentStride extends Enchantment { public EnchantmentStride(int id, int rarity) { super(id, rarity, EnumEnchantmentType.armor_feet); this.setName("Stride"); } public int getMinEnchantability(int par1) { return 5 + (par1 - 1) * 10; } public int getMaxEnchantability(int par1) { return this.getMinEnchantability(par1) + 20; } public int getMaxLevel() { return 3; } @Override public boolean canApply(ItemStack stack){ return stack.getItem() instanceof ItemArmor && ((ItemArmor)stack.getItem()).armorType == 3 ? true : super.canApply(stack); } } Quote
Eternaldoom Posted September 1, 2014 Posted September 1, 2014 For the effects, use a PlayerTickEvent that checks for the item in the player's boots slot (in this case). There should be some method to get the items enchantments. What effect do you want the enchantment to have? Quote Check out my mod, Realms of Chaos, here. If I helped you, be sure to press the "Thank You" button!
TesserWreck Posted September 1, 2014 Author Posted September 1, 2014 For right now I was going to apply a speed boost effect. Quote
Eternaldoom Posted September 1, 2014 Posted September 1, 2014 Then you would use event.player.addPotionEffect Quote Check out my mod, Realms of Chaos, here. If I helped you, be sure to press the "Thank You" button!
TesserWreck Posted September 1, 2014 Author Posted September 1, 2014 What class is PlayerTickEvent in? Quote
Eternaldoom Posted September 1, 2014 Posted September 1, 2014 Make a new class to put it in. Look up a Forge event tutorial. Here's the one I use for armor full sets: https://github.com/Eternaldoom/Realms-of-Chaos/blob/master/com/eternaldoom/realmsofchaos/event/ArmorBonusEvent.java You use the SubscribeEvent annotation and register the event in your main class. Quote Check out my mod, Realms of Chaos, here. If I helped you, be sure to press the "Thank You" button!
TesserWreck Posted September 1, 2014 Author Posted September 1, 2014 I managed to get it working by following this tutorial: www.youtube.com/watch?v=siiEYV2pXE0 I didn't see that there was a follow up video to the previous one. Quote
Recommended Posts
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.