Welcome to the official YAGL page
Yet Another GUI Library (YAGL for short) is a Java library created to generate and manage graphical user interfaces in game.
If you are a server admin, I suggest you read the documentation to learn how to properly configure and change default values.
If you are a developer, YAGL is composed of three main modules:
- wrappers, a module that contains common Minecraft objects like enchantments, sounds, particles. It offers the capability of saving and loading them in a nice format for the end user;
- item, a module to generate and customize items and even apply textures to them;
- gui, the core module, that displays the actual interfaces to players.
Each one of them is made of three submodules: base (the core function of the module), serializer (saving and loading capabilities of the module) and bukkit (an implementation of the module for Bukkit plugins).
They can all be imported separately or together, following one of the three common methods:
- Gradle (preferred):
repositories { maven { url = 'https://repo.fulminazzo.it/releases' } } dependencies { implementation 'it.fulminazzo:yagl:latest' }
- Maven (alternative):
<repository> <id>fulminazzo</id> <url>https://repo.fulminazzo.it/releases</url> </repository>
<dependency> <groupId>it.fulminazzo</groupId> <artifact>yagl</artifact> <version>LATEST</version> </dependency>
- Manual (discouraged): download the JAR file from the latest release and import it using your IDE.
For more information, check the wiki.
Wait, so in 2024 you wrote another GUI library, totally ignoring all the better options available? You are not that smart, are you?
When YAGL was nothing more than a simple thought, it had many goals:
- it had to be platform independent, meaning that it could potentially be used by even other platforms to implement their own versions (check Roadmap for more);
- it had to be cross-compatible among older Minecraft versions, specifically from 1.8. Many may argue that such a version is so obsolete that it should not even be distributed anymore, and I totally agree with that. However, while working in the Minecraft industry for a long time, I noticed that many still require the retro-compatibility option, that is why YAGL is tested on every Minecraft version from 1.8;
- it had to create a fast, easy and scalable system for developers to create custom items and guis, without the overhead created by Bukkit methods like ItemMeta.
During the production, YAGL expanded even more, and right now is not just a GUI library: it took its idea of independence and extended to many aspects of Minecraft, allowing independent serializing of particles, sounds, enchantments, items, guis and more!
However, its development is not over yet.
Because of its incredible modularity, YAGL can be used for more projects related to Minecraft, like Fabric and Forge. As of right now, they are not planned, but there is possibility in the future.
While it being such a huge project, YAGL can still be expanded a lot. These are some of the pending features that are planned for the future:
- possibility to serialize data to different file formats like JSON, XML, properties. Completed using the Configurations library;
- add support for PlaceholderAPI in variable replacements;
- a special
GUIContent
that allows animated items; - a special
GUIContent
that allows items which can be toggled based on user click; - online web editor to customize and visualize data in real time;