From 86c7423c89d7e249babb5cbd9c354bcc4cf9e081 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 20 Oct 2016 19:40:37 +0200 Subject: [PATCH] Improve specimen behaviour, fixes #486 --- .../container/ContainerBase.java | 32 +++++++++---------- .../container/slot/SlotSpecimen.java | 10 +++++- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java index baea73fd7..557d6996c 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java @@ -54,29 +54,27 @@ public abstract class ContainerBase extends Container { } @Override - public ItemStack slotClick(int id, int clickedButton, ClickType clickType, EntityPlayer player) { + public ItemStack slotClick(int id, int dragType, ClickType clickType, EntityPlayer player) { Slot slot = id >= 0 ? getSlot(id) : null; if (slot instanceof SlotSpecimen) { if (((SlotSpecimen) slot).isWithSize()) { - if (slot.getStack() != null) { - if (clickType == ClickType.QUICK_MOVE) { - slot.putStack(null); - } else { - int amount = slot.getStack().stackSize; - - if (clickedButton == 0) { - amount = Math.max(1, amount - 1); - } else if (clickedButton == 1) { - amount = Math.min(64, amount + 1); - } - - slot.getStack().stackSize = amount; - } + if (clickType == ClickType.QUICK_MOVE) { + slot.putStack(null); } else if (player.inventory.getItemStack() != null) { int amount = player.inventory.getItemStack().stackSize; - slot.putStack(ItemHandlerHelper.copyStackWithSize(player.inventory.getItemStack(), clickedButton == 1 ? 1 : amount)); + slot.putStack(ItemHandlerHelper.copyStackWithSize(player.inventory.getItemStack(), amount)); + } else if (slot.getHasStack()) { + int amount = slot.getStack().stackSize; + + if (dragType == 0) { + amount = Math.max(1, amount - 1); + } else if (dragType == 1) { + amount = Math.min(64, amount + 1); + } + + slot.getStack().stackSize = amount; } } else if (player.inventory.getItemStack() == null) { slot.putStack(null); @@ -97,7 +95,7 @@ public abstract class ContainerBase extends Container { return null; } - return super.slotClick(id, clickedButton, clickType, player); + return super.slotClick(id, dragType, clickType, player); } @Override diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotSpecimen.java b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotSpecimen.java index 635a4ce5a..fe4d70a57 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotSpecimen.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotSpecimen.java @@ -36,7 +36,15 @@ public class SlotSpecimen extends SlotItemHandler { @Override public boolean isItemValid(ItemStack stack) { - return super.isItemValid(stack) && (isBlockOnly() ? (stack.getItem() instanceof ItemBlock || stack.getItem() instanceof ItemBlockSpecial || stack.getItem() instanceof IPlantable || stack.getItem() instanceof ItemSkull) : true); + if (super.isItemValid(stack)) { + if (isBlockOnly()) { + return stack.getItem() instanceof ItemBlock || stack.getItem() instanceof ItemBlockSpecial || stack.getItem() instanceof IPlantable || stack.getItem() instanceof ItemSkull; + } + + return true; + } + + return false; } @Override