package shedar.mods.ic2.nuclearcontrol.crossmod.bigreactors;
import erogenousbeef.bigreactors.common.multiblock.MultiblockReactor;
import net.minecraft.nbt.NBTTagCompound;
import shedar.mods.ic2.nuclearcontrol.utils.NCLog;
import erogenousbeef.bigreactors.common.multiblock.interfaces.ITickableMultiblockPart;
import erogenousbeef.bigreactors.common.multiblock.tileentity.TileEntityReactorPartBase;
import erogenousbeef.core.multiblock.MultiblockValidationException;
public class TileEntityBlockFetcher extends TileEntityReactorPartBase implements ITickableMultiblockPart{
private boolean isReactorOn;
private float energyStored;
private float energyGen;
private float EstoredPer;
private int temp;
private boolean shouldBlockCache;
public TileEntityBlockFetcher(){
shouldBlockCache = false;
}
@Override
public void isGoodForBottom() throws MultiblockValidationException {}
@Override
public void isGoodForFrame() throws MultiblockValidationException {
throw new MultiblockValidationException(String.format("%d, %d, %d - Reactor Monitor may only be used on the exterior faces, not as part of a reactor's frame or interior", xCoord, yCoord, zCoord));
}
@Override
public void isGoodForInterior() throws MultiblockValidationException {
throw new MultiblockValidationException(String.format("%d, %d, %d - Reactor Monitor may only be used on the exterior faces, not as part of a reactor's frame or interior", xCoord, yCoord, zCoord));
}
@Override
public void isGoodForSides() throws MultiblockValidationException {}
@Override
public void isGoodForTop() throws MultiblockValidationException {}
@Override
public void onMachineActivated() {}
@Override
public void onMachineDeactivated() {
}
@Override
public void onMachineBroken() {
super.onMachineBroken();
}
@Override
public void onMultiblockServerTick() {
if(shouldBlockCache){
isReactorOn = this.getReactorController().getActive();
energyStored = this.getReactorController().getEnergyStored();
energyGen = this.getReactorController().getEnergyGeneratedLastTick();
EstoredPer = this.getReactorController().getEnergyStoredPercentage();
temp = (int) this.getReactorController().getFuelHeat();
//NCLog.fatal(this.getReactorController().getEnergyStored());//Current Stored Energy
//NCLog.fatal(energyStored);
//NCLog.fatal(this.getReactorController().getActive());//On or Off
//NCLog.fatal(this.getReactorController().getEnergyGeneratedLastTick());//String.format("%.2f flux per tick", this.getReactorController().getEnergyGeneratedLastTick())
}
}
@Override
public void readFromNBT(NBTTagCompound tag){
super.readFromNBT(tag);
shouldBlockCache = tag.getBoolean("Cache");
}
@Override
public void writeToNBT(NBTTagCompound tag){
super.writeToNBT(tag);
tag.setBoolean("Cache", shouldBlockCache);
}
public float getEnergyStored(){
return energyStored;
}
public float getEnergyGenerated(){
return energyGen;
}
public boolean isReactorOnline(){
return isReactorOn;
}
public void startFetching(){
shouldBlockCache = true;
}
public float getEnergyOutPercent(){
return EstoredPer;
}
public int getTemp(){
return temp;
}
public MultiblockReactor getReactor(){return this.getReactorController();}
}