Ryan's FAQ


#1

I’m compiling a list of frequently answered questions that I’d like to either port to the docs at some point, or make changes to Sponge to be less surprising. If anyone has any ideas on additional questions let me know.

Some of these I have answers to, but require some effort to research and compile a detailed answer, so I’ll be delaying creating the answers until I have more time.

Q. Where do plugins go, mod folder or plugin folder?
Q. How do I share a lobby between modded servers on different versions?
Q. Why can’t my players use /help?
Q. What Sponge version should I use?
Q. What Sponge API version plugins do I look for, for version x?
Q. Does anyone know why custom data doesn’t save on restart?
A. Override toContainer in your data manipulator, remember to call super or add the data content version.


#2

Not sure how to word this into a question, but issue reporting - both for Sponge and other plugins. I (thankfully) haven’t had too many issues with this, but having information for both where to go and what to include in said issue would be nice.


#3

Another common question I see is:
Q. Can I run Bukkit Plugins on Sponge?


#4

That one is already addressed in the Sponge Docs, and was in the FAQ before they ever existed. It’s the 7th question down on https://docs.spongepowered.org/stable/en/about/faq.html.

Answering Q1, It makes a lot of sense to just put plugins in the mods folder when using SpongeVanilla, as there’s no confusion with Forge mods. On the other hand, when using SpongeForge, the plugins folder inside mods allows partitioning between the two sets, and I don’t have to figure out which is which. On the gripping hand, swapping between implementations is easier to manage if they are in separate folders.


#6

I think I saw talk somewhere that premium plugins in itself is not forbidden, however they are not to be hosted or explicitly provided on the sponge forums/ ore etc. Paid Plugins


#8

The conversation you have pointed out was from a little over a month since SpongeAPI was first created.

The team has evolved, and opinions changed.

You will not be finding Premium plugins for Sponge outside of commissioned plugins. We of course can’t control what others do, and our license doesn’t forbid commercial use or linking of commercial use, so of course resources outside of SpongePowered can’t be controlled, it’s just common sense.

But you wouldn’t want to be caught doing it if you want to remain in the good graces of the individual team members.

We however do endorse that people be allowed to be paid for their time if developing something custom, we just ask that aside from our sub-forum for devs wanted / developers listing their services, that everything to do with payments / settlements / contact happen in private. As we do not want to deal with the fallout, do not want to provide a medium for drama to foster, and believe that outside people recommending peoples services, that visible discourse of the details would cause trouble.


#9

Q. Is Minecraft single threaded?

A.

Sponge is NOT single threaded. Neither is Minecraft.

However, the main game loop of Minecraft, like many many games IS single threaded.

Our cause tracking relies on a lot of state tracking that is added that mods have no idea exists.

This causes us to have a hard dependency on mods calling things in the correct threads, where as Vanilla Minecraft often only has very few or subtle bugs in this situation, so mods have been previously getting away with it, where as the base game never calls these methods from another thread, or synchronizes (for performance, as it was never designed to be multi-threaded)

We also add debugging and hard checks that COMPLAIN VERY LOUDLY when things are called from the wrong threads, this is because of the major yet subtle issues that it can cause, that wouldn’t be obvious otherwise. Calling out this behaviour in the logs saves us debugging time, and saves mod developers time from working out what is going wrong. This often gets mis-attributed as “Oh Sponge changes crap and makes it single threaded only” because (commonly) mod authors hadn’t encountered the subtle issues, or (rarely) had very carefully avoided them. (Which we can’t account for, it’s a core issue with core-modding that 2 core-mods will likely step on each others toes and can only be solved with careful negotiation)

So when you hear people say “Minecraft is single threaded” or “Sponge is single threaded” it’s a vast simplification of.

Never call things from the wrong threads without very careful thought or scheduling.
Do not optimize your Minecraft server hardware around multi-core performance, and optimize it around single core performance.
Run multiple Minecraft servers on the same physical hardware, as the amount of cores (non virtual) machines have these days is borderline ridiculous.
Minecraft and Sponge are NOT ‘single threaded’