java.lang.Object
com.github.stefvanschie.inventoryframework.pane.Pane
Direct Known Subclasses:
CycleButton, MasonryPane, OutlinePane, PaginatedPane, PatternPane, StaticPane, ToggleButton, VariableBar

public abstract class Pane extends Object
The base class for all panes.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    An enum representing the rendering priorities for the panes.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected int
    Length is horizontal, height is vertical
    protected int
    Length is horizontal, height is vertical
    protected @Nullable Consumer<InventoryClickEvent>
    The consumer that will be called once a players clicks in this pane
    protected UUID
    A unique identifier for panes to locate them by
    protected int
    The starting position of this pane, which is 0 by default
    protected int
    The starting position of this pane, which is 0 by default
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Pane(int length, int height)
    Constructs a new default pane, with no position
    protected
    Pane(int x, int y, int length, int height)
    Constructs a new default pane
    protected
    Pane(int x, int y, int length, int height, @NotNull Pane.Priority priority)
    Constructs a new default pane
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Calls the consumer (if it's not null) that was specified using setOnClick(Consumer), so the consumer that should be called whenever this pane is clicked in.
    abstract void
    Clears the entire pane of any items/panes.
    abstract boolean
    click(@NotNull Gui gui, @NotNull InventoryComponent inventoryComponent, @NotNull InventoryClickEvent event, int slot, int paneOffsetX, int paneOffsetY, int maxLength, int maxHeight)
    Called whenever there is being clicked on this pane
    @NotNull Pane
    Makes a copy of this pane and returns it.
    abstract void
    display(@NotNull InventoryComponent inventoryComponent, int paneOffsetX, int paneOffsetY, int maxLength, int maxHeight)
    Has to set all the items in the right spot inside the inventory
    protected static <T extends GuiItem>
    T
    findMatchingItem(@NotNull Collection<T> items, @NotNull ItemStack item)
    Finds a type of GuiItem from the provided collection of items based on the provided ItemStack.
    int
    Returns the height of this pane
    abstract @NotNull Collection<GuiItem>
    Gets all the items in this pane and all underlying panes.
    int
    Returns the length of this pane
    abstract @NotNull Collection<Pane>
    Gets all the panes in this panes, including any child panes from other panes.
    @NotNull Pane.Priority
    Returns the priority of the pane
    @NotNull UUID
    Gets the UUID associated with this pane.
    int
    Gets the x coordinate of this pane
    int
    Gets the y coordinate of this pane
    boolean
    Returns the pane's visibility state
    static void
    load(@NotNull Pane pane, @NotNull Object instance, @NotNull Element element)
     
    static @NotNull GuiItem
    loadItem(@NotNull Object instance, @NotNull Element element)
    Loads an item from an instance and an element
    static void
    registerProperty(@NotNull String attributeName, @NotNull Function<String,Object> function)
    Registers a property that can be used inside an XML file to add additional new properties.
    void
    setHeight(int height)
    Set the height of this pane
    void
    setLength(int length)
    Set the length of this pane
    void
    Set the consumer that should be called whenever this pane is clicked in.
    void
    setPriority(@NotNull Pane.Priority priority)
    Sets the priority of this pane
    void
    setVisible(boolean visible)
    Sets whether this pane is visible or not
    void
    setX(int x)
    Set the x coordinate of this pane
    void
    setY(int y)
    Set the y coordinate of this pane

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • x

      protected int x
      The starting position of this pane, which is 0 by default
    • y

      protected int y
      The starting position of this pane, which is 0 by default
    • length

      protected int length
      Length is horizontal, height is vertical
    • height

      protected int height
      Length is horizontal, height is vertical
    • onClick

      @Nullable protected @Nullable Consumer<InventoryClickEvent> onClick
      The consumer that will be called once a players clicks in this pane
    • uuid

      protected UUID uuid
      A unique identifier for panes to locate them by
  • Constructor Details

    • Pane

      protected Pane(int x, int y, int length, int height, @NotNull @NotNull Pane.Priority priority)
      Constructs a new default pane
      Parameters:
      x - the upper left x coordinate of the pane
      y - the upper left y coordinate of the pane
      length - the length of the pane
      height - the height of the pane
      priority - the priority of the pane
    • Pane

      protected Pane(int length, int height)
      Constructs a new default pane, with no position
      Parameters:
      length - the length of the pane
      height - the height of the pane
    • Pane

      protected Pane(int x, int y, int length, int height)
      Constructs a new default pane
      Parameters:
      x - the upper left x coordinate of the pane
      y - the upper left y coordinate of the pane
      length - the length of the pane
      height - the height of the pane
  • Method Details

    • copy

      @NotNull @Contract(pure=true) public @NotNull Pane copy()
      Makes a copy of this pane and returns it. This makes a deep copy of the pane. This entails that the underlying panes and/or items will be copied as well. The returned pane will never be reference equal to the current pane.
      Returns:
      a copy of this pane
      Since:
      0.6.2
    • setLength

      public void setLength(int length)
      Set the length of this pane
      Parameters:
      length - the new length
    • setHeight

      public void setHeight(int height)
      Set the height of this pane
      Parameters:
      height - the new height
    • setX

      public void setX(int x)
      Set the x coordinate of this pane
      Parameters:
      x - the new x coordinate
    • setY

      public void setY(int y)
      Set the y coordinate of this pane
      Parameters:
      y - the new y coordinate
    • getLength

      @Contract(pure=true) public int getLength()
      Returns the length of this pane
      Returns:
      the length
    • getHeight

      @Contract(pure=true) public int getHeight()
      Returns the height of this pane
      Returns:
      the height
    • getUUID

      @NotNull @Contract(pure=true) public @NotNull UUID getUUID()
      Gets the UUID associated with this pane.
      Returns:
      the uuid
      Since:
      0.7.1
    • getX

      @Contract(pure=true) public int getX()
      Gets the x coordinate of this pane
      Returns:
      the x coordinate
    • getY

      @Contract(pure=true) public int getY()
      Gets the y coordinate of this pane
      Returns:
      the y coordinate
    • display

      public abstract void display(@NotNull @NotNull InventoryComponent inventoryComponent, int paneOffsetX, int paneOffsetY, int maxLength, int maxHeight)
      Has to set all the items in the right spot inside the inventory
      Parameters:
      inventoryComponent - the inventory component in which the items should be displayed
      paneOffsetX - the pane's offset on the x axis
      paneOffsetY - the pane's offset on the y axis
      maxLength - the maximum length of the pane
      maxHeight - the maximum height of the pane
    • isVisible

      @Contract(pure=true) public boolean isVisible()
      Returns the pane's visibility state
      Returns:
      the pane's visibility
    • setVisible

      public void setVisible(boolean visible)
      Sets whether this pane is visible or not
      Parameters:
      visible - the pane's visibility
    • click

      public abstract boolean click(@NotNull @NotNull Gui gui, @NotNull @NotNull InventoryComponent inventoryComponent, @NotNull @NotNull InventoryClickEvent event, int slot, int paneOffsetX, int paneOffsetY, int maxLength, int maxHeight)
      Called whenever there is being clicked on this pane
      Parameters:
      gui - the gui in which was clicked
      inventoryComponent - the inventory component in which this pane resides
      event - the event that occurred while clicking on this item
      slot - the slot that was clicked in
      paneOffsetX - the pane's offset on the x axis
      paneOffsetY - the pane's offset on the y axis
      maxLength - the maximum length of the pane
      maxHeight - the maximum height of the pane
      Returns:
      whether the item was found or not
    • setPriority

      public void setPriority(@NotNull @NotNull Pane.Priority priority)
      Sets the priority of this pane
      Parameters:
      priority - the priority
    • loadItem

      @NotNull @Contract(pure=true) public static @NotNull GuiItem loadItem(@NotNull @NotNull Object instance, @NotNull @NotNull Element element)
      Loads an item from an instance and an element
      Parameters:
      instance - the instance
      element - the element
      Returns:
      the gui item
    • load

      public static void load(@NotNull @NotNull Pane pane, @NotNull @NotNull Object instance, @NotNull @NotNull Element element)
    • findMatchingItem

      @Nullable @Contract(pure=true) protected static <T extends GuiItem> T findMatchingItem(@NotNull @NotNull Collection<T> items, @NotNull @NotNull ItemStack item)
      Finds a type of GuiItem from the provided collection of items based on the provided ItemStack. The items will be compared using internal data. When the item does not have this data, this method will return null. If the item does have such data, but its value cannot be found in the provided list, null is also returned. This method will not mutate any of the provided arguments, nor any of the contents inside of the arguments. The provided collection may be unmodifiable if preferred. This method will always return a type of GuiItem that is in the provided collection - when the returned result is not null - such that an element E inside the provided collection reference equals the returned type of GuiItem.
      Type Parameters:
      T - a type of GuiItem, which will be used in the provided collection and as return type
      Parameters:
      items - a collection of items in which will be searched
      item - the item for which an GuiItem should be found
      Returns:
      the found type of GuiItem or null if none was found
      Since:
      0.5.14
    • getPriority

      @NotNull public @NotNull Pane.Priority getPriority()
      Returns the priority of the pane
      Returns:
      the priority
    • getItems

      @NotNull @Contract(pure=true) public abstract @NotNull Collection<GuiItem> getItems()
      Gets all the items in this pane and all underlying panes. The returned collection is not guaranteed to be mutable or to be a view of the underlying data. (So changes to the gui are not guaranteed to be visible in the returned value.)
      Returns:
      all items
    • getPanes

      @NotNull @Contract(pure=true) public abstract @NotNull Collection<Pane> getPanes()
      Gets all the panes in this panes, including any child panes from other panes. The returned collection is not guaranteed to be mutable or to be a view of the underlying data. (So changes to the gui are not guaranteed to be visible in the returned value.)
      Returns:
      all panes
    • clear

      public abstract void clear()
      Clears the entire pane of any items/panes. Underlying panes will not be cleared.
      Since:
      0.3.2
    • setOnClick

      public void setOnClick(@Nullable @Nullable Consumer<InventoryClickEvent> onClick)
      Set the consumer that should be called whenever this pane is clicked in.
      Parameters:
      onClick - the consumer that gets called
      Since:
      0.4.0
    • callOnClick

      protected void callOnClick(@NotNull @NotNull InventoryClickEvent event)
      Calls the consumer (if it's not null) that was specified using setOnClick(Consumer), so the consumer that should be called whenever this pane is clicked in. Catches and logs all exceptions the consumer might throw.
      Parameters:
      event - the event to handle
      Since:
      0.6.0
    • registerProperty

      public static void registerProperty(@NotNull @NotNull String attributeName, @NotNull @NotNull Function<String,Object> function)
      Registers a property that can be used inside an XML file to add additional new properties. The use of Gui.registerProperty(String, Function) is preferred over this method.
      Parameters:
      attributeName - the name of the property. This is the same name you'll be using to specify the property type in the XML file.
      function - how the property should be processed. This converts the raw text input from the XML node value into the correct object type.
      Throws:
      IllegalArgumentException - when a property with this name is already registered.