package appeng.tile.powersink;
import net.minecraftforge.energy.IEnergyStorage;
import appeng.api.config.PowerUnits;
/**
* Adapts an {@link IExternalPowerSink} to Forges {@link IEnergyStorage}.
*/
class ForgeEnergyAdapter implements IEnergyStorage
{
private final IExternalPowerSink sink;
ForgeEnergyAdapter( IExternalPowerSink sink )
{
this.sink = sink;
}
@Override
public final int receiveEnergy( int maxReceive, boolean simulate )
{
final int networkDemand = (int) Math.floor( sink.getExternalPowerDemand( PowerUnits.RF, maxReceive ) );
final int used = Math.min( maxReceive, networkDemand );
if( !simulate )
{
sink.injectExternalPower( PowerUnits.RF, used );
}
return used;
}
@Override
public final int getEnergyStored()
{
return (int) Math.floor( PowerUnits.AE.convertTo( PowerUnits.RF, sink.getAECurrentPower() ) );
}
@Override
public final int getMaxEnergyStored( )
{
return (int) Math.floor( PowerUnits.AE.convertTo( PowerUnits.RF, sink.getAEMaxPower() ) );
}
@Override
public int extractEnergy( int maxExtract, boolean simulate )
{
return 0;
}
@Override
public boolean canExtract()
{
return false;
}
@Override
public boolean canReceive()
{
return true;
}
}