MipaYrarbil - vNostalgia Double A - Update/Port

Preface
First of I’d like to express my gratitude to three groups of people. The Bukkit Dev Team, who put excellent work into an excellent server, The Spigot Dev Team who put excellent work into making an excellent server better. And finally, I would like to thank the Sponge Dev Team, and every member of the community who has made this new, legal, server and api possible.

About Me
I am by far the stupidest person you have ever met. But at the same time, one of the smartest. I suppose the best descriptor of this was when I was trying to implement custom YAML files with bukkit. For the life of me I could not figure out how to make a custom YAML file. So instead of giving up, I created a whole file configuration system to solve a very, very simple problem. So yeah, that’s me…

So what am I doing?
No doubt, Sponge is different from bukkit, from annotations instead of files, to registering events as objects, not implementations of listener, and a different config parser. Out of all the differences, the one I found most annoying was not having a singular plugin class that was extensible, like bukkit’s JavaPlugin. Without the utilities provided by that class, such as config and logger management, I feel as though my projects are a bit bare. So I decided I would begin the port of my central library on bukkit, MipaYrarbil. The port is both an update as well, that will be added features more sponge oriented. MipaYrarbil, now Version Nostalgia Double A, was a powerful API, and I plan to make it one again.

The Point
But now to the point, within MipaYrarbil, I have created a Plugin system that ‘mimics’ that of Bukkit. Currently only the “MipaPlugin” class exists, but at least it is extendable! And a concrete base for any plugin. It has 8 abstract methods, three for plugin information, and 5 for events. There is only one problem. @Subscribe and @Inject do not work when they are in the super class. For this I created a simple abstract class called BridgeClass that in just 17 lines can initialize the MipaPlugin properly.

Other Powerful Features
Mipa contains a full Java API, written by yours truly, with some simply File, Number, and String Utils, as well as the data saving/configuration Api mentioned earlier. However, one of the more powerful features is the player database, a flatfile database maintained by MipaYrarbil that allows any plugin to set and access data for any player, using my configuration API.

Planned Nostalgia Features

  • Listener
  • Command Executor
  • Conversation API

Planned Port Features

  • Inventory GUIs
  • Item Stack Builders, Other Builders
  • Block and World editors
  • World Generation API
  • Nice Modular Plugins

Planned Update Features

  • Allow MipaPlugins to be per world.
  • Scoreboard API
  • Other Stuff
  • WORLD DOMINATION MUWHAHA
  • If only I could figure out how to implement it…

Congratulations, if you did not just skim read down here, then you’ve read my entire post. Please leave a comment on what you think, and/or suggest a feature!

Downloads & Tutorials available soon!

UPDATE:

The website, forums, and beginning tutorials are complete! See here: https://sites.google.com/site/mipayrarbilnostalgiadoublea

1 Like

I don’t want to sound rude, in any way, but what is the point for making an API for an API? Is this to make life easier on developers? Or is it to make transitioning from bukkit to sponge easier?

All in all, I respect the work you have put into the bukkit version, and I hope others find this to be a useful tool. :smile:

1 Like

But…But…What’s wrong with the existing Scoreboard api? xD

2 Likes

@Aaron1011
I do not know what is wrong with the existing API, I’m yet to find that out. But nothing is perfect. :slight_smile:

@mmonkey
Both to make life easier, as well as the transition. The Bukkit version of MipaYrarbil came about when I realized that a lot of code I had written for specific plugins could be shared with other plugins, it was really just a grouping of stuff I found useful. Hopefully the sponge version of MipaYrarbil will be a bit less of a hodgepodge.

Many people have made similar frameworks for Bukkit in the past, this may not even be the first for Sponge, Often they are just for personal use for the developer maintaining multiple plugins as a shared code-base.

If you wan’t people to share and contribute to this rather then just use it for yourself and your server, you will need to provide decent support, documentation, and be willing to accept pull requests.

That said, it’s a great programming exercise and will likely save you time if you plan on making multiple plugins, and it will likely be a ton of extra effort in order to support others using it as well.

That said, since SpongeAPI isn’t set in stone (yet) anything that you really feel you need a framework for at this point in time is likely a feature that could be added to the API if it is useful for other people as well. But at the same time Sponge needs to be careful that they don’t have too much bulk that they need to keep updated.

Do you perhaps have an example with code? This might be something the sponge team can look at.

@ryantheleach
I plan to support PRs, and documentation, and I will offer as much help as I can. I am currently building a website with how-to’s on it, and when I get the guts to I’ll go through and write JavaDocs on all the methods and upload it to bitballoon.

and yes, I know many frameworks I’m making may not be needed, but there is still the chance they will:

  1. Not be implemented
  • Be better than the implementation (unlikely)
  • A system I prefer

And about the @Subscribe and @inject, basically, if you have those annotations in the superclass of your plugin class, they are not registered.

UPDATE:

The website, forums, and beginning tutorials are complete! See here: https://sites.google.com/site/mipayrarbilnostalgiadoublea