Skip to content

Commit 736e152

Browse files
Optimize Slot Actions
Slot actions are now lazily set to improve memory consumption if you don't need it.
1 parent 14b2c69 commit 736e152

File tree

1 file changed

+20
-30
lines changed
  • core/src/main/java/me/flame/menus/menu

1 file changed

+20
-30
lines changed

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

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public class Menu implements IMenu, RandomAccess, Serializable {
7777
protected int rows = 1, size;
7878

7979
protected ItemData data;
80+
8081
protected ItemResponse[] slotActions;
8182

8283
@Getter
@@ -109,7 +110,6 @@ public class Menu implements IMenu, RandomAccess, Serializable {
109110
this.title = title;
110111
this.size = rows * 9;
111112
this.data = new ItemData(this);
112-
this.slotActions = new ItemResponse[size];
113113
this.inventory = this.title.toInventory(this, size);
114114
}
115115

@@ -119,20 +119,23 @@ public class Menu implements IMenu, RandomAccess, Serializable {
119119
this.title = title;
120120
this.size = type.getLimit();
121121
this.data = new ItemData(this);
122-
this.slotActions = new ItemResponse[size];
123122
this.inventory = this.title.toInventory(this, type.getType());
124123
}
125124

125+
public ItemResponse[] getSlotActions() {
126+
return (slotActions == null) ? (slotActions = new ItemResponse[size]) : slotActions;
127+
}
128+
129+
public boolean hasSlotActions() { return slotActions != null; }
130+
126131
public MenuFiller getFiller() { return defaultFiller; }
127132

128133
public <T extends MenuFiller> T getFiller(@NotNull Class<T> value) { return value.cast(defaultFiller); }
129134

130135
@NotNull
131136
public MenuIterator iterator() { return new MenuIterator(IterationDirection.HORIZONTAL, this); }
132137

133-
public MenuIterator iterator(IterationDirection direction) {
134-
return new MenuIterator(direction, this);
135-
}
138+
public MenuIterator iterator(IterationDirection direction) {return new MenuIterator(direction, this); }
136139

137140
public MenuIterator iterator(int startingRow, int startingCol, IterationDirection direction) {
138141
return new MenuIterator(startingRow, startingCol, direction, this);
@@ -144,9 +147,7 @@ public MenuIterator iterator(int startingRow, int startingCol, IterationDirectio
144147

145148
public void forEach(Consumer<? super MenuItem> action) { data.forEach(action); }
146149

147-
public List<HumanEntity> getViewers() {
148-
return inventory.getViewers();
149-
}
150+
public List<HumanEntity> getViewers() { return inventory.getViewers(); }
150151

151152
public boolean addItem(@NotNull final ItemStack... items) {
152153
return (changed = data.addItem(items));
@@ -216,20 +217,16 @@ public Optional<MenuItem> get(Predicate<MenuItem> itemDescription) {
216217
return Optional.ofNullable(getItem(itemDescription));
217218
}
218219

219-
public void addSlotAction(int slot, ItemResponse response) {
220-
slotActions[slot] = response;
221-
}
222-
223-
public void addSlotAction(@NotNull Slot slot, ItemResponse response) {
224-
if (slot.isValid()) slotActions[slot.slot] = response;
225-
}
226-
227-
public void removeSlotAction(int slot, ItemResponse response) {
220+
public void setSlotAction(int slot, ItemResponse response) {
221+
ItemResponse[] slotActions = getSlotActions();
228222
slotActions[slot] = response;
229223
}
230224

231-
public void removeSlotAction(@NotNull Slot slot, ItemResponse response) {
232-
if (slot.isValid()) slotActions[slot.slot] = response;
225+
public void setSlotAction(@NotNull Slot position, ItemResponse response) {
226+
if (position.isValid()) {
227+
ItemResponse[] slotActions = getSlotActions();
228+
slotActions[position.slot] = response;
229+
}
233230
}
234231

235232
public @Nullable MenuItem getItem(Predicate<MenuItem> itemDescription) {
@@ -321,21 +318,14 @@ public void open(@NotNull HumanEntity entity) {
321318
}
322319

323320
public void close(@NotNull final HumanEntity player) {
324-
if (!inventory.equals(player.getOpenInventory().getTopInventory())) return;
325-
SCHEDULER.runTaskLater(plugin, player::closeInventory, 2L);
321+
SCHEDULER.runTaskLater(plugin, player::closeInventory, 1L);
326322
}
327323

328-
public boolean addModifier(Modifier modifier) {
329-
return modifiers.add(modifier);
330-
}
324+
public boolean addModifier(Modifier modifier) { return modifiers.add(modifier); }
331325

332-
public boolean removeModifier(Modifier modifier) {
333-
return modifiers.remove(modifier);
334-
}
326+
public boolean removeModifier(Modifier modifier) { return modifiers.remove(modifier); }
335327

336-
public boolean addAllModifiers() {
337-
return modifiers.addAll(Modifier.ALL);
338-
}
328+
public boolean addAllModifiers() { return modifiers.addAll(Modifier.ALL); }
339329

340330
public void removeAllModifiers() {
341331
Modifier.ALL.forEach(modifiers::remove);

0 commit comments

Comments
 (0)