diff --git a/src/main/java/appeng/helpers/DualityInterface.java b/src/main/java/appeng/helpers/DualityInterface.java index d3650c0c3..2af9efda9 100644 --- a/src/main/java/appeng/helpers/DualityInterface.java +++ b/src/main/java/appeng/helpers/DualityInterface.java @@ -115,6 +115,7 @@ import appeng.util.item.AEItemStack; 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; @@ -696,9 +697,9 @@ public class DualityInterface implements IGridTickable, IStorageMonitorable, IIn throw new IllegalStateException( "bad attempt at managing inventory. ( addItems )" ); } } - else + else { - changed = this.handleCrafting( x, adaptor, itemStack ) || changed; + changed = this.handleCrafting(x, adaptor, itemStack) || changed; } } else if( itemStack.getStackSize() < 0 ) @@ -766,8 +767,16 @@ 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] += 20; + } + this.failedCraftTriesSlot[x] -= 1; + } } catch( final GridAccessException e ) diff --git a/src/main/java/appeng/helpers/MultiCraftingTracker.java b/src/main/java/appeng/helpers/MultiCraftingTracker.java index bf75da380..464ef0716 100644 --- a/src/main/java/appeng/helpers/MultiCraftingTracker.java +++ b/src/main/java/appeng/helpers/MultiCraftingTracker.java @@ -46,7 +46,6 @@ public class MultiCraftingTracker private Future[] jobs = null; private ICraftingLink[] links = null; - private int failedCraftTriesSlot[] = {0,0,0,0,0,0,0,0,0}; public MultiCraftingTracker( final ICraftingRequester o, final int size ) { @@ -131,14 +130,10 @@ public class MultiCraftingTracker if( this.getLink( x ) == null ) { final IAEItemStack aisC = ais.copy(); - if (this.failedCraftTriesSlot[x] <= 0) { - aisC.setStackSize(itemToCraft); - this.setJob(x, cg.beginCraftingJob(w, g, mySrc, aisC, null)); - } - if (getJob(x) != null) this.failedCraftTriesSlot[x] = 0; - else this.failedCraftTriesSlot[x] += 20; + aisC.setStackSize( itemToCraft ); + + this.setJob( x, cg.beginCraftingJob( w, g, mySrc, aisC, null ) ); } - this.failedCraftTriesSlot[x] -= 1; } } return false; diff --git a/src/main/java/appeng/parts/automation/PartExportBus.java b/src/main/java/appeng/parts/automation/PartExportBus.java index d428e0ae2..f73f03904 100644 --- a/src/main/java/appeng/parts/automation/PartExportBus.java +++ b/src/main/java/appeng/parts/automation/PartExportBus.java @@ -70,6 +70,7 @@ import appeng.util.item.AEItemStack; public class PartExportBus extends PartSharedItemBus implements ICraftingRequester { + private 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" ); @@ -149,12 +150,18 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest final IAEItemStack ais = this.getConfig().getAEStackInSlot( slotToExport ); - if( ais == null || this.itemToSend <= 0 || this.craftOnly() ) - { - if( this.isCraftingEnabled() ) + if( ais == null || this.itemToSend <= 0 || this.craftOnly() ) { + if (this.isCraftingEnabled()) { - 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] += 20; + } + this.failedCraftTriesSlot[x] -= 1; } continue; } @@ -179,8 +186,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(), - 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] += 20; + } + this.failedCraftTriesSlot[x] -= 1; } }