Skip to content

Commit 9e4ec76

Browse files
Fix ReferencingInventory not copying item stacks
1 parent b67f5ab commit 9e4ec76

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

invui/src/main/java/xyz/xenondevs/invui/inventory/ReferencingInventory.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.jspecify.annotations.Nullable;
99
import xyz.xenondevs.invui.InvUI;
1010
import xyz.xenondevs.invui.Observer;
11+
import xyz.xenondevs.invui.util.ItemUtils;
1112
import xyz.xenondevs.invui.util.TriConsumer;
1213

1314
import java.util.Arrays;
@@ -98,7 +99,7 @@ public int getMaxSlotStackSize(int slot) {
9899

99100
@Override
100101
public @Nullable ItemStack[] getItems() {
101-
return itemsGetter.apply(inventory);
102+
return ItemUtils.clone(itemsGetter.apply(inventory));
102103
}
103104

104105
@Override
@@ -108,22 +109,22 @@ public int getMaxSlotStackSize(int slot) {
108109

109110
@Override
110111
public @Nullable ItemStack getItem(int slot) {
111-
return itemGetter.apply(inventory, slot);
112+
return ItemUtils.cloneUnlessEmpty(itemGetter.apply(inventory, slot));
112113
}
113114

114115
@Override
115116
public @Nullable ItemStack getUnsafeItem(int slot) {
116-
return itemGetter.apply(inventory, slot);
117+
return ItemUtils.takeUnlessEmpty(itemGetter.apply(inventory, slot));
117118
}
118119

119120
@Override
120121
protected void setCloneBackingItem(int slot, @Nullable ItemStack itemStack) {
121-
itemSetter.accept(inventory, slot, itemStack);
122+
itemSetter.accept(inventory, slot, ItemUtils.cloneUnlessEmpty(itemStack));
122123
}
123124

124125
@Override
125126
protected void setDirectBackingItem(int slot, @Nullable ItemStack itemStack) {
126-
itemSetter.accept(inventory, slot, itemStack);
127+
itemSetter.accept(inventory, slot, ItemUtils.takeUnlessEmpty(itemStack));
127128
}
128129

129130
@Override
@@ -171,11 +172,6 @@ private int convertSlot(int invUiSlot) {
171172

172173
@Override
173174
public @Nullable ItemStack[] getUnsafeItems() {
174-
return getItems();
175-
}
176-
177-
@Override
178-
public @Nullable ItemStack[] getItems() {
179175
@Nullable ItemStack[] items = itemsGetter.apply(inventory);
180176
@Nullable ItemStack[] reorderedItems = new ItemStack[items.length];
181177

@@ -185,6 +181,11 @@ private int convertSlot(int invUiSlot) {
185181
return reorderedItems;
186182
}
187183

184+
@Override
185+
public @Nullable ItemStack[] getItems() {
186+
return ItemUtils.clone(getUnsafeItems());
187+
}
188+
188189
@Override
189190
protected void setCloneBackingItem(int slot, @Nullable ItemStack itemStack) {
190191
super.setCloneBackingItem(convertSlot(slot), itemStack);

0 commit comments

Comments
 (0)