package mhfc.net.common.weapon.stats; import java.util.Objects; import java.util.Random; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; public enum ElementalType implements ICombatEffectType { Fire(new DamageSource("mhfc.fireelement").setDamageBypassesArmor()) { @Override public void onEntitySwing(EntityLivingBase entity, ItemStack stack, Random rand) { double velX = rand.nextGaussian(), velY = rand.nextGaussian(), velZ = rand.nextGaussian(); double posX = entity.posX, posY = entity.posY, posZ = entity.posZ; entity.worldObj.spawnParticle("lava", posX, posY, posZ, velX, velY, velZ); } @Override public String getUnlocalizedName() { return "type.effect.fire"; } }, Water(new DamageSource("mhfc.waterelement").setDamageBypassesArmor()) { @Override public String getUnlocalizedName() { return "type.effect.water"; } }, Thunder(new DamageSource("mhfc.thunderelement").setDamageBypassesArmor()) { @Override public String getUnlocalizedName() { return "type.effect.thunder"; } }, Dragon(new DamageSource("mhfc.dragonelement").setDamageBypassesArmor()) { @Override public String getUnlocalizedName() { return "type.effect.dragon"; } }, Ice(new DamageSource("mhfc.iceelement").setDamageBypassesArmor()) { @Override public String getUnlocalizedName() { return "type.effect.ice"; } }; public final DamageSource damageSource; private ElementalType(DamageSource damageSrc) { this.damageSource = Objects.requireNonNull(damageSrc); } @Override public void applyTo(Entity target, float damageAmount) { // TODO: add the attacker as damageSourceEntity target.attackEntityFrom(damageSource, damageAmount); } }