diff --git a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/GUI.java b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/GUI.java index 45197d6..f96a52a 100644 --- a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/GUI.java +++ b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/GUI.java @@ -81,6 +81,19 @@ public class GUI { } } + /** + * 设置GUI上方(箱子部分) + * @param row 行数,1为第1行 + * @param column 列数,1为第1列 + * @param item GUIItem + */ + public void setItem(int row, int column, @NotNull GUIItem item){ + if(row <= 0 || column <= 0) throw new IllegalArgumentException("行数和列数都不能小于等于零"); + if(row > type.getLines()) throw new IllegalArgumentException("行数("+row+")大于GUI大小限制("+type.getLines()+")"); + if(column > 9) throw new IllegalArgumentException("列数("+column+")不能大于9"); + setItem(9*(row-1)+column-1, item); + } + public GUIItem getItem(int index) { return this.items.get(index); } diff --git a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/AutoPagedGUI.java b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/AutoPagedGUI.java index ad0bcca..c7ba019 100644 --- a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/AutoPagedGUI.java +++ b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/AutoPagedGUI.java @@ -77,7 +77,14 @@ public class AutoPagedGUI extends CommonPagedGUI { public void openGUI(Player user) { if (previousPageSlot >= 0) { if (hasPreviousPage()) { - setItem(previousPageSlot, new GUIItem(Optional.ofNullable(defaultPreviousPage).map(d -> d.apply(user)).orElse(previousPageUI)) { + ItemStack finalPreviousPageUI; + if(previousPageUI != null) + finalPreviousPageUI = previousPageUI; + else if (defaultPreviousPage != null) + finalPreviousPageUI = defaultPreviousPage.apply(user); + else + finalPreviousPageUI = null; + setItem(previousPageSlot, new GUIItem(finalPreviousPageUI) { @Override public void onClick(Player clicker, ClickType type) { if (type == ClickType.RIGHT) { @@ -95,7 +102,14 @@ public class AutoPagedGUI extends CommonPagedGUI { if (nextPageSlot >= 0) { if (hasNextPage()) { - setItem(nextPageSlot, new GUIItem(Optional.ofNullable(defaultNextPage).map(d -> d.apply(user)).orElse(nextPageUI)) { + ItemStack finalNextPageUI; + if(previousPageUI != null) + finalNextPageUI = nextPageUI; + else if (defaultNextPage != null) + finalNextPageUI = defaultNextPage.apply(user); + else + finalNextPageUI = null; + setItem(nextPageSlot, new GUIItem(finalNextPageUI) { @Override public void onClick(Player clicker, ClickType type) { if (type == ClickType.RIGHT) { diff --git a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/CommonPagedGUI.java b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/CommonPagedGUI.java index 4b163dd..0aafb95 100644 --- a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/CommonPagedGUI.java +++ b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/CommonPagedGUI.java @@ -101,6 +101,8 @@ public class CommonPagedGUI extends PagedGUI { super.openGUI(player); return; } + if(page > getLastPageNumber()) + page = getLastPageNumber(); List list = new ArrayList<>(); int start = (page - 1) * range.length; for (int i = start; i < start + range.length; i++) { diff --git a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/PagedGUI.java b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/PagedGUI.java index 0a6c06a..d61352c 100644 --- a/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/PagedGUI.java +++ b/base/gui/src/main/java/cc/carm/lib/easyplugin/gui/paged/PagedGUI.java @@ -20,7 +20,7 @@ public abstract class PagedGUI extends GUI { } public int setCurrentPage(int page) { - this.page = Math.max(1, Math.min(page, getLastPageNumber())); + this.page = Math.max(1, page); return this.page; }