fix #3307 properly
This commit is contained in:
parent
e2c2361df8
commit
9417e8a59b
1 changed files with 29 additions and 7 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue