88import org .jspecify .annotations .Nullable ;
99import xyz .xenondevs .invui .InvUI ;
1010import xyz .xenondevs .invui .Observer ;
11+ import xyz .xenondevs .invui .util .ItemUtils ;
1112import xyz .xenondevs .invui .util .TriConsumer ;
1213
1314import 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