package mods.railcraft.common.items.enchantment; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import java.lang.ref.WeakReference; import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraftforge.event.entity.player.AttackEntityEvent; public class EnchantmentDamageRailcraft extends EnchantmentCrowbar { private final int baseEnchantability, levelEnchantability, thresholdEnchantability; private final Class<? extends EntityLivingBase> targetType; private final float damageBonusPerLevel; private WeakReference<Entity> target; public EnchantmentDamageRailcraft(String tag, int id, int weight, int baseEnchantability, int levelEnchantability, int thresholdEnchantability, Class<? extends EntityLivingBase> targetType, float damageBonusPerLevel) { super(tag, id, weight); this.baseEnchantability = baseEnchantability; this.levelEnchantability = levelEnchantability; this.thresholdEnchantability = thresholdEnchantability; this.targetType = targetType; this.damageBonusPerLevel = damageBonusPerLevel; } @Override public int getMinEnchantability(int level) { return baseEnchantability + (level - 1) * levelEnchantability; } @Override public int getMaxEnchantability(int level) { return getMinEnchantability(level) + thresholdEnchantability; } @Override public int getMaxLevel() { return 5; } @Override public float func_152376_a(int lvl, EnumCreatureAttribute creatureType) { float modifier = 0.0f; if (targetType == null || (target != null && targetType.isInstance(target.get()))) modifier = lvl * damageBonusPerLevel; target = null; return modifier; } @SubscribeEvent public void attackEvent(AttackEntityEvent event) { target = new WeakReference<Entity>(event.target); } @Override public boolean canApplyTogether(Enchantment enchantment) { return !(enchantment instanceof EnchantmentDamageRailcraft); } }