BananaInventoryAPI
What this is:
This API provides a basic framework for creating complex inventory menus and more. It is very easy to use and supports all the versions back to 1.5.2. The API itself does not provide any functionality by itself.
How this works:
The API itself is split up into several components. It includes the custom inventory, inventory components, content panes, and action items.
The Custom Inventory:
This is the top level object you will use to manage each inventory. It consists of inventory components, which include buttons and panels. It also has handy methods that can auto-sort the panels and provide detailed information about an inventory click event.
The Inventory Components:
Inventory components are divided into two categories: button components and inventory panels. Buttons contain a single button item, and take up exactly one slot. Inventory panels are re-sizable containers that hold content panes. They do not contain any actual items themselves.
Content Panes:
Content panes are also separated into two categories: action item panes and storage panes. Both are very similar, but action item panes hold action items, where as storage panes hold actual items. Content panes are hide-able and contain items. They automatically resize themselves to fit within the inventory panel they are placed in. Content panes can also have custom sorters, to organize the items in a particular fashion.
Action Items:
Action items and button items are items that hold a list of actions, an action intention, and an actual item. You can use these to execute methods based on what their actions are. They are also used in turning pages of a paged object.
Sounds cool. So how do I use this?
If you are a developer, download the jar and import it as an external jar into your project. If you are a server owner, install this like a regular plugin, but only if you have a plugin that depends on this.
For those of you who want more:
BananaInventoryAPI is built around interfaces and abstract classes, so it's perfectly possible and quite easy to create your own custom inventories, panels, panes, and sorters. Each element has its own interface/abstract class you can inherit/extend and you can play around with the different options it provides.
Bugs? Issues? Changes you want? PM me here and I'll see what I can do.
Some plugins that use this API: