diff --git a/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java b/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java index 7ece80a36..a32c9b95a 100644 --- a/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java +++ b/src/main/java/appeng/fluids/parts/PartFluidStorageBus.java @@ -264,18 +264,19 @@ public class PartFluidStorageBus extends PartSharedStorageBus implements IMEMoni @Override public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource source ) { - try + if( source == this.source || source.machine().map( machine -> machine == this ).orElse( false ) ) { - if( this.getProxy().isActive() ) + try { - this.getProxy() - .getStorage() - .postAlterationOfStoredItems( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ), change, this.source ); + if( this.getProxy().isActive() ) + { + this.getProxy().getStorage().postAlterationOfStoredItems( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ), change, this.source ); + } + } + catch( final GridAccessException e ) + { + // :( } - } - catch( final GridAccessException e ) - { - // :( } } diff --git a/src/main/java/appeng/me/cache/NetworkMonitor.java b/src/main/java/appeng/me/cache/NetworkMonitor.java index c875fe71a..306eaba21 100644 --- a/src/main/java/appeng/me/cache/NetworkMonitor.java +++ b/src/main/java/appeng/me/cache/NetworkMonitor.java @@ -44,6 +44,8 @@ import appeng.api.storage.IStorageChannel; import appeng.api.storage.data.IAEStack; import appeng.api.storage.data.IItemList; import appeng.me.storage.ItemWatcher; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; public class NetworkMonitor> implements IMEMonitor @@ -58,7 +60,7 @@ public class NetworkMonitor> implements IMEMonitor @Nonnull private final IItemList cachedList; @Nonnull - private final Map, Object> listeners; + private final Object2ObjectMap, Object> listeners; private boolean sendEvent = false; private boolean hasChanged = false; @@ -70,7 +72,7 @@ public class NetworkMonitor> implements IMEMonitor this.myGridCache = cache; this.myChannel = chan; this.cachedList = chan.createList(); - this.listeners = new HashMap<>(); + this.listeners = new Object2ObjectOpenHashMap<>(); } @Override diff --git a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java index a278aa363..ff75b6c34 100644 --- a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java +++ b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java @@ -23,6 +23,8 @@ import java.util.*; import appeng.api.config.Settings; import appeng.api.config.StorageFilter; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; @@ -49,7 +51,7 @@ import org.apache.commons.lang3.tuple.Pair; */ class ItemHandlerAdapter implements IMEInventory, IBaseMonitor, ITickingMonitor { - private final Map, Object> listeners = new HashMap<>(); + private final Object2ObjectMap, Object> listeners = new Object2ObjectOpenHashMap<>(); private IActionSource mySource; private final IItemHandler itemHandler; private final IGridProxyable proxyable; diff --git a/src/main/java/appeng/parts/misc/ItemRepositoryAdapter.java b/src/main/java/appeng/parts/misc/ItemRepositoryAdapter.java index f28ba6cd9..d3b12fac4 100644 --- a/src/main/java/appeng/parts/misc/ItemRepositoryAdapter.java +++ b/src/main/java/appeng/parts/misc/ItemRepositoryAdapter.java @@ -7,6 +7,8 @@ import appeng.api.storage.IStorageChannel; import appeng.core.AELog; import com.jaquadro.minecraft.storagedrawers.api.capabilities.IItemRepository; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.item.ItemStack; import appeng.api.AEApi; @@ -33,7 +35,7 @@ import javax.annotation.Nonnull; class ItemRepositoryAdapter implements IMEInventory, IBaseMonitor, ITickingMonitor { - private final Map, Object> listeners = new HashMap<>(); + private final Object2ObjectMap, Object> listeners = new Object2ObjectOpenHashMap<>(); private IActionSource mySource; private final IItemRepository itemRepository; private final IGridProxyable proxyable; diff --git a/src/main/java/appeng/parts/misc/PartStorageBus.java b/src/main/java/appeng/parts/misc/PartStorageBus.java index 9731f13a7..771f4190e 100644 --- a/src/main/java/appeng/parts/misc/PartStorageBus.java +++ b/src/main/java/appeng/parts/misc/PartStorageBus.java @@ -258,19 +258,19 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC @Override public void postChange( final IBaseMonitor monitor, final Iterable change, final IActionSource source ) { - try + if( source == this.mySrc || source.machine().map( machine -> machine == this ).orElse( false ) ) { - if( this.getProxy().isActive() ) + try { - this.getProxy() - .getStorage() - .postAlterationOfStoredItems( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ), change, - this.mySrc ); + if( this.getProxy().isActive() ) + { + this.getProxy().getStorage().postAlterationOfStoredItems( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ), change, this.mySrc ); + } + } + catch( final GridAccessException e ) + { + // :( } - } - catch( final GridAccessException e ) - { - // :( } }