package WayofTime.alchemicalWizardry.common.spell.complex; import java.util.ArrayList; import java.util.List; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraft.world.World; import WayofTime.alchemicalWizardry.common.items.EnergyItems; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellEffect; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IProjectileImpactEffect; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.IProjectileUpdateEffect; import WayofTime.alchemicalWizardry.common.spell.complex.effect.impactEffects.fire.ProjectileDefaultFire; import WayofTime.alchemicalWizardry.common.spell.complex.enhancement.SpellEnhancement; public class SpellParadigmProjectile extends SpellParadigm { public DamageSource damageSource; public float damage; public int cost; public List impactList; public List updateEffectList; public boolean penetration; public int ricochetMax; public SpellParadigmProjectile() { this.damageSource = DamageSource.generic; this.damage = 1; this.cost = 0; this.impactList = new ArrayList(); this.updateEffectList = new ArrayList(); this.penetration = false; this.ricochetMax = 0; } @Override public void enhanceParadigm(SpellEnhancement enh) { } @Override public void castSpell(World world, EntityPlayer entityPlayer, ItemStack itemStack) { EntitySpellProjectile proj = new EntitySpellProjectile(world, entityPlayer); this.prepareProjectile(proj); world.spawnEntityInWorld(proj); int cost = this.getTotalCost(); EnergyItems.syphonBatteries(itemStack, entityPlayer, cost); } public static SpellParadigmProjectile getParadigmForEffectArray(List effectList) { SpellParadigmProjectile parad = new SpellParadigmProjectile(); for(SpellEffect eff : effectList) { parad.addBufferedEffect(eff); } return parad; } public void prepareProjectile(EntitySpellProjectile proj) { proj.setDamage(damage); proj.setImpactList(impactList); proj.setUpdateEffectList(updateEffectList); proj.setPenetration(penetration); proj.setRicochetMax(ricochetMax); proj.setSpellEffectList(bufferedEffectList); } public void addImpactEffect(IProjectileImpactEffect eff) { if(eff!=null) { this.impactList.add(eff); } } public void addUpdateEffect(IProjectileUpdateEffect eff) { if(eff!=null) { this.updateEffectList.add(eff); } } @Override public int getDefaultCost() { return 50; } }