fix #3307 properly

This commit is contained in:
Adrian Siekierka 2017-04-08 09:53:19 +02:00
parent e2c2361df8
commit 9417e8a59b

View file

@ -9,7 +9,9 @@
package buildcraft.factory; package buildcraft.factory;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.List;
import buildcraft.api.tiles.IDebuggable;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory; import net.minecraft.inventory.ISidedInventory;
@ -40,7 +42,7 @@ import buildcraft.core.lib.utils.CraftingUtils;
import buildcraft.core.lib.utils.Utils; import buildcraft.core.lib.utils.Utils;
import buildcraft.core.proxy.CoreProxy; import buildcraft.core.proxy.CoreProxy;
public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory, IHasWork, IRedstoneEngineReceiver { public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory, IHasWork, IRedstoneEngineReceiver, IDebuggable {
public static final int SLOT_RESULT = 9; public static final int SLOT_RESULT = 9;
public static final int CRAFT_TIME = 256; public static final int CRAFT_TIME = 256;
@ -51,7 +53,21 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory
public LocalInventoryCrafting craftMatrix = new LocalInventoryCrafting(); public LocalInventoryCrafting craftMatrix = new LocalInventoryCrafting();
private SimpleInventory resultInv = new SimpleInventory(1, "Auto Workbench", 64); private SimpleInventory resultInv = new SimpleInventory(1, "Auto Workbench", 64);
private SimpleInventory inputInv = new SimpleInventory(9, "Auto Workbench", 64); private SimpleInventory inputInv = new SimpleInventory(9, "Auto Workbench", 64) {
@Override
public void setInventorySlotContents(int slotId, ItemStack itemstack) {
super.setInventorySlotContents(slotId, itemstack);
if (craftMatrix.isInputMissing && getStackInSlot(slotId) != null) {
craftMatrix.isInputMissing = false;
}
}
@Override
public void markDirty() {
super.markDirty();
craftMatrix.isInputMissing = false;
}
};
private IInventory inv = InventoryConcatenator.make().add(inputInv).add(resultInv).add(craftMatrix); private IInventory inv = InventoryConcatenator.make().add(inputInv).add(resultInv).add(craftMatrix);
@ -87,9 +103,15 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory
return tile instanceof IRedstoneEngine; return tile instanceof IRedstoneEngine;
} }
@Override
public void getDebugInfo(List<String> info, ForgeDirection side, ItemStack debugger, EntityPlayer player) {
info.add("isInputMissing = " + craftMatrix.isInputMissing);
info.add("isOutputJammed = " + craftMatrix.isOutputJammed);
}
public class LocalInventoryCrafting extends InventoryCrafting { public class LocalInventoryCrafting extends InventoryCrafting {
public IRecipe currentRecipe; public IRecipe currentRecipe;
public boolean useBindings, isJammed; public boolean useBindings, isOutputJammed, isInputMissing;
public LocalInventoryCrafting() { public LocalInventoryCrafting() {
super(new ContainerDummy(), 3, 3); super(new ContainerDummy(), 3, 3);
@ -145,9 +167,9 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory
!StackHelper.canStacksMerge(resultInto, result) !StackHelper.canStacksMerge(resultInto, result)
|| resultInto.stackSize + result.stackSize > resultInto.getMaxStackSize()) || resultInto.stackSize + result.stackSize > resultInto.getMaxStackSize())
) { ) {
isJammed = true; isOutputJammed = true;
} else { } else {
isJammed = false; isOutputJammed = false;
} }
} }
@ -286,7 +308,7 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory
scheduledCacheRebuild = false; scheduledCacheRebuild = false;
} }
if (craftMatrix.isJammed || craftMatrix.currentRecipe == null) { if (craftMatrix.isOutputJammed || craftMatrix.isInputMissing || craftMatrix.currentRecipe == null) {
progress = 0; progress = 0;
return; return;
} }
@ -346,7 +368,7 @@ public class TileAutoWorkbench extends TileBuildCraft implements ISidedInventory
} }
} }
if (!found) { if (!found) {
craftMatrix.isJammed = true; craftMatrix.isInputMissing = true;
progress = 0; progress = 0;
return; return;
} }