diff --git a/src/main/java/de/studiocode/invgui/gui/impl/PagedGUI.java b/src/main/java/de/studiocode/invgui/gui/impl/PagedGUI.java index 73629a1..b743a97 100644 --- a/src/main/java/de/studiocode/invgui/gui/impl/PagedGUI.java +++ b/src/main/java/de/studiocode/invgui/gui/impl/PagedGUI.java @@ -63,12 +63,19 @@ public abstract class PagedGUI extends BaseGUI { } private void updatePageContent() { - List slotElements = getPageItems(currentPage); - - for (int i = 0; i < itemListSlots.length; i++) { - if (slotElements.size() > i) setSlotElement(itemListSlots[i], slotElements.get(i)); - else remove(itemListSlots[i]); - } + if (getCurrentPage() < getPageAmount()) { + List slotElements = getPageItems(currentPage); + + for (int i = 0; i < itemListSlots.length; i++) { + if (slotElements.size() > i) setSlotElement(itemListSlots[i], slotElements.get(i)); + else remove(itemListSlots[i]); + } + } else setCurrentPage(getPageAmount() - 1); + } + + private void setCurrentPage(int page) { + currentPage = page; + update(); } public int getCurrentPage() { @@ -91,7 +98,7 @@ public abstract class PagedGUI extends BaseGUI { return itemListSlots; } - abstract int getPageAmount(); + protected abstract int getPageAmount(); abstract List getPageItems(int page); diff --git a/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedGUIs.java b/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedGUIs.java index 7cc628d..609faa5 100644 --- a/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedGUIs.java +++ b/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedGUIs.java @@ -23,12 +23,12 @@ public class SimplePagedGUIs extends PagedGUI { } @Override - int getPageAmount() { + protected int getPageAmount() { return guis.size(); } @Override - List getPageItems(int page) { + protected List getPageItems(int page) { return Arrays.asList(guis.get(page).getSlotElements()); } diff --git a/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedItemsGUI.java b/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedItemsGUI.java index 67cdeae..90e80f7 100644 --- a/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedItemsGUI.java +++ b/src/main/java/de/studiocode/invgui/gui/impl/SimplePagedItemsGUI.java @@ -27,7 +27,7 @@ public class SimplePagedItemsGUI extends PagedGUI { } @Override - List getPageItems(int page) { + protected List getPageItems(int page) { int length = getItemListSlots().length; int from = page * length; int to = Math.min(from + length, items.size());