GTEU input fix

This commit is contained in:
Syrcan
2022-01-22 10:11:23 +01:00
parent 40bd96d21c
commit 603452de1f
@@ -10,6 +10,8 @@ public class GTCEEnergyAdapter implements IEnergyContainer
{ {
private final IExternalPowerSink sink; private final IExternalPowerSink sink;
double EUBuffer;
GTCEEnergyAdapter( IExternalPowerSink sink ) GTCEEnergyAdapter( IExternalPowerSink sink )
{ {
this.sink = sink; this.sink = sink;
@@ -18,9 +20,29 @@ public class GTCEEnergyAdapter implements IEnergyContainer
@Override @Override
public long acceptEnergyFromNetwork( EnumFacing enumFacing, long voltage, long amperage ) public long acceptEnergyFromNetwork( EnumFacing enumFacing, long voltage, long amperage )
{ {
final double overflow = this.sink.injectExternalPower( PowerUnits.GTCEU, (double) voltage, Actionable.MODULATE ); final double power = voltage * amperage;
final double oldBuffer = EUBuffer;
return (long) ( voltage - overflow ); EUBuffer = this.sink.injectExternalPower( PowerUnits.GTCEU, power + EUBuffer, Actionable.MODULATE );
// if the overflow went down, all inputs were consumed
if ( EUBuffer <= oldBuffer )
{
return amperage;
}
// if overflow is greater than the inputs, nothing was consumed
if ( EUBuffer >= power )
{
EUBuffer -= power;
return 0;
}
// determine how many amps are being used
final double usedEU = power + oldBuffer - EUBuffer;
final long ampsUsed = (long) Math.ceil( usedEU / ( (double) voltage ) );
// adjust the overflow
EUBuffer += usedEU % voltage;
return ampsUsed;
} }
@Override @Override