From cc5377d53be85ebc6aa6b2d8c513b16a5e77160f Mon Sep 17 00:00:00 2001 From: PrototypeTrousers Date: Mon, 6 Sep 2021 23:51:32 -0300 Subject: [PATCH] fluid storage bus handler cache tweaks and simplify energy cache --- gradle.properties | 2 +- .../fluids/parts/PartFluidStorageBus.java | 2 +- .../java/appeng/me/cache/EnergyGridCache.java | 104 ++---------------- .../parts/misc/PartSharedStorageBus.java | 27 ++++- 4 files changed, 39 insertions(+), 96 deletions(-) diff --git a/gradle.properties b/gradle.properties index b8bf904ab..a748b7835 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ aechannel=stable aebuild=7 aegroup=appeng aebasename=appliedenergistics2 -trousers=omni-fixes-v46q +trousers=omni-fixes-v46r ######################################################### # Versions # diff --git a/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java b/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java index c4b044bda..d299f9c66 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java +++ b/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java @@ -227,7 +227,7 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni { this.resetCacheLogic = 2; } - else + else if( this.resetCacheLogic < 2 ) { this.resetCacheLogic = 1; } diff --git a/src/main/java/appeng/me/cache/EnergyGridCache.java b/src/main/java/appeng/me/cache/EnergyGridCache.java index ce41eab7a..b17e1bc27 100644 --- a/src/main/java/appeng/me/cache/EnergyGridCache.java +++ b/src/main/java/appeng/me/cache/EnergyGridCache.java @@ -157,27 +157,13 @@ public class EnergyGridCache implements IEnergyGrid case PROVIDE_POWER: if( ev.storage.getPowerFlow() != AccessRestriction.WRITE ) { - if( !ongoingExtractOperation ) - { - addProvider( ev.storage ); - } - else - { - this.providersToAdd.add( ev.storage ); - } + this.providersToAdd.add( ev.storage ); } break; case REQUEST_POWER: if( ev.storage.getPowerFlow() != AccessRestriction.READ ) { - if( !ongoingInjectOperation ) - { - addRequester( ev.storage ); - } - else - { - this.requestersToAdd.add( ev.storage ); - } + this.requestersToAdd.add( ev.storage ); } break; } @@ -498,7 +484,11 @@ public class EnergyGridCache implements IEnergyGrid @Override public double getStoredPower() { - this.refreshPower(); + if( this.availableTicksSinceUpdate > 90 ) + { + this.refreshPower(); + } + return Math.max( 0.0, this.globalAvailablePower ); } @@ -571,22 +561,8 @@ public class EnergyGridCache implements IEnergyGrid this.globalMaxPower -= ps.getAEMaxPower(); this.globalAvailablePower -= ps.getAECurrentPower(); } - if( !ongoingExtractOperation ) - { - removeProvider( ps ); - } - else - { - this.providersToRemove.add( ps ); - } - if( !ongoingInjectOperation ) - { - removeRequester( ps ); - } - else - { - this.requestersToRemove.add( ps ); - } + this.providersToRemove.add( ps ); + this.requestersToRemove.add( ps ); } } @@ -602,50 +578,6 @@ public class EnergyGridCache implements IEnergyGrid } } - private void addRequester(IAEPowerStorage requester) { - Preconditions.checkState(!ongoingInjectOperation, - "Cannot modify energy requesters while energy is being injected."); - if( requester instanceof GridPowerStorage ) - { - requesters.put( 0, requester ); - } - else - { - requesters.put( 1, requester ); - } - } - - private void removeRequester(IAEPowerStorage requester) { - Preconditions.checkState(!ongoingInjectOperation, - "Cannot modify energy requesters while energy is being injected."); - if( requester != localStorage ) - { - requesters.remove( 1, requester ); - } - } - - private void addProvider(IAEPowerStorage provider) { - Preconditions.checkState(!ongoingExtractOperation, - "Cannot modify energy providers while energy is being extracted."); - if( provider instanceof GridPowerStorage ) - { - providers.put( 1, provider ); - } - else - { - providers.put( 0, provider ); - } - } - - private void removeProvider(IAEPowerStorage provider) - { - Preconditions.checkState( !ongoingExtractOperation, "Cannot modify energy providers while energy is being extracted." ); - if( provider != localStorage ) - { - providers.remove( 0, provider ); - } - } - @Override public void addNode( final IGridNode node, final IGridHost machine ) { @@ -677,26 +609,12 @@ public class EnergyGridCache implements IEnergyGrid if( current > 0 && ps.getPowerFlow() != AccessRestriction.WRITE ) { this.globalAvailablePower += current; - if( !ongoingExtractOperation ) - { - addProvider( ps ); - } - else - { - this.providersToAdd.add( ps ); - } + this.providersToAdd.add( ps ); } if( current < max && ps.getPowerFlow() != AccessRestriction.READ ) { - if( !ongoingInjectOperation ) - { - addRequester( ps ); - } - else - { - this.requestersToAdd.add( ps ); - } + this.requestersToAdd.add( ps ); } } } diff --git a/src/main/java/appeng/parts/misc/PartSharedStorageBus.java b/src/main/java/appeng/parts/misc/PartSharedStorageBus.java index 04dee9a90..0245b8a6e 100644 --- a/src/main/java/appeng/parts/misc/PartSharedStorageBus.java +++ b/src/main/java/appeng/parts/misc/PartSharedStorageBus.java @@ -23,8 +23,13 @@ import java.util.Collections; import java.util.List; import appeng.api.config.AccessRestriction; +import appeng.fluids.parts.PartFluidInterface; +import appeng.fluids.tile.TileFluidInterface; +import appeng.tile.misc.TileInterface; +import appeng.tile.networking.TileCableBus; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; @@ -161,7 +166,27 @@ public abstract class PartSharedStorageBus extends PartUpgradeable implements IG { if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) ) { - this.resetCache( false ); + + final TileEntity te = w.getTileEntity( neighbor ); + + // In case the TE was destroyed, we have to do a full reset immediately. + if( te instanceof TileCableBus ) + { + if( ( (TileCableBus) te ).getPart( this.getSide().getOpposite() ) instanceof PartFluidInterface ) + { + this.resetCache( true ); + this.resetCache(); + } + } + if( te == null || te instanceof TileFluidInterface ) + { + this.resetCache( true ); + this.resetCache(); + } + else + { + this.resetCache( false ); + } } }