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 )
|
if ( machine instanceof IAEPowerStorage )
|
||||||
{
|
{
|
||||||
IAEPowerStorage ps = (IAEPowerStorage) machine;
|
IAEPowerStorage ps = (IAEPowerStorage) machine;
|
||||||
if ( ps.getPowerFlow() != AccessRestriction.WRITE )
|
if ( ps.isAEPublicPowerStorage() )
|
||||||
globalAvailablePower -= ps.getAECurrentPower();
|
{
|
||||||
|
if ( ps.getPowerFlow() != AccessRestriction.WRITE )
|
||||||
|
globalAvailablePower -= ps.getAECurrentPower();
|
||||||
|
|
||||||
if ( lastProvider == machine )
|
if ( lastProvider == machine )
|
||||||
lastProvider = null;
|
lastProvider = null;
|
||||||
|
|
||||||
if ( lastRequestor == machine )
|
if ( lastRequestor == machine )
|
||||||
lastRequestor = null;
|
lastRequestor = null;
|
||||||
|
|
||||||
globalMaxPower -= ps.getAEMaxPower();
|
globalMaxPower -= ps.getAEMaxPower();
|
||||||
|
|
||||||
providers.remove( machine );
|
providers.remove( machine );
|
||||||
requesters.remove( machine );
|
requesters.remove( machine );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( machine instanceof IStackWatcherHost )
|
if ( machine instanceof IStackWatcherHost )
|
||||||
@@ -383,7 +386,7 @@ public class EnergyGridCache implements IEnergyGrid
|
|||||||
if ( availableTicksSinceUpdate > 90 )
|
if ( availableTicksSinceUpdate > 90 )
|
||||||
refreshPower();
|
refreshPower();
|
||||||
|
|
||||||
return globalAvailablePower;
|
return Math.max( 0.0, globalAvailablePower );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ public class TileEnergyAcceptor extends AENetworkPowerTile
|
|||||||
|
|
||||||
if ( powerRequested > 0 )
|
if ( powerRequested > 0 )
|
||||||
{
|
{
|
||||||
internalCurrentPower += eg
|
eg.injectPower( extractAEPower( powerRequested, Actionable.MODULATE, PowerMultiplier.ONE ), Actionable.MODULATE );
|
||||||
.injectPower( extractAEPower( powerRequested, Actionable.MODULATE, PowerMultiplier.ONE ), Actionable.MODULATE );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (GridAccessException e)
|
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() {
|
public TileEnergyAcceptor() {
|
||||||
gridProxy.setIdlePowerUsage( 1.0 / 16.0 );
|
gridProxy.setIdlePowerUsage( 0.0 );
|
||||||
addNewHandler( new TilePowerRelayHandler() );
|
addNewHandler( new TilePowerRelayHandler() );
|
||||||
|
internalMaxPower = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user