Skip to content

Commit 1076cca

Browse files
Remove Pages
Pages would increase file size, decrease performance and caused bugs in 1.4.2. now they're removed 100%
1 parent 59149c0 commit 1076cca

File tree

1 file changed

+174
-91
lines changed

1 file changed

+174
-91
lines changed

src/main/java/me/flame/menus/menu/PaginatedMenu.java

Lines changed: 174 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,3 @@
1-
/**
2-
* MIT License
3-
* <p>
4-
* Copyright (c) 2021 TriumphTeam
5-
* Copyright (c) 2023 FlameyosFlow
6-
* <p>
7-
* Permission is hereby granted, free of charge, to any person obtaining a copy
8-
* of this software and associated documentation files (the "Software"), to deal
9-
* in the Software without restriction, including without limitation the rights
10-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11-
* copies of the Software, and to permit persons to whom the Software is
12-
* furnished to do so, subject to the following conditions:
13-
* <p>
14-
* The above copyright notice and this permission notice shall be included in all
15-
* copies or substantial portions of the Software.
16-
* <p>
17-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23-
* SOFTWARE.
24-
*/
25-
261
package me.flame.menus.menu;
272

283
import com.google.common.collect.ImmutableList;
@@ -47,7 +22,7 @@
4722
/**
4823
* GUI that allows you to have multiple pages
4924
*/
50-
@SuppressWarnings({ "unused", "CodeBlock2Expr" })
25+
@SuppressWarnings("unused")
5126
public final class PaginatedMenu extends BaseMenu<PaginatedMenu> {
5227
@NotNull
5328
final List<Page> pageList;
@@ -57,8 +32,7 @@ public final class PaginatedMenu extends BaseMenu<PaginatedMenu> {
5732

5833
private int pageNum;
5934

60-
private final PageDecoration pageDecorator = PageDecoration.create(this);
61-
private final Pages pages;
35+
private final Decorator pageDecorator = PageDecoration.create(this);
6236

6337
private static final BukkitScheduler sch = Bukkit.getScheduler();
6438

@@ -68,8 +42,6 @@ public PaginatedMenu updateTitle(String title) {
6842
? Bukkit.createInventory(this, size, colorizedTitle)
6943
: Bukkit.createInventory(this, type.getType(), colorizedTitle);
7044
this.title = colorizedTitle;
71-
pages.setTitle(title);
72-
7345
this.inventory = updatedInventory;
7446

7547
this.updating = true;
@@ -79,28 +51,16 @@ public PaginatedMenu updateTitle(String title) {
7951
return this;
8052
}
8153

82-
public PageDecoration getPageDecorator() {
83-
return pageDecorator;
54+
public <T extends Decorator> T getPageDecorator(Class<T> pageClass) {
55+
return pageClass.cast(pageDecorator);
8456
}
8557

86-
/**
87-
* Retrieves Pages in the PaginatedMenu and the ability to set/add/remove items from every page.
88-
*
89-
* @return the Pages object
90-
*/
91-
public Pages getPages() {
92-
return pages;
58+
public PageDecoration getPageDecorator() {
59+
return getPageDecorator(PageDecoration.class);
9360
}
9461

95-
private PaginatedMenu(@NotNull Pages pages, EnumSet<Modifier> modifiers) {
96-
super(pages.rows, pages.getTitle(), modifiers);
97-
this.pages = pages;
98-
this.pageList = pages.getPages();
99-
for (int i = 0; i < size; i++) {
100-
pages.add(Page.of(this));
101-
}
102-
pages.setCurrentPage(pages.get(pageNum));
103-
this.currentPage = pages.getCurrentPage();
62+
public void addPage() {
63+
pageList.add(Page.of(this));
10464
}
10565

10666
/**
@@ -115,10 +75,8 @@ private PaginatedMenu(final int pageRows, final int pageCount, String title, Enu
11575
pageList.add(Page.of(this));
11676
}
11777
this.currentPage = pageList.get(pageNum);
118-
this.pages = Pages.create(pageList, title, pageRows, pageCount, (pages) -> {
119-
pages.setCurrentPage(pageList.get(pageNum));
120-
});
12178
}
79+
12280
/**
12381
* Main constructor to provide a way to create PaginatedMenu
12482
*/
@@ -129,19 +87,10 @@ private PaginatedMenu(MenuType type, final int pageCount, String title, EnumSet<
12987
pageList.add(Page.of(this));
13088
}
13189
this.currentPage = pageList.get(pageNum);
132-
this.pages = Pages.create(pageList, title, rows, pageCount, (pages) -> {
133-
pages.setCurrentPage(pageList.get(pageNum));
134-
});
13590
}
13691

137-
@NotNull
138-
public static PaginatedMenu create(Pages pages) {
139-
return new PaginatedMenu(pages, EnumSet.noneOf(Modifier.class));
140-
}
141-
142-
@NotNull
143-
public static PaginatedMenu create(Pages pages, EnumSet<Modifier> modifiers) {
144-
return new PaginatedMenu(pages, modifiers);
92+
public List<Page> pages() {
93+
return ImmutableList.copyOf(pageList);
14594
}
14695

14796
@NotNull
@@ -164,19 +113,6 @@ public static PaginatedMenu create(String title, MenuType type, int pages, EnumS
164113
return new PaginatedMenu(type, pages, title, modifiers);
165114
}
166115

167-
public Iterator<Page> pages() {
168-
return pageList.iterator();
169-
}
170-
171-
public void recreateInventory() {
172-
this.rows++;
173-
this.size = rows * 9;
174-
175-
pages.rows = rows;
176-
pages.size = size;
177-
inventory = Bukkit.createInventory(this, size, title);
178-
}
179-
180116
/**
181117
* Sets the next page item for the given slot with the provided item stack.
182118
*
@@ -428,20 +364,31 @@ public void open(@NotNull final HumanEntity player, final int openPage) {
428364
);
429365
}
430366

431-
pageNum = openPage;
432-
currentPage = pageList.get(openPage);
367+
this.pageNum = openPage;
368+
this.currentPage = pageList.get(openPage);
433369

434370
recreateItems();
435371
player.openInventory(inventory);
436372
}
437373

374+
/**
375+
* Opens the GUI to a specific page for the given player
376+
*
377+
* @param player The {@link HumanEntity} to open the GUI to
378+
* @return the object
379+
*/
380+
public PaginatedMenu open(@NotNull final HumanEntity player) {
381+
this.open(player, 1);
382+
return this;
383+
}
384+
438385
/**
439386
* Gets the current page number
440387
*
441388
* @return The current page number
442389
*/
443390
public int getCurrentPageNumber() {
444-
return pageNum;
391+
return pageNum + 1;
445392
}
446393

447394
/**
@@ -472,10 +419,7 @@ public boolean next() {
472419
if (pageNum + 1 >= pageList.size()) return false;
473420

474421
pageNum++;
475-
476-
Page page = pages.get(pageNum);
477-
pages.setCurrentPage(page);
478-
this.currentPage = page;
422+
this.currentPage = pageList.get(pageNum);
479423

480424
recreateItems();
481425
return true;
@@ -490,10 +434,7 @@ public boolean previous() {
490434
if (pageNum - 1 < 0) return false;
491435

492436
pageNum--;
493-
494-
Page page = pages.get(pageNum);
495-
pages.setCurrentPage(page);
496-
this.currentPage = page;
437+
this.currentPage = pageList.get(pageNum);
497438

498439
recreateItems();
499440
return true;
@@ -505,18 +446,160 @@ public boolean previous() {
505446
* @return False if there is no next page.
506447
*/
507448
public boolean page(int pageNum) {
508-
if (pageNum > size || pageNum < 0) return false;
449+
if (pageNum > pageList.size() || pageNum < 0) return false;
509450

510451
this.pageNum = pageNum;
511-
512-
Page page = pages.get(pageNum);
513-
pages.setCurrentPage(page);
514-
this.currentPage = page;
452+
this.currentPage = pageList.get(pageNum);
515453

516454
recreateItems();
517455
return true;
518456
}
519457

458+
public Page getPage(int index) {
459+
try {
460+
return pageList.get(index);
461+
} catch (IndexOutOfBoundsException e) {
462+
return null;
463+
}
464+
}
465+
466+
public Optional<Page> getOptionalPage(int index) {
467+
try {
468+
return Optional.ofNullable(pageList.get(index));
469+
} catch (IndexOutOfBoundsException e) {
470+
return Optional.empty();
471+
}
472+
}
473+
474+
public void addPageItems(MenuItem... items) {
475+
for (Page page : pageList) {
476+
page.addItem(items);
477+
}
478+
}
479+
480+
public void addPageItems(ItemStack... items) {
481+
for (Page page : pageList) {
482+
page.addItem(items);
483+
}
484+
}
485+
486+
public void setPageItem(Slot slot, MenuItem item) {
487+
for (Page page : pageList) {
488+
page.setItem(slot, item);
489+
}
490+
}
491+
492+
public void setPageItem(int[] slots, MenuItem item) {
493+
for (Page page : pageList) {
494+
for (int slot : slots)
495+
page.setItem(slot, item);
496+
}
497+
}
498+
499+
public void setPageItem(Slot[] slots, MenuItem item) {
500+
for (Page page : pageList) {
501+
for (Slot slot : slots)
502+
page.setItem(slot, item);
503+
}
504+
}
505+
506+
public void removePageItem(Slot slot) {
507+
for (Page page : pageList) {
508+
page.removeItem(slot);
509+
}
510+
}
511+
512+
public void removePageItem(int slot) {
513+
for (Page page : pageList) {
514+
page.removeItem(slot);
515+
}
516+
}
517+
518+
public void removePageItem(ItemStack slot) {
519+
for (Page page : pageList) {
520+
page.removeItem(slot);
521+
}
522+
}
523+
524+
public void removePageItem(MenuItem slot) {
525+
for (Page page : pageList) {
526+
page.removeItem(slot);
527+
}
528+
}
529+
530+
public void removePageItem(ItemStack... slot) {
531+
for (Page page : pageList) {
532+
page.removeItem(slot);
533+
}
534+
}
535+
536+
public void removePageItem(MenuItem... slot) {
537+
for (Page page : pageList) {
538+
page.removeItem(slot);
539+
}
540+
}
541+
542+
public void setPageItem(int startingIndex, int[] slots, MenuItem items) {
543+
int size = slots.length;
544+
for (Page page : pageList) {
545+
for (int i = startingIndex; i < size; i++) {
546+
page.setItem(slots[i], items);
547+
}
548+
}
549+
}
550+
551+
public void setPageItem(int startingIndex, Slot[] slots, MenuItem items) {
552+
for (Page page : pageList) {
553+
for (int i = startingIndex; i < size; i++) {
554+
page.setItem(slots[i], items);
555+
}
556+
}
557+
}
558+
559+
public void setPageItem(int slot, ItemStack item) {
560+
for (Page page : pageList) {
561+
page.setItem(slot, item);
562+
}
563+
}
564+
565+
public void setPageItem(Slot slot, ItemStack item) {
566+
for (Page page : pageList) {
567+
page.setItem(slot, item);
568+
}
569+
}
570+
571+
public void setPageItem(int startingIndex, int[] slots, ItemStack items) {
572+
for (Page page : pageList) {
573+
for (int i = startingIndex; i < size; i++) {
574+
page.setItem(slots[i], items);
575+
}
576+
}
577+
}
578+
579+
public void setPageItem(int startingIndex, Slot[] slots, ItemStack... items) {
580+
for (Page page : pageList) {
581+
for (int i = startingIndex; i < size; i++) {
582+
page.setItem(slots[i], items[i]);
583+
}
584+
}
585+
}
586+
587+
public void setPageItem(Slot[] slots, ItemStack item) {
588+
for (Page page : pageList) {
589+
for (Slot slot : slots) {
590+
page.setItem(slot, item);
591+
}
592+
}
593+
}
594+
595+
public void setPageItem(int[] slots, ItemStack item) {
596+
for (Page page : pageList) {
597+
for (int slot : slots) {
598+
page.setItem(slot, item);
599+
}
600+
}
601+
}
602+
520603
@NotNull
521604
public Page getCurrentPage() {
522605
return currentPage;

0 commit comments

Comments
 (0)