diff --git a/src/main/java/appeng/me/cache/CraftingGridCache.java b/src/main/java/appeng/me/cache/CraftingGridCache.java index 81c87d364..8810da918 100644 --- a/src/main/java/appeng/me/cache/CraftingGridCache.java +++ b/src/main/java/appeng/me/cache/CraftingGridCache.java @@ -489,7 +489,8 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper if( ais.getItem() == whatToCraft.getItem() && ( !ais.getItem().getHasSubtypes() || ais.getItemDamage() == whatToCraft.getItemDamage() ) ) { // TODO: check if OK - if( details.isValidItemForSlot( slotIndex, ais.createItemStack(), world ) ) + // TODO: this is slightly hacky, but fine as long as we only deal with itemstacks + if( details.isValidItemForSlot( slotIndex, ais.asItemStackRepresentation(), world ) ) { return this.craftableItems.get( ais ); } diff --git a/src/main/java/appeng/util/helpers/ItemComparisonHelper.java b/src/main/java/appeng/util/helpers/ItemComparisonHelper.java index d11f190a0..db4b55e36 100644 --- a/src/main/java/appeng/util/helpers/ItemComparisonHelper.java +++ b/src/main/java/appeng/util/helpers/ItemComparisonHelper.java @@ -180,10 +180,25 @@ public class ItemComparisonHelper { return true; } + + final boolean isLeftEmpty = left == null || left.hasNoTags(); + final boolean isRightEmpty = right == null || right.hasNoTags(); + + if( isLeftEmpty && isRightEmpty ) + { + return true; + } + + if( isLeftEmpty != isRightEmpty ) + { + return false; + } + if( left != null ) { return left.equals( right ); } + return false; } }