GuiLib icon

GuiLib -----

Yet Another Inventory Gui Library




This update will make it so that GuiLib will continue to work as expected when Paper changes its package structure.
----------, Oct 14, 2023

This update makes checking whether an inventory is a gui more performant, especially when the gui contains a lot of items with lots of metadata (nbt tag). The issue that was fixed by this update is described here: https://www.spigotmc.org/threads/wh...ally-cause-lag-an-inventoryholder-psa.607711/
----------, Jun 22, 2023

If you were shading GuiLibs api in your plugin, it would already work on Folia. Now it also works when using GuiLib as a runtime dependency on Folia.
----------, May 27, 2023

This update makes GuiLib work on Folia. Cheers!
----------, May 26, 2023

In this release the Shape class has seen several changes:

New shapes have been added:
  • CHISELED_BOOKSHELF
  • COMPOSTER
  • ENCHANTING
  • SMITHING_NEW
  • VILLAGER
Bugfixes:
  • Shape.SHULKER_BOX is now a grid shape of 9x3 instead of 3x3.
  • Fixed a bug in the Shape#determine(Inventory) method which caused it to return an incorrect shape for Villager inventories
  • Removed methods that returned instances of internal classes from the Shape interface.
----------, Apr 18, 2023

This update fixes a long standing bug that would cause GuiInventories to be unregistered automagically if 3 conditions were met:
  1. GuiLib runs on CraftBukkit or Spigot (not on Paper).
  2. The InventoryType of the gui is of a tile entity (not chest).
  3. A garbage collection sweep happens while the gui was still in memory.
These conditions were very rare, but still, this bug is fixed now.
----------, Mar 31, 2023

Added:
  • Pattern#ofArray, Pattern#ofList
Improved:
  • A few of the Schedule implementations have been optimized to not return new instances when not necessary.
----------, Nov 24, 2021

Added:
  • Schedule#repeat() - makes a schedule loop.
  • Some more optimizations related to Schedules.
  • toString(), equals(Object) and hashCode() implementations for the built-in schedules.
----------, Jun 6, 2021

Adds an api that makes it easier to customize the rate at which animation frames are shown in the inventory.
----------, Jun 2, 2021

You can now chain animations easily using Animation#andThen(animation).
----------, Jun 2, 2021

Added:
  • The ability to do bulk operations on Inventories / MenuHolders using Patterns and Masks.
  • Animation api with custom Frame implementation support.
----------, Jun 2, 2021


PluginMessageButton#BungeeCord is now a thing!

Happy coding!
----------, Aug 4, 2020

PageMenus have seen two new big improvements!
  • Going between pages that have the same size no longer require an inventory re-open. This behaviour can be used by subclasses too by overriding #needsRedirects().
  • Clicking on redirect buttons inside a page will now keep the player inside a PageMenu.
----------, Aug 1, 2020

- Added the overload ItemBuilder#persistentData(NamespacedKey,PersistentDataContainer[])
- Updated dependencies
----------, Jun 26, 2020

- the Iterator returned by MenuHolder#iterator is now a ListIterator that support all methods except #add(MenuButton).
- added a specialized Spliterator as well.
----------, Jan 29, 2020

- Updated several dependencies
- Can now handle InventoryDragEvent from InventoryGuiHolder
- Memory usage optimization for inventories that store their own InventyHolder in memory.
- Other miscellanious cleanups
----------, Jan 29, 2020

And some small fixes
----------, Oct 12, 2019

- Updates the ItemBuilder api to now include support for custom item models and PersistentDataHolder
- Fixes a bug that caused PageMenu to handle inventory open/click/close events incorrectly
- Allow menus to handle InventoryDragEvent (cancelled by default)
----------, Aug 18, 2019

* Added the ability to let ClaimButton leave a copy of itself in the top inventory.
* Fixed ClaimButton documentation
* Upgraded to Java 12's class file format
----------, Mar 25, 2019

Rename the plugin from GuiLib-Plugin back to GuiLib
----------, Jan 15, 2019


- Redirect buttons don't try to open the new inventory when redirected to null.
- Made RedirectItemButton#onClick non-final so that the button can take more action than just redirecting. Subclasses should always call super.onClick(menuHolder, event). if they override that method.
----------, Jan 4, 2019

Refactored some classes to split the project up into two maven modules: GuiLib-Plugin and GuiLib-API.
----------, Nov 17, 2018

- Adds a button that composes two buttons sequentially
----------, Nov 10, 2018

- Added the ability to hook collbacks onto button changes.
- Added icon setter to ItemButton.
- Bumped Java version to 11.
- Improved documentation.
----------, Sep 26, 2018

The following buttons where added:
  • ChatButton
  • CommandButton
  • TeleportButton
  • PluginMessageButton
Enjoy!
----------, Sep 12, 2018

Title explains it all
----------, Sep 4, 2018

Fix so that GuiListener#registerGui now returns the right value.
----------, Sep 3, 2018

This update fixes a bug that caused inventory gui holders to always be strongly referenced by the gui listener, preventing them from being garbage collected.
----------, Sep 3, 2018

While testing this plugin, I encountered this bug: https://hub.spigotmc.org/jira/browse/SPIGOT-4274.

This update works around the issue and prepares for the future bukkit updates where custom inventory holders will likely be deprecated. Sadly, this update is a small breaking change for plugins that shade GuiLib. The GuiListener now uses the singleton pattern so that GuiInventoryHolders without a specified listener default to the single instance listener.
----------, Sep 2, 2018

Yep that's right. GuiLib now provides a Java 9 module.
Example usage:
Code (Java):
module my. domain. myplugin {
 
    requires org. bukkit ; //Bukkit's module
    requires xyz. janboerman. guilib ; //GuiLib's module

    opens my. domain. rootpackage ; //so that bukkit's pluginloader can create an instance of your main class
 
}
This means that the CachedSupplier in the util package is no longer accessible as it was not part of the api.
Additionally some deprecrated APIs that were marked for removal in version 1.4.x have been removed.
----------, Aug 15, 2018

Fixes a dependency issue that occured when plugins that depend on GuiLib load on STARTUP, while GuiLib itself loaded on POST_WORLD.
----------, Aug 7, 2018

Generalizes PermissionButton.
----------, Jul 24, 2018

Resource Information
Author:
----------
Total Downloads: 3,883
First Release: Jul 24, 2018
Last Update: Oct 14, 2023
Category: ---------------
All-Time Rating:
1 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings