private void doBolt(EntityBallLightning other) {
    Vec3 vec = ReikaVectorHelper.getVec2Pt(posX, posY, posZ, other.posX, other.posY, other.posZ);
    // EntityGluon g = new EntityGluon(this, other);
    // worldObj.spawnEntityInWorld(g);
    targetColor = other.color;

    ReikaPacketHelper.sendDataPacket(
        ChromatiCraft.packetChannel,
        ChromaPackets.GLUON.ordinal(),
        new DimensionTarget(worldObj),
        this.getEntityId(),
        other.getEntityId());

    double len = vec.lengthVector();
    for (double i = 0; i < len; i += 0.0625) {
      double dx = posX - i * vec.xCoord / len;
      double dy = posY - i * vec.yCoord / len;
      double dz = posZ - i * vec.zCoord / len;
      if (worldObj.isRemote) this.gluonParticles(other, dx, dy, dz, (float) (i / len));

      if (ChromaOptions.HOSTILEFOREST.getState()) {
        AxisAlignedBB box =
            AxisAlignedBB.getBoundingBox(dx, dy, dz, dx, dy, dz).expand(0.5, 0.5, 0.5);
        List<EntityLivingBase> elb = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, box);
        for (EntityLivingBase e : elb) {
          e.attackEntityFrom(DamageSource.generic, isPylonSpawn ? 4 : 1);
        }
      }
    }
  }
 @Override
 public AxisAlignedBB getCollisionBox(Entity entity) {
   if (entity instanceof EntityLivingBase
       && !(entity instanceof EntityBallLightning)
       && !worldObj.isRemote) {
     boolean flag =
         (entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode);
     if (!flag) {
       if (ChromaOptions.HOSTILEFOREST.getState()) {
         entity.attackEntityFrom(DamageSource.generic, 5);
       }
       if (entity instanceof EntityPlayer)
         ProgressStage.BALLLIGHTNING.stepPlayerTo((EntityPlayer) entity);
       this.die();
     }
   }
   return null; // AxisAlignedBB.getBoundingBox(posX, posY, posZ, posX, posY, posZ).expand(3, 3,
   // 3);
 }