From 32b4085d703cd0c68be93e5dfb3d0111f87500c4 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sun, 27 Mar 2016 10:12:55 +0200 Subject: [PATCH] Shift clicking for disk drive --- .../container/ContainerDiskDrive.java | 33 ++++++++++++++++++- .../container/ContainerStorage.java | 10 +++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/main/java/refinedstorage/container/ContainerDiskDrive.java b/src/main/java/refinedstorage/container/ContainerDiskDrive.java index e2d0a753c..0eb2c636f 100755 --- a/src/main/java/refinedstorage/container/ContainerDiskDrive.java +++ b/src/main/java/refinedstorage/container/ContainerDiskDrive.java @@ -1,6 +1,8 @@ package refinedstorage.container; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorageItems; import refinedstorage.container.slot.BasicItemValidator; import refinedstorage.container.slot.SlotFiltered; @@ -8,7 +10,7 @@ import refinedstorage.tile.TileDiskDrive; public class ContainerDiskDrive extends ContainerStorage { public ContainerDiskDrive(EntityPlayer player, TileDiskDrive drive) { - super(player, drive.getInventory()); + super(player); for (int i = 0; i < 4; ++i) { addSlotToContainer(new SlotFiltered(drive, i, 98 + (i * 18), 78, new BasicItemValidator(RefinedStorageItems.STORAGE_DISK))); @@ -17,5 +19,34 @@ public class ContainerDiskDrive extends ContainerStorage { for (int i = 0; i < 4; ++i) { addSlotToContainer(new SlotFiltered(drive, 4 + i, 98 + (i * 18), 96, new BasicItemValidator(RefinedStorageItems.STORAGE_DISK))); } + + addSpecimenAndPlayerInventorySlots(drive.getInventory()); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack stack = null; + + Slot slot = getSlot(index); + + if (slot != null && slot.getHasStack()) { + stack = slot.getStack().copy(); + + if (index < 8) { + if (!mergeItemStack(stack, 8, inventorySlots.size(), true)) { + return null; + } + } else if (!mergeItemStack(stack, 0, 8, false)) { + return null; + } + + if (stack.stackSize == 0) { + slot.putStack(null); + } else { + slot.onSlotChanged(); + } + } + + return stack; } } diff --git a/src/main/java/refinedstorage/container/ContainerStorage.java b/src/main/java/refinedstorage/container/ContainerStorage.java index dcc1535a7..f8133a7fc 100755 --- a/src/main/java/refinedstorage/container/ContainerStorage.java +++ b/src/main/java/refinedstorage/container/ContainerStorage.java @@ -5,9 +5,17 @@ import net.minecraft.inventory.IInventory; import refinedstorage.container.slot.SlotSpecimen; public class ContainerStorage extends ContainerBase { - public ContainerStorage(EntityPlayer player, IInventory inventory) { + public ContainerStorage(EntityPlayer player) { super(player); + } + public ContainerStorage(EntityPlayer player, IInventory inventory) { + this(player); + + addSpecimenAndPlayerInventorySlots(inventory); + } + + protected void addSpecimenAndPlayerInventorySlots(IInventory inventory) { for (int i = 0; i < 9; ++i) { addSlotToContainer(new SlotSpecimen(inventory, i, 8 + (18 * i), 20, false)); }