Class PagedGUIBuilder<T>

java.lang.Object
top.magstar.framework.gui.utils.PagedGUIBuilder<T>
Type Parameters:
T - 分页内容的数据类型

public class PagedGUIBuilder<T> extends Object
分页GUI构建器 - 提供流式API来配置分页GUI的各个方面
Since:
1.0.0
Version:
1.0.0
Author:
Berry_so
See Also:
  • Constructor Details

    • PagedGUIBuilder

      public PagedGUIBuilder()
  • Method Details

    • title

      public PagedGUIBuilder<T> title(SmartString title)
      设置标题 - 支持SmartString
      Parameters:
      title - GUI标题
      Returns:
      当前构建器实例
    • title

      public PagedGUIBuilder<T> title(String title)
      设置标题
      Parameters:
      title - GUI标题字符串
      Returns:
      当前构建器实例
    • rows

      public PagedGUIBuilder<T> rows(int rows)
      设置行数
      Parameters:
      rows - GUI行数(1-6)
      Returns:
      当前构建器实例
    • previousButton

      public PagedGUIBuilder<T> previousButton(int slot)
      设置上一页按钮槽位
      Parameters:
      slot - 槽位索引,-1表示不显示
      Returns:
      当前构建器实例
    • nextButton

      public PagedGUIBuilder<T> nextButton(int slot)
      设置下一页按钮槽位
      Parameters:
      slot - 槽位索引,-1表示不显示
      Returns:
      当前构建器实例
    • pageInfo

      public PagedGUIBuilder<T> pageInfo(int slot)
      设置页面信息槽位
      Parameters:
      slot - 槽位索引,-1表示不显示
      Returns:
      当前构建器实例
    • firstPageButton

      public PagedGUIBuilder<T> firstPageButton(int slot)
      设置首页按钮槽位
      Parameters:
      slot - 槽位索引,-1表示不显示
      Returns:
      当前构建器实例
    • lastPageButton

      public PagedGUIBuilder<T> lastPageButton(int slot)
      设置末页按钮槽位
      Parameters:
      slot - 槽位索引,-1表示不显示
      Returns:
      当前构建器实例
    • defaultLayout

      public PagedGUIBuilder<T> defaultLayout()
      使用默认6行布局
      Returns:
      当前构建器实例
    • compactLayout

      public PagedGUIBuilder<T> compactLayout()
      使用紧凑布局(5行)
      Returns:
      当前构建器实例
    • simpleLayout

      public PagedGUIBuilder<T> simpleLayout()
      简单布局(只有上一页和下一页)
      Returns:
      当前构建器实例
    • contentSlots

      public PagedGUIBuilder<T> contentSlots(Integer... slots)
      设置内容区域槽位
      Parameters:
      slots - 槽位索引数组
      Returns:
      当前构建器实例
    • contentSlots

      public PagedGUIBuilder<T> contentSlots(List<Integer> slots)
      设置内容区域槽位
      Parameters:
      slots - 槽位索引列表
      Returns:
      当前构建器实例
    • autoContentArea

      public PagedGUIBuilder<T> autoContentArea()
      自动计算内容区域(排除导航按钮和边框)
      Returns:
      当前构建器实例
    • itemsPerPage

      public PagedGUIBuilder<T> itemsPerPage(int count)
      设置每页显示的物品数量
      Parameters:
      count - 每页物品数量
      Returns:
      当前构建器实例
    • items

      public PagedGUIBuilder<T> items(List<T> items)
      设置要显示的物品列表
      Parameters:
      items - 物品列表
      Returns:
      当前构建器实例
    • items

      @SafeVarargs public final PagedGUIBuilder<T> items(T... items)
      设置要显示的物品列表
      Parameters:
      items - 物品数组
      Returns:
      当前构建器实例
    • itemRenderer

      public PagedGUIBuilder<T> itemRenderer(Function<T,org.bukkit.inventory.ItemStack> renderer)
      设置物品渲染器
      Parameters:
      renderer - 渲染器函数,接收数据对象返回ItemStack
      Returns:
      当前构建器实例
    • renderWith

      public PagedGUIBuilder<T> renderWith(Function<T,ItemBuilder> builderFunction)
      快速设置物品渲染器 - 使用ItemBuilder
      Parameters:
      builderFunction - 构建器函数,接收数据对象返回ItemBuilder
      Returns:
      当前构建器实例
    • onItemClick

      public PagedGUIBuilder<T> onItemClick(BiConsumer<T,GUIClickEvent> handler)
      设置物品点击处理器
      Parameters:
      handler - 点击处理器,接收数据对象和点击事件
      Returns:
      当前构建器实例
    • customPreviousButton

      public PagedGUIBuilder<T> customPreviousButton(Function<Boolean,org.bukkit.inventory.ItemStack> renderer)
      自定义上一页按钮渲染器
      Parameters:
      renderer - 渲染器函数,接收是否可用返回ItemStack
      Returns:
      当前构建器实例
    • customNextButton

      public PagedGUIBuilder<T> customNextButton(Function<Boolean,org.bukkit.inventory.ItemStack> renderer)
      自定义下一页按钮渲染器
      Parameters:
      renderer - 渲染器函数,接收是否可用返回ItemStack
      Returns:
      当前构建器实例
    • customPageInfo

      public PagedGUIBuilder<T> customPageInfo(Function<PagedGUIBuilder.PageInfo,org.bukkit.inventory.ItemStack> renderer)
      自定义页面信息渲染器
      Parameters:
      renderer - 渲染器函数,接收页面信息返回ItemStack
      Returns:
      当前构建器实例
    • customFirstPageButton

      public PagedGUIBuilder<T> customFirstPageButton(Function<Boolean,org.bukkit.inventory.ItemStack> renderer)
      自定义首页按钮渲染器
      Parameters:
      renderer - 渲染器函数,接收是否可用返回ItemStack
      Returns:
      当前构建器实例
    • customLastPageButton

      public PagedGUIBuilder<T> customLastPageButton(Function<Boolean,org.bukkit.inventory.ItemStack> renderer)
      自定义末页按钮渲染器
      Parameters:
      renderer - 渲染器函数,接收是否可用返回ItemStack
      Returns:
      当前构建器实例
    • allowPlayerInventory

      public PagedGUIBuilder<T> allowPlayerInventory()
      允许玩家背包交互
      Returns:
      当前构建器实例
    • allowPlayerInventory

      public PagedGUIBuilder<T> allowPlayerInventory(boolean allow)
      设置是否允许玩家背包交互
      Parameters:
      allow - true表示允许,false表示禁止
      Returns:
      当前构建器实例
    • fill

      public PagedGUIBuilder<T> fill(org.bukkit.Material material, SmartString name)
      设置填充物品 - 使用SmartString名称
      Parameters:
      material - 填充材料
      name - 物品显示名称
      Returns:
      当前构建器实例
    • fill

      public PagedGUIBuilder<T> fill(org.bukkit.Material material)
      设置填充物品
      Parameters:
      material - 填充材料
      Returns:
      当前构建器实例
    • fill

      public PagedGUIBuilder<T> fill(org.bukkit.inventory.ItemStack item)
      设置填充物品
      Parameters:
      item - 填充物品
      Returns:
      当前构建器实例
    • border

      public PagedGUIBuilder<T> border(org.bukkit.Material material, SmartString name)
      设置边框物品 - 使用SmartString名称
      Parameters:
      material - 边框材料
      name - 物品显示名称
      Returns:
      当前构建器实例
    • border

      public PagedGUIBuilder<T> border(org.bukkit.Material material)
      设置边框物品
      Parameters:
      material - 边框材料
      Returns:
      当前构建器实例
    • border

      public PagedGUIBuilder<T> border(org.bukkit.inventory.ItemStack item)
      设置边框物品
      Parameters:
      item - 边框物品
      Returns:
      当前构建器实例
    • buildChestGUI

      public <P extends org.bukkit.plugin.Plugin & MagstarPlugin> PagedGUI<T> buildChestGUI(GUIFactory factory, P instance)
      构建基于箱子的分页GUI
      Type Parameters:
      P - 插件类型
      Parameters:
      factory - GUI工厂
      instance - 插件实例(需同时实现Plugin和MagstarPlugin)
      Returns:
      创建的分页GUI实例
    • buildPacketGUI

      public <P extends org.bukkit.plugin.Plugin & MagstarPlugin> PagedGUI<T> buildPacketGUI(GUIFactory factory, P instance)
      构建基于数据包的分页GUI
      Type Parameters:
      P - 插件类型
      Parameters:
      factory - GUI工厂
      instance - 插件实例(需同时实现Plugin和MagstarPlugin)
      Returns:
      创建的分页GUI实例
    • buildPacketGUI

      public PagedGUI<T> buildPacketGUI(GUIFactory factory, org.bukkit.plugin.Plugin instance, MagstarPlugin plugin)
      构建基于数据包的分页GUI
      Parameters:
      factory - GUI工厂
      instance - 插件实例
      plugin - Magstar插件实例
      Returns:
      创建的分页GUI实例
    • buildChestGUI

      public PagedGUI<T> buildChestGUI(GUIFactory factory, org.bukkit.plugin.Plugin instance, MagstarPlugin plugin)
      构建基于箱子的分页GUI
      Parameters:
      factory - GUI工厂
      instance - 插件实例
      plugin - Magstar插件实例
      Returns:
      创建的分页GUI实例
    • getTitle

      public SmartString getTitle()
      获取GUI标题
      Returns:
      GUI标题
    • getRows

      public int getRows()
      获取GUI行数
      Returns:
      GUI行数
    • getPreviousButtonSlot

      public int getPreviousButtonSlot()
      获取上一页按钮槽位
      Returns:
      上一页按钮槽位
    • getNextButtonSlot

      public int getNextButtonSlot()
      获取下一页按钮槽位
      Returns:
      下一页按钮槽位
    • getPageInfoSlot

      public int getPageInfoSlot()
      获取页面信息槽位
      Returns:
      页面信息槽位
    • getFirstPageSlot

      public int getFirstPageSlot()
      获取首页按钮槽位
      Returns:
      首页按钮槽位
    • getLastPageSlot

      public int getLastPageSlot()
      获取末页按钮槽位
      Returns:
      末页按钮槽位
    • getContentSlots

      public int[] getContentSlots()
      获取内容区域槽位数组
      Returns:
      内容区域槽位数组
    • getItemsPerPage

      public int getItemsPerPage()
      获取每页显示的物品数量
      Returns:
      每页物品数量
    • getItems

      public List<T> getItems()
      获取物品列表
      Returns:
      物品列表的副本
    • getItemRenderer

      public Function<T,org.bukkit.inventory.ItemStack> getItemRenderer()
      获取物品渲染器
      Returns:
      物品渲染器函数
    • getItemClickHandler

      public BiConsumer<T,GUIClickEvent> getItemClickHandler()
      获取物品点击处理器
      Returns:
      物品点击处理器
    • getPreviousButtonRenderer

      public Function<Boolean,org.bukkit.inventory.ItemStack> getPreviousButtonRenderer()
      获取上一页按钮渲染器
      Returns:
      上一页按钮渲染器函数
    • getNextButtonRenderer

      public Function<Boolean,org.bukkit.inventory.ItemStack> getNextButtonRenderer()
      获取下一页按钮渲染器
      Returns:
      下一页按钮渲染器函数
    • getPageInfoRenderer

      public Function<PagedGUIBuilder.PageInfo,org.bukkit.inventory.ItemStack> getPageInfoRenderer()
      获取页面信息渲染器
      Returns:
      页面信息渲染器函数
    • getFirstPageButtonRenderer

      public Function<Boolean,org.bukkit.inventory.ItemStack> getFirstPageButtonRenderer()
      获取首页按钮渲染器
      Returns:
      首页按钮渲染器函数
    • getLastPageButtonRenderer

      public Function<Boolean,org.bukkit.inventory.ItemStack> getLastPageButtonRenderer()
      获取末页按钮渲染器
      Returns:
      末页按钮渲染器函数
    • isAllowPlayerInventory

      public boolean isAllowPlayerInventory()
      检查是否允许玩家背包交互
      Returns:
      true表示允许,false表示禁止
    • getFillItem

      public org.bukkit.inventory.ItemStack getFillItem()
      获取填充物品
      Returns:
      填充物品
    • getBorderItem

      public org.bukkit.inventory.ItemStack getBorderItem()
      获取边框物品
      Returns:
      边框物品