From 11654d3967817672662a8c4e23399b9c3fc74410 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Tue, 3 Oct 2023 07:52:19 +0200 Subject: [PATCH] Fix PagedItemsGuiImpl only creating full pages --- .../invui/gui/PagedItemsGuiImpl.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/invui-core/src/main/java/xyz/xenondevs/invui/gui/PagedItemsGuiImpl.java b/invui-core/src/main/java/xyz/xenondevs/invui/gui/PagedItemsGuiImpl.java index 0d6063b..6ebac02 100644 --- a/invui-core/src/main/java/xyz/xenondevs/invui/gui/PagedItemsGuiImpl.java +++ b/invui-core/src/main/java/xyz/xenondevs/invui/gui/PagedItemsGuiImpl.java @@ -42,19 +42,22 @@ final class PagedItemsGuiImpl extends AbstractPagedGui { @Override public void bake() { - List items = content; int contentSize = getContentListSlots().length; - List> pages = new ArrayList<>(); + List items = content; - int pageAmount = items.size() / contentSize; - for (int pageIdx = 0; pageIdx < pageAmount; pageIdx++) { - int from = pageIdx * contentSize; - int to = Math.min(from + contentSize, items.size()); + List> pages = new ArrayList<>(); + List page = new ArrayList<>(contentSize); + + for (Item item : content) { + page.add(new SlotElement.ItemSlotElement(item)); - ArrayList page = new ArrayList<>(contentSize); - for (int i = from; i < to; i++) { - page.add(new SlotElement.ItemSlotElement(items.get(i))); + if (page.size() >= contentSize) { + pages.add(page); + page = new ArrayList<>(contentSize); } + } + + if (!page.isEmpty()) { pages.add(page); }