@@ -48,7 +48,11 @@ public boolean addItem(@NotNull final ItemStack... items) {
48
48
boolean changed = false ;
49
49
for (final ItemStack item : items ) {
50
50
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
+ }
52
56
changed = true ;
53
57
slot ++;
54
58
}
@@ -61,16 +65,19 @@ private boolean add(int slot,
61
65
@ NotNull final MenuItem guiItem ,
62
66
@ NotNull final List <MenuItem > notAddedItems ) {
63
67
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 ;
69
69
70
70
items [slot ] = guiItem ;
71
71
return false ;
72
72
}
73
73
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
+
74
81
public boolean addItem (@ NotNull final MenuItem @ NotNull ... items ) {
75
82
final List <MenuItem > notAddedItems = new ArrayList <>(items .length );
76
83
@@ -119,8 +126,8 @@ public MenuItem getItem(int i) {
119
126
return items [i ];
120
127
}
121
128
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 ;
124
131
}
125
132
126
133
public void forEach (Consumer <? super MenuItem > action ) {
@@ -171,7 +178,7 @@ public int size() {
171
178
return items .length ;
172
179
}
173
180
174
- public void removeItem (Slot slot ) {
181
+ public void removeItem (@ NotNull Slot slot ) {
175
182
if (slot .isValid ()) removeItem (slot .slot );
176
183
}
177
184
0 commit comments