Program: 169691
Project: 169691
Buggy source:
@Override public void doExplode(){
  if (!this.world().isRemote) {
    if (this.callCount > 100 / this.proceduralInterval() && this.thread.isComplete) {
      this.controller.endExplosion();
    }
    if (this.canFocusBeam(this.world(),position)) {
      Vector3 currentPos;
      Block block;
      int metadata;
      double dist;
      int r=radius;
      for (int x=-r; x < r; x++) {
        for (int y=-r; y < r; y++) {
          for (int z=-r; z < r; z++) {
            dist=MathHelper.sqrt_double((x * x + y * y + z * z));
            if (dist > r || dist < r - 3) {
              continue;
            }
            currentPos=new Vector3(position.x() + x,position.y() + y,position.z() + z);
            block=this.world().getBlock(currentPos.xi(),currentPos.yi(),currentPos.zi());
            if (block == null || block.isAir(this.world(),x,y,z) || block.getBlockHardness(this.world(),x,y,x) < 0) {
              continue;
            }
            metadata=this.world().getBlockMetadata(currentPos.xi(),currentPos.yi(),currentPos.zi());
            if (this.world().rand.nextInt(2) > 0) {
              this.world().setBlockToAir(currentPos.xi(),currentPos.yi(),currentPos.zi());
              currentPos.add(0.5D);
              EntityFlyingBlock entity=new EntityFlyingBlock(this.world(),currentPos,block,metadata);
              this.world().spawnEntityInWorld(entity);
              this.feiBlocks.add(entity);
              entity.pitchChange=50 * this.world().rand.nextFloat();
            }
          }
        }
      }
    }
 else {
      this.controller.endExplosion();
    }
    for (    EntityFlyingBlock entity : this.feiBlocks) {
      Vector3 entityPosition=new Vector3(entity);
      Vector3 centeredPosition=entityPosition.clone().translate(this.position.invert());
      centeredPosition.rotate(2);
      Vector3 newPosition=this.position.clone().translate(centeredPosition);
      entity.motionX/=3;
      entity.motionY/=3;
      entity.motionZ/=3;
      entity.addVelocity((newPosition.x - entityPosition.x) * 0.5 * this.proceduralInterval(),0.09 * this.proceduralInterval(),(newPosition.z - entityPosition.z) * 0.5 * this.proceduralInterval());
      entity.yawChange+=3 * this.world().rand.nextFloat();
    }
  }
}

Fixed version (ground truth):
@Override public void doExplode(){
  if (!this.world().isRemote) {
    if (this.callCount > 100 / this.proceduralInterval() && this.thread.isComplete) {
      this.controller.endExplosion();
    }
    if (this.canFocusBeam(this.world(),position)) {
      Vector3 currentPos;
      Block block;
      int metadata;
      double dist;
      int r=radius;
      for (int x=-r; x < r; x++) {
        for (int y=-r; y < r; y++) {
          for (int z=-r; z < r; z++) {
            dist=MathHelper.sqrt_double((x * x + y * y + z * z));
            if (dist > r || dist < r - 3) {
              continue;
            }
            currentPos=new Vector3(position.x() + x,position.y() + y,position.z() + z);
            block=this.world().getBlock(currentPos.xi(),currentPos.yi(),currentPos.zi());
            if (block == null || block.isAir(this.world(),x,y,z) || block.getBlockHardness(this.world(),x,y,x) < 0) {
              continue;
            }
            metadata=this.world().getBlockMetadata(currentPos.xi(),currentPos.yi(),currentPos.zi());
            if (this.world().rand.nextInt(2) > 0) {
              this.world().setBlockToAir(currentPos.xi(),currentPos.yi(),currentPos.zi());
              currentPos.add(0.5D);
              EntityFlyingBlock entity=new EntityFlyingBlock(this.world(),currentPos,block,metadata);
              this.world().spawnEntityInWorld(entity);
              this.feiBlocks.add(entity);
              entity.pitchChange=50 * this.world().rand.nextFloat();
            }
          }
        }
      }
    }
 else {
      this.controller.endExplosion();
    }
    for (    EntityFlyingBlock entity : this.feiBlocks) {
      Vector3 entityPosition=new Vector3(entity);
      Vector3 centeredPosition=entityPosition.clone().subtract(this.position);
      Vector3 newPosition=this.position.clone().add(centeredPosition);
      entity.motionX/=3;
      entity.motionY/=3;
      entity.motionZ/=3;
      entity.addVelocity((newPosition.x() - entityPosition.x()) * 0.5 * this.proceduralInterval(),0.09 * this.proceduralInterval(),(newPosition.z() - entityPosition.z()) * 0.5 * this.proceduralInterval());
      entity.yawChange+=3 * this.world().rand.nextFloat();
    }
  }
}