Program: 169692
Project: 169692
Buggy source:
@Override public void doExplode(){
  float radius=this.getRadius();
  if (this.world().isRemote) {
    for (int i=0; i < 200; i++) {
      Vector3 diDian=new Vector3();
      diDian.x=Math.random() * radius / 2 - radius / 4;
      diDian.y=Math.random() * radius / 2 - radius / 4;
      diDian.z=Math.random() * radius / 2 - radius / 4;
      diDian.scale(Math.min(radius,callCount) / 10);
      if (diDian.magnitude() <= radius) {
        diDian.translate(this.position);
        ICBMExplosion.proxy.spawnParticle("String_Node_Str",this.world(),diDian,(Math.random() - 0.5) / 2,(Math.random() - 0.5) / 2,(Math.random() - 0.5) / 2,this.red,this.green,this.blue,7.0F,8);
      }
    }
  }
  AxisAlignedBB bounds=AxisAlignedBB.getBoundingBox(position.x() - radius,position.y() - radius,position.z() - radius,position.x() + radius,position.y() + radius,position.z() + radius);
  List<EntityLivingBase> allEntities=world().getEntitiesWithinAABB(EntityLivingBase.class,bounds);
  for (  EntityLivingBase entity : allEntities) {
    if (this.isContagious) {
      ICBMExplosion.contagios_potion.poisonEntity(position,entity);
    }
    if (this.isPoisonous) {
      ICBMExplosion.poisonous_potion.poisonEntity(position,entity);
    }
    if (this.isConfuse) {
      entity.addPotionEffect(new CustomPotionEffect(Potion.confusion.id,18 * 20,0));
      entity.addPotionEffect(new CustomPotionEffect(Potion.digSlowdown.id,20 * 60,0));
      entity.addPotionEffect(new CustomPotionEffect(Potion.moveSlowdown.id,20 * 60,2));
    }
  }
  if (this.isMutate) {
    new BlastMutation(world(),this.exploder,position.x(),position.y(),position.z(),this.getRadius()).explode();
  }
  if (this.playShortSoundFX) {
    world().playSoundEffect(position.x() + 0.5D,position.y() + 0.5D,position.z() + 0.5D,Reference.PREFIX + "String_Node_Str",4.0F,(1.0F + (world().rand.nextFloat() - world().rand.nextFloat()) * 0.2F) * 1F);
  }
  if (this.callCount > this.duration) {
    this.controller.endExplosion();
  }
}

Fixed version (ground truth):
@Override public void doExplode(){
  float radius=this.getRadius();
  if (this.world().isRemote) {
    for (int i=0; i < 200; i++) {
      Vector3 diDian=new Vector3();
      diDian.x_$eq(Math.random() * radius / 2 - radius / 4);
      diDian.y_$eq(Math.random() * radius / 2 - radius / 4);
      diDian.z_$eq(Math.random() * radius / 2 - radius / 4);
      diDian.multiply(Math.min(radius,callCount) / 10);
      if (diDian.magnitude() <= radius) {
        diDian.add(this.position);
        ICBMExplosion.proxy.spawnParticle("String_Node_Str",this.world(),diDian,(Math.random() - 0.5) / 2,(Math.random() - 0.5) / 2,(Math.random() - 0.5) / 2,this.red,this.green,this.blue,7.0F,8);
      }
    }
  }
  AxisAlignedBB bounds=AxisAlignedBB.getBoundingBox(position.x() - radius,position.y() - radius,position.z() - radius,position.x() + radius,position.y() + radius,position.z() + radius);
  List<EntityLivingBase> allEntities=world().getEntitiesWithinAABB(EntityLivingBase.class,bounds);
  for (  EntityLivingBase entity : allEntities) {
    if (this.isContagious) {
      ICBMExplosion.contagios_potion.poisonEntity(position,entity);
    }
    if (this.isPoisonous) {
      ICBMExplosion.poisonous_potion.poisonEntity(position,entity);
    }
    if (this.isConfuse) {
      entity.addPotionEffect(new CustomPotionEffect(Potion.confusion.id,18 * 20,0));
      entity.addPotionEffect(new CustomPotionEffect(Potion.digSlowdown.id,20 * 60,0));
      entity.addPotionEffect(new CustomPotionEffect(Potion.moveSlowdown.id,20 * 60,2));
    }
  }
  if (this.isMutate) {
    new BlastMutation(world(),this.exploder,position.x(),position.y(),position.z(),this.getRadius()).explode();
  }
  if (this.playShortSoundFX) {
    world().playSoundEffect(position.x() + 0.5D,position.y() + 0.5D,position.z() + 0.5D,Reference.PREFIX + "String_Node_Str",4.0F,(1.0F + (world().rand.nextFloat() - world().rand.nextFloat()) * 0.2F) * 1F);
  }
  if (this.callCount > this.duration) {
    this.controller.endExplosion();
  }
}