Posted February 24, 201510 yr comment_145538 Hey guys; i made an enchantment that should poison the enemy hit by the player... the code for the eventhandler is this: @SubscribeEvent public void giftSchwert(LivingHurtEvent event){ if(event.source.getEntity() != null){ if(event.source.getEntity() instanceof EntityPlayer){ EntityPlayer player = (EntityPlayer)event.source.getEntity(); boolean poison = false; ItemStack stack = player.getCurrentEquippedItem(); if(stack != null){ NBTTagList ench = stack.getEnchantmentTagList(); if (ench != null){ for (int x = 0; x < ench.tagCount(); x++){ NBTTagCompound nbt = (NBTTagCompound)(ench).getCompoundTagAt(x); int id = nbt.getInteger("id"); if (id == EnchantmentGift.effectid){ poison = true; } } if(event.entity instanceof EntityLiving){ if(poison){ EntityLiving entity = (EntityLiving)event.entity; entity.addPotionEffect(new PotionEffect(Potion.poison.getId(), 200, 1)); } } } } } } } it doesn't work very well; u know what the problem is? please help me, because i dont know why it isnt working;
February 24, 201510 yr comment_145565 1. Just checking EnchantmentHelper#getEnchantmentLevel(int enchid, ItemStack is) would greatly simplify your code. 2. Your EnchantmentGift class would be needed, so please post it. I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP) II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.
February 25, 201510 yr comment_145625 ok i changed the code a bit: @SubscribeEvent public void giftSchwert(LivingHurtEvent event){ if(event.source.getEntity() != null){ if(event.source.getEntity() instanceof EntityPlayer){ EntityPlayer player = (EntityPlayer)event.source.getEntity(); ItemStack stack = player.getCurrentEquippedItem(); if(stack != null){ int p = EnchantmentHelper.getEnchantmentLevel(EnchantmentGift.effectid, stack); if(p > 0){ EntityLiving entity = (EntityLiving)event.entity; entity.addPotionEffect(new PotionEffect(Potion.poison.getId(), 200, 1)); } } } } } my enchantmentgift.class: public class EnchantmentGift extends Enchantment { public static int effectid; public EnchantmentGift(int id, int rarity){ super(id, rarity, EnumEnchantmentType.weapon); this.effectid = id; this.setName("Gift"); } public int getMinEnchantability(int par1){ return 5 + (par1 - 1) * 10; } public int getMaxEnchantability(int par1){ return this.getMinEnchantability(par1) + 20; } public int getMaxLevel(){ return 1; } }
February 25, 201510 yr comment_145629 ok i changed the code a bit: @SubscribeEvent public void giftSchwert(LivingHurtEvent event){ if(event.source.getEntity() != null){ if(event.source.getEntity() instanceof EntityPlayer){ EntityPlayer player = (EntityPlayer)event.source.getEntity(); ItemStack stack = player.getCurrentEquippedItem(); if(stack != null){ int p = EnchantmentHelper.getEnchantmentLevel(EnchantmentGift.effectid, stack); if(p > 0){ EntityLiving entity = (EntityLiving)event.entity; entity.addPotionEffect(new PotionEffect(Potion.poison.getId(), 200, 1)); } } } } } my enchantmentgift.class: public class EnchantmentGift extends Enchantment { public static int effectid; public EnchantmentGift(int id, int rarity){ super(id, rarity, EnumEnchantmentType.weapon); this.effectid = id; this.setName("Gift"); } public int getMinEnchantability(int par1){ return 5 + (par1 - 1) * 10; } public int getMaxEnchantability(int par1){ return this.getMinEnchantability(par1) + 20; } public int getMaxLevel(){ return 1; } } Don't make effect ID static! You don't even need it. Just create a new instance of the enchantment (in the main mod class) and use that instance's effectId, as it is already a field in Enchantment.class. Maker of the Craft++ mod.
February 25, 201510 yr comment_145664 I found out what the problem was. I only tested the sword on aggressive mobs. somehow the potion effect poison doesn't damage them. it works quite fine, if i test it on other mobs. How could i make it, that zombies, skeletons, etc. get damage too?
April 21, 201510 yr comment_154681 It happens to be that Poison doesn't deal damage to Zombies, Spiders, and Skeletons. They get healed, I have no clue why.
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.