Status Update 8th May 2019


#1

With the release of the Minecraft 1.14 update, we will be refocusing our development efforts towards releasing Sponge for 1.14. This means that there will not be any release of Sponge for 1.13.

Thankfully, 1.14 is far more similar to 1.13 than 1.13 was compared to 1.12, which will make the update process significantly easier. Having discussed the situation with our fellow modding projects, it seems that most projects will be taking the same approach and focusing on updating to 1.14.

Of course 1.12.2 has remained incredibly popular with mod developers and will remain in Long Term Support as a result. Increasingly it appears that 1.12.2 will be the new 1.7.10, with most mods settling in for the long haul. As such we’ve been hard at work continuing to develop for the release (some of you might have noticed @gabizou’s big rewrite) along with continued bugfixes.

Dev Update:

We’ve been hard at work, both on our LTS branch for 1.12, SpongeAPI 7, and our upcoming branch for 1.14, SpongeAPI 8.

Minecraft 1.12.2 & SpongeAPI 7

As mentioned above, support for 1.12 is not going away soon. We have been spending a bit of time reworking parts of our phase tracker in an attempt to improve how our interactions with the game (and mods) work. While there are still some outstanding issues with our latest builds (thank you to everyone who has tried our latest builds and reported the issues that have arisen so far), we are determined to get to the bottom of this so Sponge, and your plugins, can work with the game and your Forge mods better than before.

Once this work is done, we will also be releasing SpongeAPI 7.2, capturing the minor updates to the API in an official release. Beyond this, we do not expect to release a further API update as we are now transitioning into a bug-fix only mode for our 1.12 builds.

Minecraft 1.13 1.14 & SpongeAPI 8

Many of you will have noticed by now that Minecraft 1.14 has been released. This means that we will be skipping over 1.13 entirely, and API 8 will target Minecraft 1.14. Don’t fret, however, because the Minecraft codebase hasn’t changed nearly as much between 1.13 and 1.14 as it did between 1.12 and 1.13 so a lot of work we’ve done is still valid.

As Minecraft has taken the time to clean up their code base, so have we. SpongeAPI 8 will be the biggest and best release since the beginnings of the Sponge project. Not only are we investigating how we expose the new features that Minecraft has to offer, but we also taking the chance to step back and break many parts of the API where there is a strong reason to do so. These include fixing systems that don’t work so well, updating old APIs that don’t allow us to exploit new updates to Minecraft very well, moving implementation details out of the API, and just fixing up bad namings.

We are currently working on the API on the api-8 branch while we wait for MCP (the tool we use that decompiles and provides names (mappings) for Minecraft methods so that they are easily readable by developers) to finish their update process. Some of the major changes that are already in, or will be added to, as part of API 8 are:

  • Simplification of the Data API is our “key” change – making the system a Key led process allowing us to remove hundreds of data manipulator classes from the API and greatly simplifying how you add custom data to objects in the game.
  • Replacing the Command API to integrate with Minecraft’s new command system in order enabling the rich client side experience.
  • Major changes to the entity AI API to support complex control of non-player entities.
  • The removal of most implementation that was in the API, such as commands and text.

Once MCP has completed their update process, we will start on the implementation of SpongeForge and SpongeVanilla. Some of this work has already been completed as we can port some of our 1.13 changes to 1.14 with no extra work. However, we are also going to take this opportunity to make changes to how we structure our implementation (separating API hooks from base game hooks in our Mixins, for example) to make it easier to debug issues and make contributing to Sponge easier for those who wish to start dipping their toes in!

You may be reading this and thinking that this is a lot of work and that we’ll never release Sponge for 1.14, rest assured that remains our goal and it is our ultimate priority to do so. With the big code changes that Minecraft has undergone over the past couple of releases, however, it is the right time for us to ensure that we have a system that is fit for purpose now, and in the future. We appreciate your patience as we work on this.

Remember, we have no ETA for this but we are keen to engage in dialogue with you as our users and plugin developers. You can always ask us about what we’re doing in #1dot14-updates in Discord and follow the api-8 branch on Github.

Branches on Github

A quick note about how we are going to name our development branches. The bleeding branches and the 1.13 branches should now be considered inactive. Starting with API 8, our branches will be named for the major version of the API that the API will be for, so for API, the branch will be api-8. This will not change when API 8 transitions to stable, at that point, we will cut the branch api-9. A similar naming scheme will follow for SpongeCommon/SpongeForge/SpongeVanilla. We will no longer use the “stable” moniker, as our implementations may have periods of being unstable between recommended builds.

For API 7, we will keep the stable-7 branch named as stable-7.

-@dualspiral

Ore Update:

Hey folks! Wanted to give everyone an update on some things we have brewing for Ore. Our planned changes will make things a bit less restrictive for the guidelines and a bit easier for people to get started with Ore. With that said here is some of the upcoming changes we have planned.

PGP Signing
A lot of people find this confusing and frustrating when getting started with Ore. We are all for improving security but the current implementation has little benefit for the frustrations it causes. Our plan is to remove PGP signing from Ore until we can put together something that adds to security and is easier for people.

Plugin Documentation
As it stands we currently require any and all submissions to have proper documentation included in the Ore listing. While on paper that sounds like a great idea we have realized with the aid of community feedback that people do not like having to write their documentation twice. We agree! That is tedious and not something we want to force anyone to do. We will be removing the requirement to put documentation directly on Ore. We do however ask that your documentation does not link to downloads located externally to Ore.

We will still require a description and link to documentation.

Metrics
Metrics. Everyone loves this topic! Just an update on this subject that we finalized our revision for metrics which can be found here: https://drive.google.com/open?id=16kbuFVtuKasrKLTNb6gIOc-BOEyWBnFa

Ore API V2
We will be releasing a draft for V2 of the Ore API in the near future and we’d love to receive the community’s feedback once it’s out. Stay tuned for upcoming posts on the topic.

There are a few more things but will be fairly minor in comparison to the above. Thanks everyone for your feedback thus far and I look forward to hearing more!

-@Grinch

Community Update:

In response to an influx of posts spruiking servers, we’ve created a new Server Advertising Category: https://forums.spongepowered.org/c/server-discussion/server-advertising
The usual rules apply, your server must be EULA-compliant and run an implementation of SpongeAPI (SpongeForge, SpongeVanilla, Lantern, etc). We reserve the right to remove listings at our discretion.


#4

Thank for the announcement, keep the hard work!


#5

Everything in this announcement is quite exciting and I can’t wait for 1.14 and Api-8 to come out!

Am also curious about the above quote; with the changes mentioned, will the custom key generation become less boilerplate and easier to setup? I feel many move away from registering their own data manipulators because of the previously stated reasons with the current api version.