From 3efbb7f35d190200c8f78e03055e78bf2bb21d98 Mon Sep 17 00:00:00 2001 From: esmenard <53749130+esmenard@users.noreply.github.com> Date: Fri, 26 Dec 2025 12:35:23 +0100 Subject: [PATCH] Fix criterion for adding downgrades to (simple) compacting drawers Compacting drawers and simple compacting drawers only require the top slot to have 64 items or less rather than all slots --- .../block/tile/CompactingDrawerTile.java | 5 +++++ .../block/tile/ItemControllableDrawerTile.java | 17 ++++++++++++----- .../block/tile/SimpleCompactingDrawerTile.java | 5 +++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingDrawerTile.java index a2c0e344..4b49d6e5 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/CompactingDrawerTile.java @@ -122,6 +122,11 @@ public InteractionResult onSlotActivated(Player playerIn, InteractionHand hand, } return super.onSlotActivated(playerIn, hand, facing, hitX, hitY, hitZ, slot); } + + @Override + protected boolean canAddDowngrade() { + return (getStorage().getStackInSlot(2).getCount() <= 64); + } @Override public int getStorageSlotAmount() { diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/ItemControllableDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/ItemControllableDrawerTile.java index e7bbac98..e9a8ee2d 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/ItemControllableDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/ItemControllableDrawerTile.java @@ -196,11 +196,9 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { } .setInputFilter((stack, integer) -> { if (stack.getItem().equals(FunctionalStorage.STORAGE_UPGRADES.get(StorageUpgradeItem.StorageTier.IRON).get())) { - for (int i = 0; i < getStorage().getSlots(); i++) { - if (getStorage().getStackInSlot(i).getCount() > 64) { - return false; - } - } + if (!canAddDowngrade()){ + return false; + } } return stack.getItem() instanceof UpgradeItem && ((UpgradeItem) stack.getItem()).getType() == UpgradeItem.Type.STORAGE; }) @@ -209,6 +207,15 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { }) .setSlotLimit(1); } + + protected boolean canAddDowngrade() { + for (int i = 0; i < getStorage().getSlots(); i++) { + if (getStorage().getStackInSlot(i).getCount() > 64) { + return false; + } + } + return true; + } public boolean isEverythingEmpty() { for (int i = 0; i < getStorage().getSlots(); i++) { diff --git a/src/main/java/com/buuz135/functionalstorage/block/tile/SimpleCompactingDrawerTile.java b/src/main/java/com/buuz135/functionalstorage/block/tile/SimpleCompactingDrawerTile.java index b35441f3..92bbdf8a 100644 --- a/src/main/java/com/buuz135/functionalstorage/block/tile/SimpleCompactingDrawerTile.java +++ b/src/main/java/com/buuz135/functionalstorage/block/tile/SimpleCompactingDrawerTile.java @@ -122,6 +122,11 @@ public InteractionResult onSlotActivated(Player playerIn, InteractionHand hand, } return super.onSlotActivated(playerIn, hand, facing, hitX, hitY, hitZ, slot); } + + @Override + protected boolean canAddDowngrade() { + return (getStorage().getStackInSlot(1).getCount() <= 64); + } @Override public int getStorageSlotAmount() {