Introducing Flint!

A little over a year ago, I started a project called MGLib. MGLib was a library essentially designed to serve as a generic backend for Bukkit minigame plugins, making it easier for developers to make their own gamemodes without having to go through the tedium of writing all the arena, round, and player management code that needs to be there every single time. (Indeed, having a unified backend proved to be efficient; a basic spleef plugin could be written in ~8 KB of code.) My inspiration for the project was another plugin of mine called TTT, whose core engine was desparately in need of an update. The solution I arrived at was to separate it so it could be updated separately from the plugin's more unique features.

This was a decent solution, as I found, and made it easier to manage the project as a whole. Unfortunately, when I started MGLib, I had very little if any experience with API design, and I basically just created the easiest design to incorporate into TTT. This made it immensely difficult to build other plugins against it, as the library was cluttered, disorganized, and lacking in crucial features. I've attempted to make some amends to these weaknesses, but I'm quite limited in what I can do while maintaining backwards-compatibility for plugins built for previous versions (it is a publicly available library, after all).

Given the limits of MGLib, I've made the decision to halt development on it in favor of a new, better thought-out framework, called Flint. While based on MGLib, Flint will be built from the ground up with a much more intuitive and easier-to-use API. Furthermore, I intend to make this new project completely platform-independent, so that implementations may be written for any number of server APIs. My goal is to complete the API before June, and have a fully working implementation for Bukkit (and maybe Sponge) sometime during the summer.

Going back to MGLib: I intend to release a final update on April 4th, which will primarily focus on fixing small bugs and making the locale API a bit less terrible. After that, I'll place the code under a permanent freeze and start work on Flint.

Posted by Max Roncace on