Program: 161327
Project: 161327
Buggy source:
@Override public boolean updateServer(){
  if (Float.isNaN(this.getReactorHeat())) {
    this.setReactorHeat(0.0f);
  }
  float oldHeat=this.getReactorHeat();
  float oldEnergy=this.getEnergyStored();
  energyGeneratedLastTick=0f;
  fuelConsumedLastTick=0f;
  float newHeat=0f;
  if (getActive()) {
    if (!currentFuelRod.hasNext()) {
      currentFuelRod=attachedFuelRods.iterator();
    }
    TileEntityReactorFuelRod source=currentFuelRod.next();
    TileEntityReactorControlRod sourceControlRod=(TileEntityReactorControlRod)worldObj.getTileEntity(source.xCoord,getMaximumCoord().y,source.zCoord);
    if (source != null && sourceControlRod != null) {
      RadiationData radData=radiationHelper.radiate(worldObj,fuelContainer,source,sourceControlRod,getFuelHeat(),getReactorHeat(),attachedControlRods.size());
      if (radData != null) {
        addFuelHeat(radData.getFuelHeatChange(attachedFuelRods.size()));
        addReactorHeat(radData.getEnvironmentHeatChange(getReactorVolume()));
        fuelConsumedLastTick+=radData.fuelUsage;
      }
    }
  }
  radiationHelper.tick(getActive());
  if (wasteEjection == WasteEjectionSetting.kAutomatic) {
    ejectWaste(false,null);
  }
  refuel();
  float tempDiff=fuelHeat - reactorHeat;
  if (tempDiff > 0.01f) {
    float rfTransferred=tempDiff * fuelToReactorHeatTransferCoefficient;
    float fuelRf=StaticUtils.Energy.getRFFromVolumeAndTemp(attachedFuelRods.size(),fuelHeat);
    fuelRf-=rfTransferred;
    setFuelHeat(StaticUtils.Energy.getTempFromVolumeAndRF(attachedFuelRods.size(),fuelRf));
    float reactorRf=StaticUtils.Energy.getRFFromVolumeAndTemp(getReactorVolume(),getReactorHeat());
    reactorRf+=rfTransferred;
    setReactorHeat(StaticUtils.Energy.getTempFromVolumeAndRF(getReactorVolume(),reactorRf));
  }
  tempDiff=getReactorHeat() - getCoolantTemperature();
  if (tempDiff > 0.01f) {
    float rfTransferred=tempDiff * reactorToCoolantSystemHeatTransferCoefficient;
    float reactorRf=StaticUtils.Energy.getRFFromVolumeAndTemp(getReactorVolume(),getReactorHeat());
    if (isPassivelyCooled()) {
      rfTransferred*=passiveCoolingTransferEfficiency;
      generateEnergy(rfTransferred * passiveCoolingPowerEfficiency);
    }
 else {
      rfTransferred-=coolantContainer.onAbsorbHeat(rfTransferred);
      energyGeneratedLastTick=coolantContainer.getFluidVaporizedLastTick();
    }
    reactorRf-=rfTransferred;
    setReactorHeat(StaticUtils.Energy.getTempFromVolumeAndRF(getReactorVolume(),reactorRf));
  }
  tempDiff=getReactorHeat() - getPassiveCoolantTemperature();
  if (tempDiff > 0.000001f) {
    float rfLost=Math.max(1f,tempDiff * reactorHeatLossCoefficient);
    float reactorNewRf=Math.max(0f,StaticUtils.Energy.getRFFromVolumeAndTemp(getReactorVolume(),getReactorHeat()) - rfLost);
    setReactorHeat(StaticUtils.Energy.getTempFromVolumeAndRF(getReactorVolume(),reactorNewRf));
  }
  if (reactorHeat < 0f) {
    setReactorHeat(0f);
  }
  if (fuelHeat < 0f) {
    setFuelHeat(0f);
  }
  int energyAvailable=(int)getEnergyStored();
  int energyRemaining=energyAvailable;
  if (attachedPowerTaps.size() > 0 && energyRemaining > 0) {
    int splitEnergy=energyRemaining / attachedPowerTaps.size();
    for (    TileEntityReactorPowerTap powerTap : attachedPowerTaps) {
      if (energyRemaining <= 0) {
        break;
      }
      if (powerTap == null || !powerTap.isConnected()) {
        continue;
      }
      energyRemaining-=splitEnergy - powerTap.onProvidePower(splitEnergy);
    }
    if (energyRemaining > 0) {
      for (      TileEntityReactorPowerTap powerTap : attachedPowerTaps) {
        if (energyRemaining <= 0) {
          break;
        }
        if (powerTap == null || !powerTap.isConnected()) {
          continue;
        }
        energyRemaining=powerTap.onProvidePower(energyRemaining);
      }
    }
  }
  if (energyAvailable != energyRemaining) {
    reduceStoredEnergy((energyAvailable - energyRemaining));
  }
  ticksSinceLastUpdate++;
  if (ticksSinceLastUpdate >= ticksBetweenUpdates) {
    ticksSinceLastUpdate=0;
    sendTickUpdate();
  }
  for (  ITickableMultiblockPart tickable : attachedTickables) {
    if (tickable == null) {
      continue;
    }
    tickable.onMultiblockServerTick();
  }
  if (attachedGlass.size() > 0 && fuelContainer.shouldUpdate()) {
    markReferenceCoordForUpdate();
  }
  return (oldHeat != this.getReactorHeat() || oldEnergy != this.getEnergyStored());
}

Fixed version (ground truth):
@Override public boolean updateServer(){
  if (Float.isNaN(this.getReactorHeat())) {
    this.setReactorHeat(0.0f);
  }
  float oldHeat=this.getReactorHeat();
  float oldEnergy=this.getEnergyStored();
  energyGeneratedLastTick=0f;
  fuelConsumedLastTick=0f;
  float newHeat=0f;
  if (getActive()) {
    if (!currentFuelRod.hasNext()) {
      currentFuelRod=attachedFuelRods.iterator();
    }
    TileEntityReactorFuelRod source=currentFuelRod.next();
    TileEntityReactorControlRod sourceControlRod=(TileEntityReactorControlRod)worldObj.getTileEntity(source.xCoord,getMaximumCoord().y,source.zCoord);
    if (sourceControlRod != null) {
      RadiationData radData=radiationHelper.radiate(worldObj,fuelContainer,source,sourceControlRod,getFuelHeat(),getReactorHeat(),attachedControlRods.size());
      if (radData != null) {
        addFuelHeat(radData.getFuelHeatChange(attachedFuelRods.size()));
        addReactorHeat(radData.getEnvironmentHeatChange(getReactorVolume()));
        fuelConsumedLastTick+=radData.fuelUsage;
      }
    }
  }
  radiationHelper.tick(getActive());
  if (wasteEjection == WasteEjectionSetting.kAutomatic) {
    ejectWaste(false,null);
  }
  refuel();
  float tempDiff=fuelHeat - reactorHeat;
  if (tempDiff > 0.01f) {
    float rfTransferred=tempDiff * fuelToReactorHeatTransferCoefficient;
    float fuelRf=StaticUtils.Energy.getRFFromVolumeAndTemp(attachedFuelRods.size(),fuelHeat);
    fuelRf-=rfTransferred;
    setFuelHeat(StaticUtils.Energy.getTempFromVolumeAndRF(attachedFuelRods.size(),fuelRf));
    float reactorRf=StaticUtils.Energy.getRFFromVolumeAndTemp(getReactorVolume(),getReactorHeat());
    reactorRf+=rfTransferred;
    setReactorHeat(StaticUtils.Energy.getTempFromVolumeAndRF(getReactorVolume(),reactorRf));
  }
  tempDiff=getReactorHeat() - getCoolantTemperature();
  if (tempDiff > 0.01f) {
    float rfTransferred=tempDiff * reactorToCoolantSystemHeatTransferCoefficient;
    float reactorRf=StaticUtils.Energy.getRFFromVolumeAndTemp(getReactorVolume(),getReactorHeat());
    if (isPassivelyCooled()) {
      rfTransferred*=passiveCoolingTransferEfficiency;
      generateEnergy(rfTransferred * passiveCoolingPowerEfficiency);
    }
 else {
      rfTransferred-=coolantContainer.onAbsorbHeat(rfTransferred);
      energyGeneratedLastTick=coolantContainer.getFluidVaporizedLastTick();
    }
    reactorRf-=rfTransferred;
    setReactorHeat(StaticUtils.Energy.getTempFromVolumeAndRF(getReactorVolume(),reactorRf));
  }
  tempDiff=getReactorHeat() - getPassiveCoolantTemperature();
  if (tempDiff > 0.000001f) {
    float rfLost=Math.max(1f,tempDiff * reactorHeatLossCoefficient);
    float reactorNewRf=Math.max(0f,StaticUtils.Energy.getRFFromVolumeAndTemp(getReactorVolume(),getReactorHeat()) - rfLost);
    setReactorHeat(StaticUtils.Energy.getTempFromVolumeAndRF(getReactorVolume(),reactorNewRf));
  }
  if (reactorHeat < 0f) {
    setReactorHeat(0f);
  }
  if (fuelHeat < 0f) {
    setFuelHeat(0f);
  }
  int energyAvailable=(int)getEnergyStored();
  int energyRemaining=energyAvailable;
  if (attachedPowerTaps.size() > 0 && energyRemaining > 0) {
    int splitEnergy=energyRemaining / attachedPowerTaps.size();
    for (    TileEntityReactorPowerTap powerTap : attachedPowerTaps) {
      if (energyRemaining <= 0) {
        break;
      }
      if (!powerTap.isConnected()) {
        continue;
      }
      energyRemaining-=splitEnergy - powerTap.onProvidePower(splitEnergy);
    }
    if (energyRemaining > 0) {
      for (      TileEntityReactorPowerTap powerTap : attachedPowerTaps) {
        if (energyRemaining <= 0) {
          break;
        }
        if (!powerTap.isConnected()) {
          continue;
        }
        energyRemaining=powerTap.onProvidePower(energyRemaining);
      }
    }
  }
  if (energyAvailable != energyRemaining) {
    reduceStoredEnergy((energyAvailable - energyRemaining));
  }
  ticksSinceLastUpdate++;
  if (ticksSinceLastUpdate >= ticksBetweenUpdates) {
    ticksSinceLastUpdate=0;
    sendTickUpdate();
  }
  for (  ITickableMultiblockPart tickable : attachedTickables) {
    tickable.onMultiblockServerTick();
  }
  if (attachedGlass.size() > 0 && fuelContainer.shouldUpdate()) {
    markReferenceCoordForUpdate();
  }
  return (oldHeat != this.getReactorHeat() || oldEnergy != this.getEnergyStored());
}