extra null check

This commit is contained in:
Salomão
2021-10-01 11:12:35 -03:00
parent cfb6b28a33
commit 2a466a0e66
2 changed files with 52 additions and 42 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ aechannel=stable
aebuild=7 aebuild=7
aegroup=appeng aegroup=appeng
aebasename=appliedenergistics2 aebasename=appliedenergistics2
trousers=omni-fixes-v47 trousers=omni-fixes-v47b
######################################################### #########################################################
# Versions # # Versions #
+51 -41
View File
@@ -161,34 +161,33 @@ public class EnergyGridCache implements IEnergyGrid
{ {
if( ev.storage.isAEPublicPowerStorage() ) if( ev.storage.isAEPublicPowerStorage() )
{ {
switch ( ev.type ) if( ev.type == PowerEventType.PROVIDE_POWER )
{ {
case PROVIDE_POWER: if( ev.storage.getPowerFlow() != AccessRestriction.WRITE )
if( ev.storage.getPowerFlow() != AccessRestriction.WRITE ) {
if( !ongoingExtractOperation )
{ {
if( !ongoingExtractOperation ) addProvider( ev.storage );
{
addProvider( ev.storage );
}
else
{
this.providersToAdd.add( ev.storage );
}
} }
break; else
case REQUEST_POWER:
if( ev.storage.getPowerFlow() != AccessRestriction.READ )
{ {
if( !ongoingInjectOperation ) this.providersToAdd.add( ev.storage );
{
addRequester( ev.storage );
}
else
{
this.requesterToAdd.add( ev.storage );
}
} }
break; }
}
else if( ev.type == PowerEventType.REQUEST_POWER )
{
if( ev.storage.getPowerFlow() != AccessRestriction.READ )
{
if( !ongoingInjectOperation )
{
addRequester( ev.storage );
}
else
{
this.requesterToAdd.add( ev.storage );
}
}
} }
} }
else else
@@ -335,6 +334,8 @@ public class EnergyGridCache implements IEnergyGrid
this.providers.addAll( providersToAdd ); this.providers.addAll( providersToAdd );
providersToAdd.clear(); providersToAdd.clear();
providers.removeIf( providerToRemove::contains );
this.providerToRemove.clear();
final Iterator<IAEPowerStorage> it = this.providers.iterator(); final Iterator<IAEPowerStorage> it = this.providers.iterator();
@@ -345,18 +346,24 @@ public class EnergyGridCache implements IEnergyGrid
while ( extractedPower < amt && it.hasNext() ) while ( extractedPower < amt && it.hasNext() )
{ {
final IAEPowerStorage node = it.next(); final IAEPowerStorage node = it.next();
if( node != null )
if( node == localStorage && mode == Actionable.MODULATE )
{ {
ls = true; if( node == localStorage && mode == Actionable.MODULATE )
continue; {
ls = true;
continue;
}
final double req = amt - extractedPower;
final double newPower = node.extractAEPower( req, mode, PowerMultiplier.ONE );
extractedPower += newPower;
if( newPower < req && mode == Actionable.MODULATE )
{
it.remove();
}
} }
else
final double req = amt - extractedPower;
final double newPower = node.extractAEPower( req, mode, PowerMultiplier.ONE );
extractedPower += newPower;
if( newPower < req && mode == Actionable.MODULATE )
{ {
it.remove(); it.remove();
} }
@@ -378,9 +385,6 @@ public class EnergyGridCache implements IEnergyGrid
} }
} }
providers.removeIf( p -> providerToRemove.contains( p ) );
this.providerToRemove.clear();
final double result = Math.min( extractedPower, amt ); final double result = Math.min( extractedPower, amt );
if( mode == Actionable.MODULATE ) if( mode == Actionable.MODULATE )
@@ -404,6 +408,8 @@ public class EnergyGridCache implements IEnergyGrid
this.requesters.addAll( requesterToAdd ); this.requesters.addAll( requesterToAdd );
requesterToAdd.clear(); requesterToAdd.clear();
requesters.removeIf( requesterToRemove::contains );
this.requesterToRemove.clear();
final Iterator<IAEPowerStorage> it = this.requesters.iterator(); final Iterator<IAEPowerStorage> it = this.requesters.iterator();
@@ -414,9 +420,16 @@ public class EnergyGridCache implements IEnergyGrid
{ {
final IAEPowerStorage node = it.next(); final IAEPowerStorage node = it.next();
amt = node.injectAEPower( amt, mode ); if( node != null )
{
amt = node.injectAEPower( amt, mode );
if( amt > 0 && mode == Actionable.MODULATE ) if( amt > 0 && mode == Actionable.MODULATE )
{
it.remove();
}
}
else
{ {
it.remove(); it.remove();
} }
@@ -426,9 +439,6 @@ public class EnergyGridCache implements IEnergyGrid
ongoingInjectOperation = false; ongoingInjectOperation = false;
} }
requesters.removeIf( r -> requesterToRemove.contains( r ) );
this.requesterToRemove.clear();
final double overflow = Math.max( 0.0, amt ); final double overflow = Math.max( 0.0, amt );
if( mode == Actionable.MODULATE ) if( mode == Actionable.MODULATE )