Skip to content

Commit e48a7c0

Browse files
authored
Merge pull request #383 from Matyrobbrt/fix-371
Fix upgrades not being insertable/extractable in compacting drawers
2 parents 1a1379d + cf4e892 commit e48a7c0

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

src/main/java/com/buuz135/functionalstorage/block/tile/CompactingDrawerTile.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ public IItemHandler getStorage() {
120120
return handler;
121121
}
122122

123+
@Override
124+
protected boolean canChangeMultiplier(long newSizeMultiplier) {
125+
var stack = getStorage().getStackInSlot(2);
126+
if (stack.isEmpty()) return true;
127+
return stack.getCount() <= Math.min(Integer.MAX_VALUE, stack.getMaxStackSize() * newSizeMultiplier);
128+
}
129+
123130
@NotNull
124131
@Override
125132
public CompactingDrawerTile getSelf() {

src/main/java/com/buuz135/functionalstorage/block/tile/ItemControllableDrawerTile.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,8 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) {
106106
replacement[slot] = stack;
107107

108108
var newSize = (long) SizeProvider.calculate(this, FSAttachments.ITEM_STORAGE_MODIFIER, baseSize, replacement);
109-
for (int i = 0; i < getStorage().getSlots(); i++) {
110-
var stored = getStorage().getStackInSlot(i);
111-
if (stored.getCount() > Math.min(Integer.MAX_VALUE, newSize * stored.getMaxStackSize())) {
112-
return ItemStack.EMPTY;
113-
}
109+
if (!canChangeMultiplier(newSize)) {
110+
return ItemStack.EMPTY;
114111
}
115112
}
116113
return super.extractItem(slot, amount, simulate);
@@ -125,11 +122,8 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) {
125122
replacement[integer] = stack;
126123

127124
var newSize = (long) SizeProvider.calculate(getStorageUpgrades(), FSAttachments.ITEM_STORAGE_MODIFIER, baseSize, replacement);
128-
for (int i = 0; i < getStorage().getSlots(); i++) {
129-
var stored = getStorage().getStackInSlot(i);
130-
if (stored.getCount() > Math.min(Integer.MAX_VALUE, newSize * stored.getMaxStackSize())) {
131-
return false;
132-
}
125+
if (!canChangeMultiplier(newSize)) {
126+
return false;
133127
}
134128

135129
return true;
@@ -140,6 +134,16 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) {
140134
.setSlotLimit(1);
141135
}
142136

137+
protected boolean canChangeMultiplier(long newSizeMultiplier) {
138+
for (int i = 0; i < getStorage().getSlots(); i++) {
139+
var stored = getStorage().getStackInSlot(i);
140+
if (!stored.isEmpty() && stored.getCount() > Math.min(Integer.MAX_VALUE, newSizeMultiplier * stored.getMaxStackSize())) {
141+
return false;
142+
}
143+
}
144+
return true;
145+
}
146+
143147
public boolean isEverythingEmpty() {
144148
for (int i = 0; i < getStorage().getSlots(); i++) {
145149
if (!getStorage().getStackInSlot(i).isEmpty()) {

src/main/java/com/buuz135/functionalstorage/block/tile/SimpleCompactingDrawerTile.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,12 @@ public IItemHandler getStorage() {
120120
return handler;
121121
}
122122

123+
@Override
124+
protected boolean canChangeMultiplier(long newSizeMultiplier) {
125+
var stack = getStorage().getStackInSlot(1);
126+
if (stack.isEmpty()) return true;
127+
return stack.getCount() <= Math.min(Integer.MAX_VALUE, stack.getMaxStackSize() * newSizeMultiplier);
128+
}
123129

124130
@NotNull
125131
@Override

0 commit comments

Comments
 (0)