// Path: src/main/java/matgm50/twarden/util/PurityHelper.java
// public class PurityHelper {
// 
//     public static boolean isTainted(Entity entity) {
// 
//         if(entity instanceof ITaintedMob) {
// 
//             return true;
// 
//         }
// 
//         return false;
// 
//     }
// 
//     public static boolean isTainted(MovingObjectPosition mop) {
// 
//         if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) {
// 
//             if (mop.entityHit != null) {
// 
//                 return isTainted(mop.entityHit);
// 
//             }
// 
//         }
// 
//         return false;
// 
//     }
// 
//     public static void purifyEntity(Entity toPurify) {
// 
//         if (toPurify != null) {
// 
//             World world = toPurify.worldObj;
// 
//             if(isTainted(toPurify)) {
// 
//                 if(!world.isRemote) {
// 
//                     Entity purified = getPureState(toPurify);
//                     purified.setPositionAndRotation(toPurify.posX, toPurify.posY, toPurify.posZ, toPurify.rotationYaw, toPurify.rotationPitch);
// 
//                     toPurify.setDead();
//                     world.spawnEntityInWorld(purified);
// 
//                 }
// 
//             }
// 
//         }
// 
//     }
// 
//     public static void checkAndPurify(MovingObjectPosition mop) {
// 
//         if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) {
// 
//             purifyEntity(mop.entityHit);
// 
//         }
// 
//     }
// 
//     public static Entity getPureState(Entity entity){
// 
//         if(entity instanceof EntityTaintChicken) {
// 
//             return new EntityChicken(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintCow) {
// 
//             return new EntityCow(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintCreeper) {
// 
//             return new EntityCreeper(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintPig) {
// 
//             return new EntityPig(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintSheep) {
// 
//             return new EntitySheep(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintSpider) {
// 
//             return new EntitySpider(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintVillager) {
// 
//             return new EntityVillager(entity.worldObj);
// 
//         }
// 
//         return entity;
// 
//     }
// 
// }


import matgm50.twarden.util.PurityHelper;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.projectile.EntityThrowable;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import thaumcraft.common.Thaumcraft;
        }

        super.onUpdate();

    }

    @Override
    protected void onImpact(MovingObjectPosition mop) {

        for (int i = 0; i < 9; i++) {

            float fx = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            float fy = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            float fz = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            Thaumcraft.proxy.wispFX3(this.worldObj, this.posX + fx, this.posY + fy, this.posZ + fz, this.posX + fx * 8.0F, this.posY + fy * 8.0F, this.posZ + fz * 8.0F, 0.3F, 2, true, 0.02F);

            fx = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fy = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fz = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            Thaumcraft.proxy.wispFX3(this.worldObj, this.posX + fx, this.posY + fy, this.posZ + fz, this.posX + fx * 8.0F, this.posY + fy * 8.0F, this.posZ + fz * 8.0F, 0.3F, 0, true, 0.02F);

            fx = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fy = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fz = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            Thaumcraft.proxy.wispFX3(this.worldObj, this.posX + fx, this.posY + fy, this.posZ + fz, this.posX + fx * 8.0F, this.posY + fy * 8.0F, this.posZ + fz * 8.0F, 0.3F, 2, true, 0.02F);

        }

        if(!worldObj.isRemote) {

// Path: src/main/java/matgm50/twarden/util/PurityHelper.java
// public class PurityHelper {
// 
//     public static boolean isTainted(Entity entity) {
// 
//         if(entity instanceof ITaintedMob) {
// 
//             return true;
// 
//         }
// 
//         return false;
// 
//     }
// 
//     public static boolean isTainted(MovingObjectPosition mop) {
// 
//         if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) {
// 
//             if (mop.entityHit != null) {
// 
//                 return isTainted(mop.entityHit);
// 
//             }
// 
//         }
// 
//         return false;
// 
//     }
// 
//     public static void purifyEntity(Entity toPurify) {
// 
//         if (toPurify != null) {
// 
//             World world = toPurify.worldObj;
// 
//             if(isTainted(toPurify)) {
// 
//                 if(!world.isRemote) {
// 
//                     Entity purified = getPureState(toPurify);
//                     purified.setPositionAndRotation(toPurify.posX, toPurify.posY, toPurify.posZ, toPurify.rotationYaw, toPurify.rotationPitch);
// 
//                     toPurify.setDead();
//                     world.spawnEntityInWorld(purified);
// 
//                 }
// 
//             }
// 
//         }
// 
//     }
// 
//     public static void checkAndPurify(MovingObjectPosition mop) {
// 
//         if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY) {
// 
//             purifyEntity(mop.entityHit);
// 
//         }
// 
//     }
// 
//     public static Entity getPureState(Entity entity){
// 
//         if(entity instanceof EntityTaintChicken) {
// 
//             return new EntityChicken(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintCow) {
// 
//             return new EntityCow(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintCreeper) {
// 
//             return new EntityCreeper(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintPig) {
// 
//             return new EntityPig(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintSheep) {
// 
//             return new EntitySheep(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintSpider) {
// 
//             return new EntitySpider(entity.worldObj);
// 
//         }
// 
//         if(entity instanceof EntityTaintVillager) {
// 
//             return new EntityVillager(entity.worldObj);
// 
//         }
// 
//         return entity;
// 
//     }
// 
// }


// Path: src/main/java/matgm50/twarden/entity/EntityPurity.java
import matgm50.twarden.util.PurityHelper;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.projectile.EntityThrowable;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World;
import thaumcraft.common.Thaumcraft;

        }

        super.onUpdate();

    }

    @Override
    protected void onImpact(MovingObjectPosition mop) {

        for (int i = 0; i < 9; i++) {

            float fx = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            float fy = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            float fz = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            Thaumcraft.proxy.wispFX3(this.worldObj, this.posX + fx, this.posY + fy, this.posZ + fz, this.posX + fx * 8.0F, this.posY + fy * 8.0F, this.posZ + fz * 8.0F, 0.3F, 2, true, 0.02F);

            fx = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fy = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fz = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            Thaumcraft.proxy.wispFX3(this.worldObj, this.posX + fx, this.posY + fy, this.posZ + fz, this.posX + fx * 8.0F, this.posY + fy * 8.0F, this.posZ + fz * 8.0F, 0.3F, 0, true, 0.02F);

            fx = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fy = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            fz = (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.3F;
            Thaumcraft.proxy.wispFX3(this.worldObj, this.posX + fx, this.posY + fy, this.posZ + fz, this.posX + fx * 8.0F, this.posY + fy * 8.0F, this.posZ + fz * 8.0F, 0.3F, 2, true, 0.02F);

        }

        if(!worldObj.isRemote) {

            PurityHelper.checkAndPurify(mop);