diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index 51034d4f7..95e4292ff 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -899,7 +899,10 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain if (s instanceof SlotPlayerInv || s instanceof SlotPlayerHotBar) { super.drawSlot(s); } else if (s instanceof AppEngSlot) { - ((AppEngSlot) s).setDisplay(true); + AppEngSlot appEngSlot = ((AppEngSlot) s); + appEngSlot.setDisplay(true); + appEngSlot.setReturnAsSingleStack(true); + this.zLevel = 100.0F; this.itemRender.zLevel = 100.0F; @@ -913,7 +916,7 @@ public abstract class AEBaseGui extends GuiContainer implements IMTModGuiContain // Annoying but easier than trying to splice into render item super.drawSlot(s); - this.stackSizeRenderer.renderStackSize(this.fontRenderer, AEItemStack.fromItemStack(((AppEngSlot) s).getDisplayStack()), s.xPos, s.yPos); + this.stackSizeRenderer.renderStackSize(this.fontRenderer, AEItemStack.fromItemStack(appEngSlot.getDisplayStack()), s.xPos, s.yPos); return; } else { super.drawSlot(s); diff --git a/src/main/java/appeng/container/implementations/ContainerPatternEncoder.java b/src/main/java/appeng/container/implementations/ContainerPatternEncoder.java index b5c490861..bfa2c3018 100644 --- a/src/main/java/appeng/container/implementations/ContainerPatternEncoder.java +++ b/src/main/java/appeng/container/implementations/ContainerPatternEncoder.java @@ -425,7 +425,7 @@ public abstract class ContainerPatternEncoder extends ContainerMEMonitorable imp return new ItemStack[]{out}; } } else { - final List list = new ArrayList<>(); + final List list = new ArrayList<>(outputSlots.length); boolean hasValue = false; for (final OptionalSlotFake outputSlot : this.outputSlots) { @@ -438,7 +438,7 @@ public abstract class ContainerPatternEncoder extends ContainerMEMonitorable imp } if (hasValue) { - return list.toArray(new ItemStack[0]); + return list.toArray(new ItemStack[outputSlots.length]); } } diff --git a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java index c39893b01..3c7429b01 100644 --- a/src/main/java/appeng/container/implementations/ContainerPatternTerm.java +++ b/src/main/java/appeng/container/implementations/ContainerPatternTerm.java @@ -21,50 +21,35 @@ package appeng.container.implementations; import appeng.api.AEApi; import appeng.api.config.Actionable; -import appeng.api.definitions.IDefinitions; import appeng.api.storage.IMEMonitor; import appeng.api.storage.ITerminalHost; import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import appeng.container.ContainerNull; -import appeng.container.guisync.GuiSync; -import appeng.container.slot.AppEngSlot; import appeng.container.slot.OptionalSlotFake; import appeng.container.slot.SlotFakeCraftingMatrix; import appeng.container.slot.SlotPatternOutputs; import appeng.container.slot.SlotPatternTerm; -import appeng.container.slot.SlotPlayerHotBar; -import appeng.container.slot.SlotPlayerInv; import appeng.container.slot.SlotRestrictedInput; import appeng.core.sync.packets.PacketPatternSlot; import appeng.items.storage.ItemViewCell; import appeng.me.helpers.MachineSource; -import appeng.parts.reporting.PartPatternTerminal; -import appeng.tile.inventory.AppEngInternalInventory; import appeng.util.InventoryAdaptor; import appeng.util.Platform; import appeng.util.inv.AdaptorItemHandler; -import appeng.util.inv.InvOperation; import appeng.util.inv.WrapperCursorItemHandler; import appeng.util.item.AEItemStack; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.inventory.*; +import net.minecraft.inventory.InventoryCraftResult; +import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.inventory.SlotCrafting; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; -import net.minecraft.nbt.NBTBase; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.world.World; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.wrapper.PlayerInvWrapper; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; public class ContainerPatternTerm extends ContainerPatternEncoder { @@ -91,7 +76,7 @@ public class ContainerPatternTerm extends ContainerPatternEncoder { .getPowerSource(), monitorable, this.crafting, patternInv, this.cOut, 110, -76 + 18, this, 2, this)); this.craftSlot.setIIcon(-1); - for (int y = 0; y < 3; y++) { + for (int y = 0; y < this.outputSlots.length; y++) { this.addSlotToContainer(this.outputSlots[y] = new SlotPatternOutputs(output, this, y, 110, -76 + y * 18, 0, 0, 1)); this.outputSlots[y].setRenderDisabled(false); this.outputSlots[y].setIIcon(-1); diff --git a/src/main/java/appeng/container/implementations/ContainerSecurityStation.java b/src/main/java/appeng/container/implementations/ContainerSecurityStation.java index 7088f281f..d7fcdfe30 100644 --- a/src/main/java/appeng/container/implementations/ContainerSecurityStation.java +++ b/src/main/java/appeng/container/implementations/ContainerSecurityStation.java @@ -61,7 +61,7 @@ public class ContainerSecurityStation extends ContainerMEMonitorable implements this.securityBox = (TileSecurityStation) monitorable; this.addSlotToContainer(this.configSlot = new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.BIOMETRIC_CARD, this.securityBox - .getConfigSlot(), 0, 37, -33 + jeiOffset, ip)); + .getConfigSlot(), 0, 37, -33, ip)); this.addSlotToContainer( this.wirelessIn = new SlotRestrictedInput(SlotRestrictedInput.PlacableItemType.ENCODABLE_ITEM, this.wirelessEncoder, 0, 212, 10 + jeiOffset, ip)); diff --git a/src/main/java/appeng/container/slot/AppEngSlot.java b/src/main/java/appeng/container/slot/AppEngSlot.java index 2ff72b5a5..474fb0b6f 100644 --- a/src/main/java/appeng/container/slot/AppEngSlot.java +++ b/src/main/java/appeng/container/slot/AppEngSlot.java @@ -46,6 +46,7 @@ public class AppEngSlot extends Slot { private int IIcon = -1; private hasCalculatedValidness isValid; private boolean isDisplay = false; + private boolean returnAsSingleStack; public AppEngSlot(final IItemHandler inv, final int idx, final int x, final int y) { super(emptyInventory, idx, x, y); @@ -94,16 +95,29 @@ public class AppEngSlot extends Slot { return ItemStack.EMPTY; } + if (this.isDisplay()) { this.setDisplay(false); - ItemStack retStack = this.getDisplayStack().copy(); - retStack.setCount(1); - return retStack; + if (this.returnAsSingleStack()) { + setReturnAsSingleStack(false); + ItemStack ret = this.getDisplayStack().copy(); + ret.setCount(1); + return ret; + } + return this.getDisplayStack(); } return this.itemHandler.getStackInSlot(this.index); } + private boolean returnAsSingleStack() { + return this.returnAsSingleStack; + } + + public void setReturnAsSingleStack(boolean returnAsSingleStack) { + this.returnAsSingleStack = returnAsSingleStack; + } + @Override public void putStack(final ItemStack stack) { if (this.isSlotEnabled()) { diff --git a/src/main/java/appeng/parts/reporting/PartPatternTerminal.java b/src/main/java/appeng/parts/reporting/PartPatternTerminal.java index 3e90a17ef..0752b15cc 100644 --- a/src/main/java/appeng/parts/reporting/PartPatternTerminal.java +++ b/src/main/java/appeng/parts/reporting/PartPatternTerminal.java @@ -51,7 +51,7 @@ public class PartPatternTerminal extends AbstractPartEncoder { public PartPatternTerminal(final ItemStack is) { super(is); this.crafting = new AppEngInternalInventory(this, CRAFTING_GRID_DIMENSION * CRAFTING_GRID_DIMENSION); - this.output = new AppEngInternalInventory(this, CRAFTING_OUTPUT_LIMIT); + this.output = new AppEngInternalInventory(this, 3); this.pattern = new AppEngInternalInventory(this, 2); }