diff --git a/src/main/java/appeng/helpers/DualityInterface.java b/src/main/java/appeng/helpers/DualityInterface.java index 97060c152..dc91f3356 100644 --- a/src/main/java/appeng/helpers/DualityInterface.java +++ b/src/main/java/appeng/helpers/DualityInterface.java @@ -107,6 +107,8 @@ import static gregtech.api.block.machines.BlockMachine.getMetaTileEntity; public class DualityInterface implements IGridTickable, IStorageMonitorable, IInventoryDestination, IAEAppEngInventory, IConfigManagerHost, ICraftingProvider, IUpgradeableHost { + private int[] failedCraftTriesSlot = {0,0,0,0,0,0,0,0,0}; + public static final int NUMBER_OF_STORAGE_SLOTS = 9; public static final int NUMBER_OF_CONFIG_SLOTS = 9; public static final int NUMBER_OF_PATTERN_SLOTS = 9; @@ -886,8 +888,17 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn { if( this.getInstalledUpgrades( Upgrades.CRAFTING ) > 0 && itemStack != null ) { - return this.craftingTracker.handleCrafting( x, itemStack.getStackSize(), itemStack, d, this.iHost.getTileEntity().getWorld(), + if (this.failedCraftTriesSlot[x] <= 0) + { + boolean crafted = this.craftingTracker.handleCrafting( x, itemStack.getStackSize(), itemStack, d, this.iHost.getTileEntity().getWorld(), this.gridProxy.getGrid(), this.gridProxy.getCrafting(), this.mySource ); + + if (crafted) this.failedCraftTriesSlot[x] = 0; + else{ + this.failedCraftTriesSlot[x] += 2; + } + } + this.failedCraftTriesSlot[x] -= 1; } } catch( final GridAccessException e ) diff --git a/src/main/java/appeng/parts/automation/PartExportBus.java b/src/main/java/appeng/parts/automation/PartExportBus.java index 755051441..85bd90b73 100644 --- a/src/main/java/appeng/parts/automation/PartExportBus.java +++ b/src/main/java/appeng/parts/automation/PartExportBus.java @@ -70,6 +70,8 @@ import appeng.util.item.AEItemStack; public class PartExportBus extends PartSharedItemBus implements ICraftingRequester { + private final int[] failedCraftTriesSlot = {0,0,0,0,0,0,0,0,0}; + public static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "part/export_bus_base" ); @PartModels @@ -140,7 +142,7 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest if( destination != null ) { - int x; + int x = 0; for( x = 0; x < this.availableSlots() && this.itemToSend > 0; x++ ) { @@ -151,8 +153,16 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest if( ais == null || this.itemToSend <= 0 ) continue; if ( this.craftOnly() ) { - this.didSomething = this.craftingTracker.handleCrafting(slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), - this.getProxy().getGrid(), cg, this.mySrc) || this.didSomething; + if (this.failedCraftTriesSlot[x] <= 0) { + + this.didSomething = this.craftingTracker.handleCrafting(slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), + this.getProxy().getGrid(), cg, this.mySrc) || this.didSomething; + + if (this.didSomething) this.failedCraftTriesSlot[x] = 0; + else this.failedCraftTriesSlot[x] += 2; + } + this.failedCraftTriesSlot[x] -= 1; + continue; } final long before = this.itemToSend; @@ -175,8 +185,15 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest if( this.itemToSend == before && this.isCraftingEnabled() ) { - this.didSomething = this.craftingTracker.handleCrafting(slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), + if (this.failedCraftTriesSlot[x] <= 0) { + + this.didSomething = this.craftingTracker.handleCrafting(slotToExport, this.itemToSend, ais, destination, this.getTile().getWorld(), this.getProxy().getGrid(), cg, this.mySrc) || this.didSomething; + + if (this.didSomething) this.failedCraftTriesSlot[x] = 0; + else this.failedCraftTriesSlot[x] += 2; + } + this.failedCraftTriesSlot[x] -= 1; } }