Fixed Infinite Power Bug with Energy Acceptor.
This commit is contained in:
parent
08df0f8b06
commit
ca46b3e2d9
23
me/cache/EnergyGridCache.java
vendored
23
me/cache/EnergyGridCache.java
vendored
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue