[Abandoned] Lapis Commons: Unified toolkit for rapid Sponge plugin development

Note: LapisCommons is not actively maintained and deprecated. The Sponge API has become mature enough to contain almost all functionality LapisCommons once had. Please depend on the Sponge API instead.

These past few weeks have been a fantastic example of the community pulling together. I’ve never seen so many brilliant minds working towards the same goal. We’re even seeing plugin projects already underway!

It is in this environment that we’re proud to announce Lapis Commons. We’re a small group (5 developers as of this writing), building systems to ease the transition into Sponge and provide base services everyone can use. The project is completely open-source under the MIT license, and we welcome your advice, concerns, and contributions.

The key features of this toolkit are modular; if you’re not using a feature it will not cause server or memory load. We’ve also incorporated some very unusual performance innovations, and hope to provide more in the future.

We’re really proud to announce an official strategic partnership with the Pore team!

We’ve been fans since the beginning, and by working together we can make it even easier for servers to make a clean transition to Sponge. Welcome aboard!

The expected release feature set follows:


Lapis provides extremely fast set-theoretic permissions with group inheritance.


Lapis supports multiple accounts per player, accounts for non-player entities, credit accounts, and allows third-party economy plugins to step in and provide unique services at any level of the chain.


With Lapis you can use as much or as little of the command framework as you like. We have services to turn String tokens into typesafe objects, all the way up to annotation-based commands with overloading and automatic tab-completion.


Attach data to any object in the game. Configurable persistence providers for anything from flatfiles or json, to full-scale rdbms or odbms storage.


Annotation-based configuration gives you a no-hassle way to define a configuration class and automatically sync it to disk.


We’re targeting Lua with an eye towards providing JavaScript support down the road. Define custom commands which run through your Lua scripts!


Define long-running tasks which serialize their state and persist through restart.

We’re looking forward to seeing all the creations that our toolkit makes possible!

Website: http://lapis.blue/
Docs: http://docs.lapis.blue/
GitHub: http://git.io/lapis
IRC: #lapis on irc.esper.net

Contributing: Lapis Docs
API Draft: http://goo.gl/qjNG5m


Rapid development?! Rapid plugin development?!
Hell yes this seems great.

1 Like

Yup, this sounds very necessary. “Rapid plugin development” That sounds magical, please do!

This sounds exciting. I’ll be interested to see where this project goes in the future.

JavaDoc is now available:

API is under heavy development !

This seems awesome! Keep up the good work! :smile:

My own project Pore has officially merged with Lapis Blue. :smiley:


This sounds so awesome.

I think that the Lapis Blue project is an exact duplicate of Foundation. It would be cool if there is some sort of connection to both projects, because there are two exact same projects now. That would be really a waste of time for you and me, and the plugin compatibility is very, very messed up.

Sounds great, good luck! Had a look around your website and I think that the features you guys are creating are amazing, looking forward to Lapis commons!

I wouldn’t say that the Lapis Blue project is an exact duplicate, since the Foundation project itself provides more specific features like Server Management, User Management, World Manipulation, Jails.

I feel like the Foundation project should part with Economy, Permissions and Scripting because those things don’t really fit. Therefore, please don’t connect Lapis Blue and Foundation.

Actually, I don’t much care, because projects often do offer inspiration to each other, but I also don’t want people to get the wrong idea about the relationship and timing of events between Foundation and Lapis.

Lapis Commons was conceived by four programmers as a toolkit plugin, a sort of “Sponge Commons”, on EsperNet #spongedev, some time before Sept 19th (I don’t have exact records). At that time, if Foundation existed, it was as a user-facing re-envisioned Essentials. I discovered the Foundation project shortly after Lapis was founded, and was quite excited about the possibility of the two projects working together. I had a talk with one of the devs and cheerfully shared expertise on plugin dependencies and service registration (this was before we knew that Sponge has a built-in service manager).

Foundation team tells me today that a week ago, clearly the very moment after I offered the olive branch, they decided to become a toolkit plugin identical to Lapis. I find this suspicious and upsetting, but for the moment let’s assume good faith. The Lapis group is against all kinds of code duplication, so I respectfully ask you (Foundation) to honor your initial design and become the essential user-facing plugin. We still have every intention of supporting you in such an effort.

1 Like

@Falkreon will you be creating a forum for help with the plugins etc, like making a forum for commands where the community can share the commands they created? I think this is a great idea!

1 Like

This looks like it could be awesome. This seems like it could be the new Essentials - without all the useless tidbits.

Will definitely be keeping a lookout, this will probably be our go-to for 1.8 :smiley:

We currently have quite a bit of infrastructure in terms of documentation. We plan to keep discussion on the Sponge forums for now, but hopefully when the Sponge standard repository is created there will be enough features for discussion there.

A forum to post your own script commands? I love it! When the scripting comes online, that’s definitely a thing we could do

@Falkreon well then thats fantastic! cant wait till this finishes! Also with your homepage I think you should make it like slides, so the header would be slide 1, then your goal slide 2 and each plugin should have its own slide with its description and when you scroll it goes to like the slides, you get what I mean?

Carousels are typically a great way for people to not click on anything, as it turns out! http://shouldiuseacarousel.com/. I’m the main contributor the the static sites, and I don’t think that we need to do anything special, yet. It’s not the best use of our time. I will be adding more to the site eventually, though.

You completely missed the point of the site gratimax linked.

HAHA i get it now but i didnt actually mean carousels well the only part of the idea i have in my head is the sliding part which is related to carousels…