Skip to content

Commit 14b2c69

Browse files
Did a few fixes
Complaints about out of bounds exceptions, this should fix it.
1 parent 52fc683 commit 14b2c69

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

core/src/main/java/me/flame/menus/menu/ItemData.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ public boolean addItem(@NotNull final ItemStack... items) {
4848
boolean changed = false;
4949
for (final ItemStack item : items) {
5050
MenuItem menuItem = MenuItem.of(item);
51-
if (this.add(slot, menuItem, notAddedItems)) return changed;
51+
try {
52+
if (this.add(slot, menuItem, notAddedItems)) return changed;
53+
} catch (IndexOutOfBoundsException ignored) {
54+
if (size(slot, menu.size, menu.rows, menuItem, notAddedItems)) return false;
55+
}
5256
changed = true;
5357
slot++;
5458
}
@@ -61,16 +65,19 @@ private boolean add(int slot,
6165
@NotNull final MenuItem guiItem,
6266
@NotNull final List<MenuItem> notAddedItems) {
6367
while (items[slot] != null) slot++;
64-
if (slot > menu.size) {
65-
if (menu.rows == 6) return true;
66-
notAddedItems.add(guiItem);
67-
return false;
68-
}
68+
if (size(slot, menu.size, menu.rows, guiItem, notAddedItems)) return true;
6969

7070
items[slot] = guiItem;
7171
return false;
7272
}
7373

74+
private static boolean size(int slot, int size, int rows, MenuItem guiItem, List<MenuItem> notAddedItems) {
75+
if (slot < size) return false;
76+
if (rows == 6) return true;
77+
notAddedItems.add(guiItem);
78+
return false;
79+
}
80+
7481
public boolean addItem(@NotNull final MenuItem @NotNull ... items) {
7582
final List<MenuItem> notAddedItems = new ArrayList<>(items.length);
7683

@@ -119,8 +126,8 @@ public MenuItem getItem(int i) {
119126
return items[i];
120127
}
121128

122-
public MenuItem getItem(Slot i) {
123-
return i.isValid() ? items[i.slot] : null;
129+
public MenuItem getItem(Slot position) {
130+
return position.isValid() ? items[position.slot] : null;
124131
}
125132

126133
public void forEach(Consumer<? super MenuItem> action) {
@@ -171,7 +178,7 @@ public int size() {
171178
return items.length;
172179
}
173180

174-
public void removeItem(Slot slot) {
181+
public void removeItem(@NotNull Slot slot) {
175182
if (slot.isValid()) removeItem(slot.slot);
176183
}
177184

0 commit comments

Comments
 (0)