From 169f6393d1e6b764f6b00d74f90c36c887e50db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Salom=C3=A3o?= Date: Thu, 22 Oct 2020 01:30:59 -0300 Subject: [PATCH] move penalty up the chain --- .../java/appeng/helpers/DualityInterface.java | 15 ++++++++-- .../appeng/helpers/MultiCraftingTracker.java | 11 ++------ .../parts/automation/PartExportBus.java | 28 ++++++++++++++----- 3 files changed, 36 insertions(+), 18 deletions(-) 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; } }