public abstract class PaginableInventory extends InventoryConstructor { @Setter private List iconsPage; @Getter private int size; @Setter private int page; public PaginableInventory(int size) { super(size); this.size = size; } public void setPage(int page) { int maxPage = Math.max((int) Math.floor(iconsPage.size() - size), size); if(page > maxPage) { if(this.page == maxPage) return; page = maxPage; } //Add Items List icons = getPageItems(page); for(int i = 0; i < iconsPage.size(); i++) { if(i < icons.size()) { setItem(icons.get(i), i); continue; } } } public int getMaxPage() { return Math.max((int) Math.floor(iconsPage.size() - size), size); } public void nextPage() { this.setPage(page + 1); } public void previousPage() { this.setPage(page - 1); } public List getPageItems(int i) { return iconsPage.subList(page*size, Math.max(iconsPage.size()-size, iconsPage.size()-size * page)); } }