diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b0d45ebc..790e7969d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### 1.3.1 - Updated Forge to 2180 (raoulvdberge) +- Made Upgrades stackable (raoulvdberge) - Fixed Disk Drive not noticing a Storage Disk being shift clicked out of the GUI (raoulvdberge) ### 1.3 diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java index 0be5b740e..2058ad4ea 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java @@ -30,6 +30,95 @@ public abstract class ContainerBase extends Container { return tile; } + // @todo Forge issue #3498 + @Override + protected boolean mergeItemStack(ItemStack stack, int startIndex, int endIndex, boolean reverseDirection) { + boolean flag = false; + int i = startIndex; + + if (reverseDirection) { + i = endIndex - 1; + } + + if (stack.isStackable()) { + while (!stack.isEmpty()) { + if (reverseDirection) { + if (i < startIndex) { + break; + } + } else if (i >= endIndex) { + break; + } + + Slot slot = (Slot) this.inventorySlots.get(i); + ItemStack itemstack = slot.getStack(); + + if (!itemstack.isEmpty() && itemstack.getItem() == stack.getItem() && (!stack.getHasSubtypes() || stack.getMetadata() == itemstack.getMetadata()) && ItemStack.areItemStackTagsEqual(stack, itemstack)) { + int j = itemstack.getCount() + stack.getCount(); + + if (j <= slot.getSlotStackLimit()) { + stack.setCount(0); + itemstack.setCount(j); + slot.onSlotChanged(); + flag = true; + } else if (itemstack.getCount() < slot.getSlotStackLimit()) { + stack.shrink(slot.getSlotStackLimit() - itemstack.getCount()); + itemstack.setCount(slot.getSlotStackLimit()); + slot.onSlotChanged(); + flag = true; + } + } + + if (reverseDirection) { + --i; + } else { + ++i; + } + } + } + + if (!stack.isEmpty()) { + if (reverseDirection) { + i = endIndex - 1; + } else { + i = startIndex; + } + + while (true) { + if (reverseDirection) { + if (i < startIndex) { + break; + } + } else if (i >= endIndex) { + break; + } + + Slot slot1 = (Slot) this.inventorySlots.get(i); + ItemStack itemstack1 = slot1.getStack(); + + if (itemstack1.isEmpty() && slot1.isItemValid(stack)) { + if (stack.getCount() > slot1.getSlotStackLimit()) { + slot1.putStack(stack.splitStack(slot1.getSlotStackLimit())); + } else { + slot1.putStack(stack.splitStack(stack.getCount())); + } + + slot1.onSlotChanged(); + flag = true; + break; + } + + if (reverseDirection) { + --i; + } else { + ++i; + } + } + } + + return flag; + } + protected void addPlayerInventory(int xInventory, int yInventory) { int id = 0; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerConstructor.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerConstructor.java index 407b9ee21..deb60383d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerConstructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerConstructor.java @@ -1,18 +1,18 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.tile.TileConstructor; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerConstructor extends ContainerBase { public ContainerConstructor(TileConstructor constructor, EntityPlayer player) { super(constructor, player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(constructor.getUpgrades(), i, 187, 6 + (i * 18))); } addSlotToContainer(new SlotFilterType(constructor, 0, 80, 20)); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafter.java index 32bf796f0..03936bc88 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerCrafter.java @@ -1,21 +1,21 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.tile.TileCrafter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerCrafter extends ContainerBase { public ContainerCrafter(TileCrafter crafter, EntityPlayer player) { super(crafter, player); for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotItemHandler(crafter.getPatternItems(), i, 8 + (18 * i), 20)); + addSlotToContainer(new SlotBase(crafter.getPatternItems(), i, 8 + (18 * i), 20)); } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(crafter.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(crafter.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 55); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDestructor.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDestructor.java index 4e00531f7..c77aeacd5 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDestructor.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDestructor.java @@ -1,18 +1,18 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.tile.TileDestructor; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerDestructor extends ContainerBase { public ContainerDestructor(TileDestructor destructor, EntityPlayer player) { super(destructor, player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(destructor.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(destructor.getUpgrades(), i, 187, 6 + (i * 18))); } for (int i = 0; i < 9; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskDrive.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskDrive.java index 3ef84549a..cc53670ce 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskDrive.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskDrive.java @@ -1,11 +1,11 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.tile.TileDiskDrive; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerDiskDrive extends ContainerBase { public ContainerDiskDrive(TileDiskDrive drive, EntityPlayer player) { @@ -15,7 +15,7 @@ public class ContainerDiskDrive extends ContainerBase { int y = 54; for (int i = 0; i < 8; ++i) { - addSlotToContainer(new SlotItemHandler(drive.getDisks(), i, x + ((i % 2) * 18), y + Math.floorDiv(i, 2) * 18)); + addSlotToContainer(new SlotBase(drive.getDisks(), i, x + ((i % 2) * 18), y + Math.floorDiv(i, 2) * 18)); } for (int i = 0; i < 9; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskManipulator.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskManipulator.java index d659e7f8c..1fa3351be 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskManipulator.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerDiskManipulator.java @@ -1,26 +1,26 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.tile.TileDiskManipulator; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerDiskManipulator extends ContainerBase { public ContainerDiskManipulator(TileDiskManipulator manipulator, EntityPlayer player) { super(manipulator, player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(manipulator.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(manipulator.getUpgrades(), i, 187, 6 + (i * 18))); } for (int i = 0; i < 3; ++i) { - addSlotToContainer(new SlotItemHandler(manipulator.getInputDisks(), i, 44, 57 + (i * 18))); + addSlotToContainer(new SlotBase(manipulator.getInputDisks(), i, 44, 57 + (i * 18))); } for (int i = 0; i < 3; ++i) { - addSlotToContainer(new SlotItemHandler(manipulator.getOutputDisks(), i, 116, 57 + (i * 18))); + addSlotToContainer(new SlotBase(manipulator.getOutputDisks(), i, 116, 57 + (i * 18))); } for (int i = 0; i < 9; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerExporter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerExporter.java index ff62fcab1..a8c37d9dc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerExporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerExporter.java @@ -1,18 +1,18 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.tile.TileExporter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerExporter extends ContainerBase { public ContainerExporter(TileExporter exporter, EntityPlayer player) { super(exporter, player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(exporter.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(exporter.getUpgrades(), i, 187, 6 + (i * 18))); } for (int i = 0; i < 9; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerFluidInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerFluidInterface.java index 224351c61..316dea078 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerFluidInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerFluidInterface.java @@ -1,21 +1,21 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterFluid; import com.raoulvdberge.refinedstorage.tile.TileFluidInterface; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerFluidInterface extends ContainerBase { public ContainerFluidInterface(TileFluidInterface fluidInterface, EntityPlayer player) { super(fluidInterface, player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(fluidInterface.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(fluidInterface.getUpgrades(), i, 187, 6 + (i * 18))); } - addSlotToContainer(new SlotItemHandler(fluidInterface.getIn(), 0, 44, 32)); + addSlotToContainer(new SlotBase(fluidInterface.getIn(), 0, 44, 32)); addSlotToContainer(new SlotFilterFluid(!fluidInterface.getWorld().isRemote, fluidInterface.getOut(), 0, 116, 32)); addPlayerInventory(8, 122); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java index dd741bd60..565e6d0b8 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerGrid.java @@ -12,7 +12,6 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.IContainerListener; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerGrid extends ContainerBase { private IGrid grid; @@ -60,13 +59,13 @@ public class ContainerGrid extends ContainerBase { addSlotToContainer(patternResultSlot = new SlotDisabled(((TileGrid) grid).getResult(), 0, 112 + 4, 110 + 4)); - addSlotToContainer(new SlotItemHandler(((TileGrid) grid).getPatterns(), 0, 152, 96)); + addSlotToContainer(new SlotBase(((TileGrid) grid).getPatterns(), 0, 152, 96)); addSlotToContainer(new SlotOutput(((TileGrid) grid).getPatterns(), 1, 152, 132)); } if (grid.getType() != EnumGridType.FLUID) { for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(grid.getFilter(), i, 204, 6 + (18 * i))); + addSlotToContainer(new SlotBase(grid.getFilter(), i, 204, 6 + (18 * i))); } } } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerImporter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerImporter.java index bf0fec07a..95597d54e 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerImporter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerImporter.java @@ -1,18 +1,18 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilterType; import com.raoulvdberge.refinedstorage.tile.TileImporter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerImporter extends ContainerBase { public ContainerImporter(TileImporter importer, EntityPlayer player) { super(importer, player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(importer.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(importer.getUpgrades(), i, 187, 6 + (i * 18))); } for (int i = 0; i < 9; ++i) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerInterface.java index 3be521156..5ffd16e9a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerInterface.java @@ -1,19 +1,19 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilter; import com.raoulvdberge.refinedstorage.container.slot.SlotOutput; import com.raoulvdberge.refinedstorage.tile.TileInterface; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerInterface extends ContainerBase { public ContainerInterface(TileInterface tile, EntityPlayer player) { super(tile, player); for (int i = 0; i < 9; ++i) { - addSlotToContainer(new SlotItemHandler(tile.getImportItems(), i, 8 + (18 * i), 20)); + addSlotToContainer(new SlotBase(tile.getImportItems(), i, 8 + (18 * i), 20)); } for (int i = 0; i < 9; ++i) { @@ -25,7 +25,7 @@ public class ContainerInterface extends ContainerBase { } for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(tile.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(tile.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 134); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerNetworkTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerNetworkTransmitter.java index 16ed0bead..45524f211 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerNetworkTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerNetworkTransmitter.java @@ -1,18 +1,18 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.tile.TileNetworkTransmitter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerNetworkTransmitter extends ContainerBase { public ContainerNetworkTransmitter(TileNetworkTransmitter networkTransmitter, EntityPlayer player) { super(networkTransmitter, player); - addSlotToContainer(new SlotItemHandler(networkTransmitter.getNetworkCard(), 0, 8, 20)); + addSlotToContainer(new SlotBase(networkTransmitter.getNetworkCard(), 0, 8, 20)); - addSlotToContainer(new SlotItemHandler(networkTransmitter.getUpgrades(), 0, 187, 6)); + addSlotToContainer(new SlotBase(networkTransmitter.getUpgrades(), 0, 187, 6)); addPlayerInventory(8, 55); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java index 0ef22e6d7..d66e59aa1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerProcessingPatternEncoder.java @@ -1,12 +1,12 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotFilter; import com.raoulvdberge.refinedstorage.container.slot.SlotOutput; import com.raoulvdberge.refinedstorage.tile.TileProcessingPatternEncoder; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; import java.util.Collection; @@ -14,7 +14,7 @@ public class ContainerProcessingPatternEncoder extends ContainerBase { public ContainerProcessingPatternEncoder(TileProcessingPatternEncoder encoder, EntityPlayer player) { super(encoder, player); - addSlotToContainer(new SlotItemHandler(encoder.getPatterns(), 0, 152, 18)); + addSlotToContainer(new SlotBase(encoder.getPatterns(), 0, 152, 18)); addSlotToContainer(new SlotOutput(encoder.getPatterns(), 1, 152, 58)); int ox = 8; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerSolderer.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerSolderer.java index 81f34eeaa..37e20f03c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerSolderer.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerSolderer.java @@ -1,12 +1,12 @@ package com.raoulvdberge.refinedstorage.container; import com.raoulvdberge.refinedstorage.RSItems; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.container.slot.SlotOutput; import com.raoulvdberge.refinedstorage.tile.TileSolderer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerSolderer extends ContainerBase { public ContainerSolderer(TileSolderer solderer, EntityPlayer player) { @@ -16,7 +16,7 @@ public class ContainerSolderer extends ContainerBase { int y = 20; for (int i = 0; i < 3; ++i) { - addSlotToContainer(new SlotItemHandler(solderer.getItems(), i, x, y)); + addSlotToContainer(new SlotBase(solderer.getItems(), i, x, y)); y += 18; } @@ -24,7 +24,7 @@ public class ContainerSolderer extends ContainerBase { addSlotToContainer(new SlotOutput(solderer.getResult(), 0, 127, 38)); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(solderer.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(solderer.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 89); diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerWirelessTransmitter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerWirelessTransmitter.java index 7827dc712..29cefdd70 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerWirelessTransmitter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerWirelessTransmitter.java @@ -1,17 +1,17 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.container.slot.SlotBase; import com.raoulvdberge.refinedstorage.tile.TileWirelessTransmitter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -import net.minecraftforge.items.SlotItemHandler; public class ContainerWirelessTransmitter extends ContainerBase { public ContainerWirelessTransmitter(TileWirelessTransmitter wirelessTransmitter, EntityPlayer player) { super(wirelessTransmitter, player); for (int i = 0; i < 4; ++i) { - addSlotToContainer(new SlotItemHandler(wirelessTransmitter.getUpgrades(), i, 187, 6 + (i * 18))); + addSlotToContainer(new SlotBase(wirelessTransmitter.getUpgrades(), i, 187, 6 + (i * 18))); } addPlayerInventory(8, 55); @@ -23,7 +23,7 @@ public class ContainerWirelessTransmitter extends ContainerBase { Slot slot = getSlot(index); - if (slot != null && slot.getHasStack()) { + if (slot.getHasStack()) { stack = slot.getStack(); if (index < 4) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotBase.java b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotBase.java new file mode 100755 index 000000000..b9135aea9 --- /dev/null +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotBase.java @@ -0,0 +1,16 @@ +package com.raoulvdberge.refinedstorage.container.slot; + +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.SlotItemHandler; + +// @todo: Forge issue #3497 +public class SlotBase extends SlotItemHandler { + public SlotBase(IItemHandler itemHandler, int index, int xPosition, int yPosition) { + super(itemHandler, index, xPosition, yPosition); + } + + @Override + public int getSlotStackLimit() { + return getItemHandler().getSlotLimit(getSlotIndex()); + } +} diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotFilter.java b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotFilter.java index ceec67bbe..c326b7ecf 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotFilter.java @@ -9,12 +9,11 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.IPlantable; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; import javax.annotation.Nonnull; import java.lang.reflect.Field; -public class SlotFilter extends SlotItemHandler { +public class SlotFilter extends SlotBase { public static final int FILTER_ALLOW_SIZE = 1; public static final int FILTER_ALLOW_BLOCKS = 2; diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotOutput.java b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotOutput.java index 557e0d2d8..308ec90d1 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotOutput.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotOutput.java @@ -2,11 +2,10 @@ package com.raoulvdberge.refinedstorage.container.slot; import net.minecraft.item.ItemStack; import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.SlotItemHandler; import javax.annotation.Nonnull; -public class SlotOutput extends SlotItemHandler { +public class SlotOutput extends SlotBase { public SlotOutput(IItemHandler inventory, int id, int x, int y) { super(inventory, id, x, y); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerUpgrade.java b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerUpgrade.java index 432f48bc3..4abdda603 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerUpgrade.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/inventory/ItemHandlerUpgrade.java @@ -65,6 +65,11 @@ public class ItemHandlerUpgrade extends ItemHandlerBasic { return 0; } + @Override + public int getSlotLimit(int slot) { + return 1; + } + public int getItemInteractCount() { return hasUpgrade(ItemUpgrade.TYPE_STACK) ? 64 : 1; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java index 4e0ded241..ffd0feb0f 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/item/ItemUpgrade.java @@ -34,7 +34,6 @@ public class ItemUpgrade extends ItemBase { setHasSubtypes(true); setMaxDamage(0); - setMaxStackSize(1); } @Override