From e47f4ef51d6b03fadaac410c7c99e5101d643bfe Mon Sep 17 00:00:00 2001 From: raoulvdberge Date: Sun, 12 Mar 2017 11:56:39 +0100 Subject: [PATCH] Bypass ghost slot when we're dealing with a filter --- .../refinedstorage/container/ContainerBase.java | 17 ++++++++++++++--- .../container/slot/SlotFilter.java | 3 ++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java index ddba2b56a..dff43ada0 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/ContainerBase.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.container; +import com.raoulvdberge.refinedstorage.RSItems; import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.container.slot.*; import com.raoulvdberge.refinedstorage.tile.TileBase; @@ -59,13 +60,15 @@ public abstract class ContainerBase extends Container { Slot slot = id >= 0 ? getSlot(id) : null; if (slot instanceof SlotFilter) { + if (slot.getStack().getItem() == RSItems.FILTER) { + return super.slotClick(id, dragType, clickType, player); + } + if (((SlotFilter) slot).allowsSize()) { if (clickType == ClickType.QUICK_MOVE) { slot.putStack(ItemStack.EMPTY); } else if (!player.inventory.getItemStack().isEmpty()) { - int amount = player.inventory.getItemStack().getCount(); - - slot.putStack(ItemHandlerHelper.copyStackWithSize(player.inventory.getItemStack(), amount)); + slot.putStack(player.inventory.getItemStack().copy()); } else if (slot.getHasStack()) { int amount = slot.getStack().getCount(); @@ -80,6 +83,10 @@ public abstract class ContainerBase extends Container { } else if (player.inventory.getItemStack().isEmpty()) { slot.putStack(ItemStack.EMPTY); } else if (slot.isItemValid(player.inventory.getItemStack())) { + if (player.inventory.getItemStack().getItem() == RSItems.FILTER) { + return super.slotClick(id, dragType, clickType, player); + } + slot.putStack(player.inventory.getItemStack().copy()); } @@ -118,6 +125,10 @@ public abstract class ContainerBase extends Container { slot.putStack(ItemHandlerHelper.copyStackWithSize(stack, 1)); slot.onSlotChanged(); + if (stack.getItem() == RSItems.FILTER) { + stack.setCount(0); + } + return ItemStack.EMPTY; } } 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 e62ae6c50..952100450 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotFilter.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/container/slot/SlotFilter.java @@ -1,5 +1,6 @@ package com.raoulvdberge.refinedstorage.container.slot; +import com.raoulvdberge.refinedstorage.RSItems; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -30,7 +31,7 @@ public class SlotFilter extends SlotItemHandler { @Override public boolean canTakeStack(EntityPlayer player) { - return false; + return getStack().getItem() == RSItems.FILTER; } @Override