diff --git a/gradle.properties b/gradle.properties index 2cced3398..b3b7beca5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ aechannel=stable aebuild=7 aegroup=appeng aebasename=appliedenergistics2 -trousers=omni-fixes-v46e +trousers=omni-fixes-v46f ######################################################### # Versions # diff --git a/src/main/java/appeng/me/cache/CraftingGridCache.java b/src/main/java/appeng/me/cache/CraftingGridCache.java index 76ee54a91..6f5ea6365 100644 --- a/src/main/java/appeng/me/cache/CraftingGridCache.java +++ b/src/main/java/appeng/me/cache/CraftingGridCache.java @@ -35,7 +35,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ThreadFactory; -import appeng.api.storage.data.IAEFluidStack; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; @@ -272,6 +271,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } final Object2ObjectMap> oldItems = new Object2ObjectOpenHashMap<>(this.craftableItems); + final Set oldEmitableItems = new HashSet<>(this.emitableItems); // erase list. this.craftingMethods.clear(); @@ -317,14 +317,42 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper ObjectSet>> i = oldItems.entrySet(); for ( Entry> ais : i) { if (!this.craftableItems.containsKey( ais.getKey() )) { - craftablesChanged.put( ais.getKey().setCraftable( false ), ais.getValue() ); + IAEItemStack changedStack = ais.getKey().copy(); + changedStack.reset(); + changedStack.setCraftable( false ); + craftablesChanged.put( changedStack, ais.getValue() ); } } ObjectSet>> j = this.craftableItems.entrySet(); for ( Entry> ais : j) { if (!oldItems.containsKey( ais )){ - craftablesChanged.put( ais.getKey().setCraftable( true ), ais.getValue() ); + IAEItemStack changedStack = ais.getKey().copy(); + changedStack.reset(); + changedStack.setCraftable( true ); + craftablesChanged.put( changedStack, ais.getValue() ); + } + } + + for( final IAEItemStack st : oldEmitableItems ) + { + if( !emitableItems.contains( st ) ) + { + IAEItemStack changedStack = st.copy(); + changedStack.reset(); + changedStack.setCraftable( false ); + craftablesChanged.put( changedStack, null ); + } + } + + for( final IAEItemStack st : this.emitableItems ) + { + if( !oldEmitableItems.contains( st ) ) + { + IAEItemStack changedStack = st.copy(); + changedStack.reset(); + changedStack.setCraftable( true ); + craftablesChanged.put( changedStack, null ); } } diff --git a/src/main/java/appeng/me/cache/NetworkMonitor.java b/src/main/java/appeng/me/cache/NetworkMonitor.java index 5ec5cb76a..8d82423fc 100644 --- a/src/main/java/appeng/me/cache/NetworkMonitor.java +++ b/src/main/java/appeng/me/cache/NetworkMonitor.java @@ -214,11 +214,13 @@ public class NetworkMonitor> implements IMEMonitor for( final T changedItem : input ) { if (changedItem.isCraftable()) { - this.cachedList.add( changedItem.copy().setCraftable( true ) ); + this.cachedList.add( changedItem ); } else { - this.cachedList.findPrecise( changedItem ).setCraftable( false ); + T i = this.cachedList.findPrecise( changedItem ); + if (i != null) + i.setCraftable( false ); } } } diff --git a/src/main/java/appeng/parts/automation/PartLevelEmitter.java b/src/main/java/appeng/parts/automation/PartLevelEmitter.java index 3ae713022..6420e8d69 100644 --- a/src/main/java/appeng/parts/automation/PartLevelEmitter.java +++ b/src/main/java/appeng/parts/automation/PartLevelEmitter.java @@ -507,6 +507,7 @@ public class PartLevelEmitter extends PartUpgradeable implements IEnergyWatcherH public void upgradesChanged() { this.configureWatchers(); + this.updateState(); } @Override