The QuartzLib (formerly zLib) is a helper library for Bukkit plugins development, providing useful tools for small and big tasks, to fill the gaps of the Bukkit API.
- Native Minecraft Version:
- Tested Minecraft Versions:
- Source Code:
- ProkopyL, 6infinity8, Vlammar
- Languages Supported:
- N/A, but there's a internationalization API so your plugins can support langages easily
This is a tool for developers.
We, the zDevelopers, used to add tools to do things not easily possible with the Bukkit API in every plugin. One day, a year and a half ago, we decided to assemble these tools in a single project: QuartzLib was born.
Now, it's pretty stable and documented, and we will soon publish the 1.0, first officially stable, version.
One goal of the QuartzLib was to simplify our developer work, but without annoying users: using it does not force your users to install a separate zLib plugin. Using the power of Maven Shading, the QuartzLib is included right into your plugin. The small downside is that the final JAR is a bit larger, but that's not a real problem, and only the needed parts of the API are included in your final JAR.
The QuartzLib is split into multiple components. As for now, you'll have inside:
As you can see, by adding and adding things, that's a lot of tools we bundled there. We're using it for all our plugins, and now we publish it here so you can use it too.
- a component-based system to isolate parts of your plugin (and QuartzLib components);
- a configuration component, to easily parse and retrieve configuration in a single line;
- a complete commands component, with help generation, useful shortcuts and simple usage (unlike the Bukkit API);
- a component to manage GUIs waaay easier than before, using simple classes, with a simple system to make paginated GUIs if you want to display a collection, and sign GUIs, to ask for text;
- a scoreboard system to build scoreboards with custom lines in minutes, without bothering with lines updates and others: automatically builds the scoreboard from a list of lines (in the right order!), without registering it into the Bukkit scoreboard system (sent with packets, can be asynchronous and auto updated);
- an internationalization component, supporting GetText, YAML and Properties format for languages, and with pluralization support and client language detection;
- a worker component to execute long tasks in other threads and execute a callback when finished;
- a NBT component to manipulate NBT data;
- an attribute component to manipulate attributes on items;
- a rawtext component to create tellraw strings (JSON) with a nice builder pattern;
- a lot of tools, including:
- message sender (including chat messages and action bar);
- crafting recipes generator;
- dual-wielding management tool, compatible with versions without dual-wielding;
- future event handlers, to catch event from new Bukkit version while still being compatible with old ones;
- item utils, with an ItemStack builder (using builder pattern), a glow effect applier, and a lot of other item-related utilities;
- a tool to generate banners with letters in them, in every letters and numbers, with the colors and backgrounds you want;
- a few shortcuts like RunTask.nextTick(Runnable) and others;
- a titles sender;
- a debug infos limiter;
- an UUID fetcher, to retrieve UUIDs from Mojang (one UUID or a batch of them);
- a tool to easily create a paginated view in the chat (e.g. for the result of a command with lots of lines), including dynamic links to previous and next pages;
- some tools to manipulate reflection and NMS...
I wrote a few tutorials on how to use it, but a lot are missing, as I don't have a lot of time for this. This said, we have a full JavaDoc, enough for the majority of tools available. There is also a two-minutes installation tutorial (if you are using Maven).
There's also a demo plugin, introducing a toaster into your server, with workers, GUIs, sidebars scoreboards...
QuartzLib is completely open source, published under the CeCILL-B license (BSD-like in French law).
Plugins using zLib