It doesn’t make sense really, especially with the map provided in the info boxes, it is always dependent on another item to actually hook into minecraft, such as MCP which always breaks when the game updates, the same goes with glowstone. The game updates glowstone has to go through the development process to make it working with vX.X . So the only way to technically make it work across all versions is to have the unplanned injection straight into minecrafts code, which would break when minecraft updates because its coding would change for whatever worked in the past, such as adding blocks, or changing the gui around. as far as i can see this is impossible to have it always working because sponge would need to change to work with the new code, so someone explain how it would really work?
Sponge depends forge. So the big patch work is forge his job. Like you noticed about “mc versions”. Because forge doesn’t really change much across versions. Someone could patch sponge really easy over. I am pretty sure that a lot of older mc versions of sponge, will pop up maybe 3 days or later after the release.
This will never work without problems. Minecraft obfuscate his code, and even with the mappings available. The code could have structurally changed. What causes Sponge to crash minecraft.
To make this short: Its almost impossible to make a sponge jar that is fully compatible with all minecraft versions. And also if this would be made possible, you would end up downloading a huge jar that takes a lot of startup time.
The API should be consistent over all versions, as well as forge. Implementations will of course break.
The sponge API is compatible across many versions because it is an API only. It has no implementation. The implementation however is not compatible across versions and needs to be implemented for every version. By having the first/default implementation on forge, the amount of stuff that needs to change per version is limited because forge already abstracts that away.
So, Sponge API is version compatible, but the implementation is not. This means that you need the correct sponge version for the correct forge/mc version, but it also means that plugins do not require changes if they use the api only. This is similar as how it was in bukkit. Craftbukkit required updates per version, but bukkit did not.
Would this mean that developers may end up using the Forge implementation to access Forge internals much like devs used CraftBukkit for NMS?
What would be reasons though for that, because I can’t think of any right now?
Hopefully the developers can be trusted to release the API when it becomes mature instead of giving “snapshots” and bull because once you realize there is a mistake, then it won’t be so backwards compatible anymore.
Yup. And it’ll be just about necessary in the early days of Sponge. But as time goes on, the goal will be to add controls for everything possible and scrap the need to access any internals.
Sponge developers are going to have to be considerate then, especially if they plan to add a certain implementation support for additional features. The last thing we want is Sponge plugins requiring a certain implementation.
The Sponge implementations will obviously not be compatible across MC versions. You won’t be able to install Sponge for MC 1.8 on MC 1.9.
What will be compatible across MC versions though is the API itself (which doesnt have any functional code) and thus the plugins. So a plugin that was developed with Sponge for MC 1.8 will run on Sponge for MC 1.9 without any changes.
Downward compatibility may be an issue because of API features that may not be availeble in older versions, but upwards compatibility like i just explained will not be a problem.
[EDIT] I’ve been to stupid to spell words.
Look at pictures here and you’ll understand how it works