diff --git a/src/main/java/appeng/core/features/AEFeature.java b/src/main/java/appeng/core/features/AEFeature.java index f7e1e707c..edfe86917 100644 --- a/src/main/java/appeng/core/features/AEFeature.java +++ b/src/main/java/appeng/core/features/AEFeature.java @@ -164,6 +164,7 @@ public enum AEFeature PATTERNS( "Patterns", Constants.CATEGORY_CRAFTING_FEATURES ), CRAFTING_CPU( "CraftingCPU", Constants.CATEGORY_CRAFTING_FEATURES ), CRAFTING_MANAGER_FALLBACK( "CraftingManagerFallback", Constants.CATEGORY_CRAFTING_FEATURES, "Use CraftingManager to find an alternative recipe, after a pattern rejected an ingredient. Should be enabled to avoid issues, but can have a minor performance impact." ), + INSANE_BLOCKING_MODE( "InsaneBlockingMode", Constants.CATEGORY_CRAFTING_FEATURES, "Use the default AE2 blocking mode that doesn't work on any machines" ), BASIC_CARDS( "BasicCards", Constants.CATEGORY_UPGRADES ), ADVANCED_CARDS( "AdvancedCards", Constants.CATEGORY_UPGRADES ), diff --git a/src/main/java/appeng/helpers/DualityInterface.java b/src/main/java/appeng/helpers/DualityInterface.java index 3c1791bca..d0fc09735 100644 --- a/src/main/java/appeng/helpers/DualityInterface.java +++ b/src/main/java/appeng/helpers/DualityInterface.java @@ -88,6 +88,8 @@ import appeng.api.util.AEPartLocation; import appeng.api.util.DimensionalCoord; import appeng.api.util.IConfigManager; import appeng.capabilities.Capabilities; +import appeng.core.AEConfig; +import appeng.core.features.AEFeature; import appeng.core.settings.TickRates; import appeng.me.GridAccessException; import appeng.me.helpers.AENetworkProxy; @@ -893,6 +895,13 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn }; } + private static boolean invIsBlocked(InventoryAdaptor inv) { + if (AEConfig.instance().isFeatureEnabled(AEFeature.INSANE_BLOCKING_MODE)) + return !inv.simulateRemove( 1, ItemStack.EMPTY, null ).isEmpty(); + else + return inv.containsItems(); + } + @Override public boolean pushPattern( final ICraftingPatternDetails patternDetails, final InventoryCrafting table ) { @@ -941,7 +950,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn { if( this.isBlocking() ) { - if( !ad.simulateRemove( 1, ItemStack.EMPTY, null ).isEmpty() ) + if( invIsBlocked(ad) ) { continue; } @@ -992,7 +1001,7 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn final InventoryAdaptor ad = InventoryAdaptor.getAdaptor( te, s.getOpposite() ); if( ad != null ) { - if( ad.simulateRemove( 1, ItemStack.EMPTY, null ).isEmpty() ) + if( !invIsBlocked(ad) ) { allAreBusy = false; break;