68 lines
1.2 KiB
Java
68 lines
1.2 KiB
Java
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;
|
|
}
|
|
|
|
}
|