diff --git a/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java b/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java index 915f8e8..c1cff42 100644 --- a/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java +++ b/src/main/java/com/extendedae_plus/mixin/GuiExPatternProviderMixin.java @@ -54,10 +54,11 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen= 0); - } + // 更新按钮可见性 - 始终显示,支持循环翻页 + if (nextPage != null && prevPage != null) { + this.nextPage.setVisibility(true); + this.prevPage.setVisibility(true); + } // 调整槽位位置 this.adjustSlotPositions(page); @@ -189,34 +190,33 @@ public abstract class GuiExPatternProviderMixin extends PatternProviderScreen SLOTS_PER_PAGE) { // 前进后退按钮 - this.prevPage = new ActionEPPButton((b) -> { - int currentPage = getCurrentPage(); - if (currentPage > 0) { - // 发送网络包更新页码 - // 这里简化处理,直接调用setPage方法 - try { - ContainerExPatternProvider menu1 = this.getMenu(); - java.lang.reflect.Method setPageMethod = menu1.getClass().getMethod("setPage", int.class); - setPageMethod.invoke(menu1, currentPage - 1); - } catch (Exception e) { - // 忽略反射错误 - } - } - }, Icon.ARROW_LEFT); + this.prevPage = new ActionEPPButton((b) -> { + int currentPage = getCurrentPage(); + int maxPage = getMaxPage(); + // 循环翻页:第一页向前翻到最后一页 + int newPage = (currentPage - 1 + maxPage) % maxPage; + try { + ContainerExPatternProvider menu1 = this.getMenu(); + java.lang.reflect.Method setPageMethod = menu1.getClass().getMethod("setPage", int.class); + setPageMethod.invoke(menu1, newPage); + } catch (Exception e) { + // 忽略反射错误 + } + }, Icon.ARROW_LEFT); - this.nextPage = new ActionEPPButton((b) -> { - int currentPage = getCurrentPage(); - int maxPage = getMaxPage(); - if (currentPage + 1 < maxPage) { - try { - ContainerExPatternProvider menu1 = this.getMenu(); - java.lang.reflect.Method setPageMethod = menu1.getClass().getMethod("setPage", int.class); - setPageMethod.invoke(menu1, currentPage + 1); - } catch (Exception e) { - // 忽略反射错误 - } - } - }, Icon.ARROW_RIGHT); + this.nextPage = new ActionEPPButton((b) -> { + int currentPage = getCurrentPage(); + int maxPage = getMaxPage(); + // 循环翻页:最后一页向后翻到第一页 + int newPage = (currentPage + 1) % maxPage; + try { + ContainerExPatternProvider menu1 = this.getMenu(); + java.lang.reflect.Method setPageMethod = menu1.getClass().getMethod("setPage", int.class); + setPageMethod.invoke(menu1, newPage); + } catch (Exception e) { + // 忽略反射错误 + } + }, Icon.ARROW_RIGHT); this.addToLeftToolbar(this.nextPage); this.addToLeftToolbar(this.prevPage);