Program: 169697
Project: 169697
Buggy source:
@Override public void doExplode(){
  if (DO_DESPAWN && callCount >= MAX_LIFESPAN) {
    this.postExplode();
  }
  if (!this.world().isRemote) {
    Vector3 currentPos=new Vector3();
    int blockID=-1;
    int metadata=-1;
    double dist=-1;
    int takenBlocks=0;
    Block block=null;
    loop:     for (int radius=1; radius < this.getRadius(); radius++) {
      for (int xCoord=-radius; xCoord < radius; xCoord++) {
        for (int yCoord=-radius; yCoord < radius; yCoord++) {
          for (int zCoord=-radius; zCoord < radius; zCoord++) {
            currentPos.x(position.x() + xCoord);
            currentPos.y(position.y() + yCoord);
            currentPos.z(position.z() + zCoord);
            dist=MathHelper.sqrt_double((xCoord * xCoord + yCoord * yCoord + zCoord * zCoord));
            if (dist > radius || dist < radius - 2)             continue;
            blockID=currentPos.getBlockID(this.world());
            metadata=currentPos.getBlockMetadata(this.world());
            block=Block.getBlockById(blockID);
            if (block != null && block.getBlockHardness(this.world(),currentPos.xi(),currentPos.yi(),currentPos.zi()) >= 0) {
              if (block instanceof IForceFieldBlock) {
                ((IForceFieldBlock)block).weakenForceField(this.world(),currentPos.xi(),currentPos.yi(),currentPos.zi(),50);
                continue;
              }
              this.world().setBlock(currentPos.xi(),currentPos.yi(),currentPos.zi(),0,0,block instanceof BlockFluid ? 0 : 2);
              if (block instanceof BlockFluid || block instanceof IFluidBlock)               continue;
              currentPos.add(0.5D);
              if (this.world().rand.nextFloat() > 0.8) {
                EntityFlyingBlock entity=new EntityFlyingBlock(this.world(),currentPos,blockID,metadata);
                this.world().spawnEntityInWorld(entity);
                entity.yawChange=50 * this.world().rand.nextFloat();
                entity.pitchChange=50 * this.world().rand.nextFloat();
              }
              takenBlocks++;
              if (takenBlocks > this.maxTakeBlocks)               break loop;
            }
          }
        }
      }
    }
  }
  float radius=this.getRadius() + this.getRadius() / 2;
  AxisAlignedBB bounds=AxisAlignedBB.getBoundingBox(position.xf() - radius,position.yf() - radius,position.zf() - radius,position.xf() + radius,position.yf() + radius,position.zf() + radius);
  List<Entity> allEntities=this.world().getEntitiesWithinAABB(Entity.class,bounds);
  boolean doExplosion=true;
  for (  Entity entity : allEntities) {
    doExplosion=!this.affectEntity(radius,entity,doExplosion);
  }
  if (this.world().rand.nextInt(8) == 0) {
    this.world().playSoundEffect(position.x() + (Math.random() - 0.5) * radius,position.y() + (Math.random() - 0.5) * radius,position.z() + (Math.random() - 0.5) * radius,Reference.PREFIX + "String_Node_Str",6.0F - this.world().rand.nextFloat(),1.0F - this.world().rand.nextFloat() * 0.4F);
  }
  this.world().playSoundEffect(position.x(),position.y(),position.z(),Reference.PREFIX + "String_Node_Str",3.0F,(1.0F + (this.world().rand.nextFloat() - this.world().rand.nextFloat()) * 0.2F) * 1F);
}

Fixed version (ground truth):
@Override public void doExplode(){
  if (DO_DESPAWN && callCount >= MAX_LIFESPAN) {
    this.postExplode();
  }
  if (!this.world().isRemote) {
    Vector3 currentPos=new Vector3();
    Block blockID=null;
    int metadata=-1;
    double dist=-1;
    int takenBlocks=0;
    Block block=null;
    loop:     for (int radius=1; radius < this.getRadius(); radius++) {
      for (int xCoord=-radius; xCoord < radius; xCoord++) {
        for (int yCoord=-radius; yCoord < radius; yCoord++) {
          for (int zCoord=-radius; zCoord < radius; zCoord++) {
            currentPos.x(position.x() + xCoord);
            currentPos.y(position.y() + yCoord);
            currentPos.z(position.z() + zCoord);
            dist=MathHelper.sqrt_double((xCoord * xCoord + yCoord * yCoord + zCoord * zCoord));
            if (dist > radius || dist < radius - 2)             continue;
            blockID=currentPos.getBlock(this.world());
            metadata=currentPos.getBlockMetadata(this.world());
            block=blockID;
            if (block != null && block.getBlockHardness(this.world(),currentPos.xi(),currentPos.yi(),currentPos.zi()) >= 0) {
              this.world().setBlock(currentPos.xi(),currentPos.yi(),currentPos.zi(),Blocks.air,0,block instanceof BlockLiquid ? 0 : 2);
              if (block instanceof BlockLiquid || block instanceof IFluidBlock)               continue;
              currentPos.add(0.5D);
              if (this.world().rand.nextFloat() > 0.8) {
                EntityFlyingBlock entity=new EntityFlyingBlock(this.world(),currentPos,blockID,metadata);
                this.world().spawnEntityInWorld(entity);
                entity.yawChange=50 * this.world().rand.nextFloat();
                entity.pitchChange=50 * this.world().rand.nextFloat();
              }
              takenBlocks++;
              if (takenBlocks > this.maxTakeBlocks)               break loop;
            }
          }
        }
      }
    }
  }
  float radius=this.getRadius() + this.getRadius() / 2;
  AxisAlignedBB bounds=AxisAlignedBB.getBoundingBox(position.xf() - radius,position.yf() - radius,position.zf() - radius,position.xf() + radius,position.yf() + radius,position.zf() + radius);
  List<Entity> allEntities=this.world().getEntitiesWithinAABB(Entity.class,bounds);
  boolean doExplosion=true;
  for (  Entity entity : allEntities) {
    doExplosion=!this.affectEntity(radius,entity,doExplosion);
  }
  if (this.world().rand.nextInt(8) == 0) {
    this.world().playSoundEffect(position.x() + (Math.random() - 0.5) * radius,position.y() + (Math.random() - 0.5) * radius,position.z() + (Math.random() - 0.5) * radius,Reference.PREFIX + "String_Node_Str",6.0F - this.world().rand.nextFloat(),1.0F - this.world().rand.nextFloat() * 0.4F);
  }
  this.world().playSoundEffect(position.x(),position.y(),position.z(),Reference.PREFIX + "String_Node_Str",3.0F,(1.0F + (this.world().rand.nextFloat() - this.world().rand.nextFloat()) * 0.2F) * 1F);
}