public abstract class PaginableInventory extends InventoryConstructor { @Setter private List iconsPage; @Getter private int size; @Setter private int page; public PaginableInventory(int sizeGui) { super(sizeGui); this.size = sizeGui; } public void setPage(int page) { int maxPage = Math.round(iconsPage.size() / size); Bukkit.broadcastMessage("MaxPage: " + String.valueOf(iconsPage.size() / size)); if(page > maxPage) { if(this.page == maxPage) return; page = maxPage; } //Add Items List icons = getPageItems(page); Bukkit.broadcastMessage("Size:" + size); Bukkit.broadcastMessage("Icons: " + icons.toString()); Bukkit.broadcastMessage("Icons Size: " + String.valueOf(icons.size())); for(int i = 0; i < iconsPage.size(); i++) { if(i < icons.size()) { addItem(icons.get(i)); continue; } } } public int getMaxPage() { return Math.round(iconsPage.size() / size); } public void nextPage() { this.setPage(page + 1); } public void previousPage() { this.setPage(page - 1); } public List getPageItems(int i) { int Start = page * size; int End = Math.min((page + 1) * size, iconsPage.size()); Bukkit.broadcastMessage("Start: " + String.valueOf(Start)); Bukkit.broadcastMessage("End: " + String.valueOf(End)); return iconsPage.subList(Start, End); } }