Fixed Infinite Power Bug with Energy Acceptor.
This commit is contained in:
Vendored
+13
-10
@@ -270,19 +270,22 @@ public class EnergyGridCache implements IEnergyGrid
|
||||
if ( machine instanceof IAEPowerStorage )
|
||||
{
|
||||
IAEPowerStorage ps = (IAEPowerStorage) machine;
|
||||
if ( ps.getPowerFlow() != AccessRestriction.WRITE )
|
||||
globalAvailablePower -= ps.getAECurrentPower();
|
||||
if ( ps.isAEPublicPowerStorage() )
|
||||
{
|
||||
if ( ps.getPowerFlow() != AccessRestriction.WRITE )
|
||||
globalAvailablePower -= ps.getAECurrentPower();
|
||||
|
||||
if ( lastProvider == machine )
|
||||
lastProvider = null;
|
||||
if ( lastProvider == machine )
|
||||
lastProvider = null;
|
||||
|
||||
if ( lastRequestor == machine )
|
||||
lastRequestor = null;
|
||||
if ( lastRequestor == machine )
|
||||
lastRequestor = null;
|
||||
|
||||
globalMaxPower -= ps.getAEMaxPower();
|
||||
globalMaxPower -= ps.getAEMaxPower();
|
||||
|
||||
providers.remove( machine );
|
||||
requesters.remove( machine );
|
||||
providers.remove( machine );
|
||||
requesters.remove( machine );
|
||||
}
|
||||
}
|
||||
|
||||
if ( machine instanceof IStackWatcherHost )
|
||||
@@ -383,7 +386,7 @@ public class EnergyGridCache implements IEnergyGrid
|
||||
if ( availableTicksSinceUpdate > 90 )
|
||||
refreshPower();
|
||||
|
||||
return globalAvailablePower;
|
||||
return Math.max( 0.0, globalAvailablePower );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -45,8 +45,7 @@ public class TileEnergyAcceptor extends AENetworkPowerTile
|
||||
|
||||
if ( powerRequested > 0 )
|
||||
{
|
||||
internalCurrentPower += eg
|
||||
.injectPower( extractAEPower( powerRequested, Actionable.MODULATE, PowerMultiplier.ONE ), Actionable.MODULATE );
|
||||
eg.injectPower( extractAEPower( powerRequested, Actionable.MODULATE, PowerMultiplier.ONE ), Actionable.MODULATE );
|
||||
}
|
||||
}
|
||||
catch (GridAccessException e)
|
||||
@@ -58,9 +57,29 @@ public class TileEnergyAcceptor extends AENetworkPowerTile
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected double funnelPowerIntoStorage(double newPower, Actionable mode)
|
||||
{
|
||||
try
|
||||
{
|
||||
IEnergyGrid grid = gridProxy.getEnergy();
|
||||
double overFlow = grid.injectPower( newPower, Actionable.SIMULATE );
|
||||
|
||||
if ( mode == Actionable.MODULATE )
|
||||
grid.injectPower( Math.max( 0.0, newPower - overFlow ), Actionable.MODULATE );
|
||||
|
||||
return super.funnelPowerIntoStorage( overFlow, mode );
|
||||
}
|
||||
catch (GridAccessException e)
|
||||
{
|
||||
return super.funnelPowerIntoStorage( newPower, mode );
|
||||
}
|
||||
}
|
||||
|
||||
public TileEnergyAcceptor() {
|
||||
gridProxy.setIdlePowerUsage( 1.0 / 16.0 );
|
||||
gridProxy.setIdlePowerUsage( 0.0 );
|
||||
addNewHandler( new TilePowerRelayHandler() );
|
||||
internalMaxPower = 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user