Class AnvilGui

All Implemented Interfaces:
InventoryBased, InventoryHolder

public class AnvilGui extends NamedGui implements InventoryBased
Represents a gui in the form of an anvil
Since:
0.8.0
  • Constructor Details

    • AnvilGui

      public AnvilGui(@NotNull @NotNull String title)
      Constructs a new anvil gui
      Parameters:
      title - the title/name of this gui.
      Since:
      0.8.0
    • AnvilGui

      public AnvilGui(@NotNull @NotNull com.github.stefvanschie.inventoryframework.adventuresupport.TextHolder title)
      Constructs a new anvil gui
      Parameters:
      title - the title/name of this gui.
      Since:
      0.10.0
    • AnvilGui

      public AnvilGui(@NotNull @NotNull String title, @NotNull @NotNull Plugin plugin)
      Constructs a new anvil gui for the given plugin.
      Parameters:
      title - the title/name of this gui.
      plugin - the owning plugin of this gui
      Since:
      0.10.8
      See Also:
    • AnvilGui

      public AnvilGui(@NotNull @NotNull com.github.stefvanschie.inventoryframework.adventuresupport.TextHolder title, @NotNull @NotNull Plugin plugin)
      Constructs a new anvil gui for the given plugin.
      Parameters:
      title - the title/name of this gui.
      plugin - the owning plugin of this gui
      Since:
      0.10.8
      See Also:
  • Method Details

    • update

      public void update()
      Description copied from class: Gui
      Update the gui for everyone
      Specified by:
      update in class Gui
    • getItems

      @NotNull @Contract(pure=true) public @NotNull Iterable<? extends GuiItem> getItems()
      Description copied from class: Gui
      Gets all the GuiItem instances in this gui.
      Specified by:
      getItems in class Gui
      Returns:
      all gui items
    • show

      public void show(@NotNull @NotNull HumanEntity humanEntity)
      Description copied from class: Gui
      Shows a gui to a player
      Specified by:
      show in class Gui
      Parameters:
      humanEntity - the human entity to show the gui to
    • copy

      @NotNull @Contract(pure=true) public @NotNull AnvilGui copy()
      Description copied from class: Gui
      Makes a copy of this gui and returns it. This makes a deep copy of the gui. This entails that the underlying panes will be copied as per their Pane.copy() and miscellaneous data will be copied. The copy of this gui, will however have no viewers even if this gui currently has viewers. With this, cache data for viewers will also be non-existent for the copied gui. The original owning plugin of the gui is preserved, but the plugin will not be deeply copied. The returned gui will never be reference equal to the current gui.
      Specified by:
      copy in class Gui
      Returns:
      a copy of the gui
    • click

      public void click(@NotNull @NotNull InventoryClickEvent event)
      Description copied from class: Gui
      This should delegate the provided inventory click event to the right pane, which can then handle this click event further. This should not call any internal click handlers, since those will already have been activated.
      Specified by:
      click in class Gui
      Parameters:
      event - the event to delegate
    • getInventory

      @NotNull public @NotNull Inventory getInventory()
      Specified by:
      getInventory in interface InventoryHolder
    • setCost

      public void setCost(short cost)
      Sets the enchantment level cost for this anvil gui. Taking the item from the result slot will not actually remove these levels. Having a cost specified does not impede a player's ability to take the item in the result item, even if the player does not have the specified amount of levels. The cost must be a non-negative number.
      Parameters:
      cost - the cost
      Throws:
      IllegalArgumentException - when the cost is less than zero
      Since:
      0.10.8
    • createInventory

      @NotNull @Contract(pure=true) public @NotNull Inventory createInventory()
      Description copied from interface: InventoryBased
      Creates a new inventory of the type of the implementing class.
      Specified by:
      createInventory in interface InventoryBased
      Returns:
      the new inventory
    • getRenameText

      @NotNull @Contract(pure=true) public @NotNull String getRenameText()
      Gets the rename text currently specified in the anvil.
      Returns:
      the rename text
      Since:
      0.8.0
      See Also:
    • isPlayerInventoryUsed

      @Contract(pure=true) public boolean isPlayerInventoryUsed()
      Description copied from class: Gui
      Gets whether the player inventory is currently in use. This means whether the player inventory currently has an item in it.
      Specified by:
      isPlayerInventoryUsed in class Gui
      Returns:
      true if the player inventory is occupied, false otherwise
    • getViewerCount

      @Contract(pure=true) public int getViewerCount()
      Description copied from class: Gui
      Gets the count of HumanEntity instances that are currently viewing this GUI.
      Specified by:
      getViewerCount in class Gui
      Returns:
      the count of viewers
    • getViewers

      @NotNull @Contract(pure=true) public @NotNull List<HumanEntity> getViewers()
      Description copied from class: Gui
      Gets a mutable snapshot of the current HumanEntity viewers of this GUI. This is a snapshot (copy) and not a view, therefore modifications aren't visible.
      Specified by:
      getViewers in class Gui
      Returns:
      a snapshot of the current viewers
      See Also:
    • setOnNameInputChanged

      public void setOnNameInputChanged(@NotNull @NotNull Consumer<? super String> onNameInputChanged)
      Sets the consumer that should be called whenever the name input is changed. The argument is the new input. When this consumer is invoked, the value as returned by getRenameText() will not have updated yet, hence allowing you to see the old value via that.
      Parameters:
      onNameInputChanged - the consumer to call when the rename input is changed
      Since:
      0.10.10
    • getFirstItemComponent

      @NotNull @Contract(pure=true) public @NotNull GuiComponent getFirstItemComponent()
      Gets the gui component representing the first item
      Returns:
      the first item component
      Since:
      0.8.0
    • getSecondItemComponent

      @NotNull @Contract(pure=true) public @NotNull GuiComponent getSecondItemComponent()
      Gets the gui component representing the second item
      Returns:
      the second item component
      Since:
      0.8.0
    • getResultComponent

      @NotNull @Contract(pure=true) public @NotNull GuiComponent getResultComponent()
      Gets the gui component representing the result
      Returns:
      the result component
      Since:
      0.8.0
    • getPlayerGuiComponent

      @NotNull @Contract(pure=true) public @NotNull GuiComponent getPlayerGuiComponent()
      Gets the gui component representing the player inventory
      Returns:
      the player gui component
      Since:
      0.8.0
    • load

      @Nullable @Contract(pure=true) public static @Nullable AnvilGui load(@NotNull @NotNull Object instance, @NotNull @NotNull InputStream inputStream, @NotNull @NotNull Plugin plugin)
      Loads an anvil gui from an XML file.
      Parameters:
      instance - the instance on which to reference fields and methods
      inputStream - the input stream containing the XML data
      plugin - the plugin that will be the owner of the created gui
      Returns:
      the loaded anvil gui
      Since:
      0.10.8
      See Also:
    • load

      @NotNull public static @NotNull AnvilGui load(@NotNull @NotNull Object instance, @NotNull @NotNull Element element, @NotNull @NotNull Plugin plugin)
      Loads an anvil gui from the specified element, applying code references to the provided instance.
      Parameters:
      instance - the instance on which to reference fields and methods
      element - the element to load the gui from
      plugin - the plugin that will own the created gui
      Returns:
      the loaded anvil gui
      Since:
      0.10.8
      See Also:
    • load

      @Nullable @Contract(pure=true) public static @Nullable AnvilGui load(@NotNull @NotNull Object instance, @NotNull @NotNull InputStream inputStream)
      Loads an anvil gui from an XML file.
      Parameters:
      instance - the instance on which to reference fields and methods
      inputStream - the input stream containing the XML data
      Returns:
      the loaded anvil gui
      Since:
      0.8.0
    • load

      @NotNull public static @NotNull AnvilGui load(@NotNull @NotNull Object instance, @NotNull @NotNull Element element)
      Loads an anvil gui from the specified element, applying code references to the provided instance.
      Parameters:
      instance - the instance on which to reference fields and methods
      element - the element to load the gui from
      Returns:
      the loaded anvil gui
      Since:
      0.8.0