I would consider the main feature I build plugins around is potentially complex configs. In fact, the reason I wrote my first plugin was because I wanted to offer more mob drop possibilities than any current plugin did.

Finding the right balance between simple-but-limited and complex-but-overwhelming is something I struggle with daily, and spend most of my time designing and rejecting concepts for configs. Sometimes the internal code went to extraordinary lengths to keep things consistent for the users. Other times lengthy explanations and config generator apps were necessary and even then it could never be called easy.

For my latest plugin I wanted to make complex configs an extension of the simple ones, so for example instructing the plugin to do ten things looks the same as telling it to do one, only ten times as long. Requiring users to use different syntax when they want to branch out and do something more involved is one of my biggest annoyances with YAML.

The latest plugin is an extension/rewrite of Mobs, bringing it up to date and simplifying the config to make it more accessible and more in line with plugins I’ve written since Mobs was released. The basic concept is still the same though – mobs in Minecraft do things (they die, spawn, attack players, etc.) which raise events the plugin reacts to. While it’s logical that the reactions centre around the mob involved in the event, it’s also possible to perform arbitrary actions. For example, it’s possible to kill a random player every time an Enderman spawns, if you like.

I’ve also fleshed out a concept I added to Mobs but never really developed, which was the ability to set arbitrary values and check for them later.  For example, you could increment a value every time a Creeper was killed, and award the player who killed the 20th Creeper with something special.  Currently this concept has been expanded to allow both per-event values and global values, and these values are also able to be used in logs, messages, item lore, etc. Additionally, it’s now possible to define groups of mobs or locations to be used as targets, again both per event and globally.

The rewrite is progressing happily but various things conspire to take up my already limited free time!