SpongeAPI 4.1.0 is now officially released! While there have not been a great many changes, the implementation has seen a great many changes and improvements over the last few months. It is now recommended that developers target at least SpongeAPI 4.0.3 as 3.X has not received any implementation updates. As mentioned in the past, the next API release is targeting Minecraft 1.9 and as such, API 4.X is dubbed LTS. Both implementations will likewise remain in LTS for Minecraft 1.8.9, however previous versions of the API (including API 3.x) will NOT be receiving updates and fixes.
Are my API 4.0 plugins going to break?
NO! They will not! The beauty of the API is that as long as the major version has not changed, plugins written for that version will not break.
What changed?
A commit comparison between 4.0.0 and 4.1.0 can be seen here.
Asset.readLines and try-with-resources for copyToFile
Updates to slf4j-api
TextFormats are now ConfigSerializable
Add DataView#getCatalogType and introduce AbstractDataBuilder for unified version upgrading processes
Add Explosion#shouldDamageEntities
Add methods to create TextFormat
Add support for generating dummy instances of classes, changes all the default CatalogTypes available in catalogs to non-null objects (aids in IDE null checking)
Improved usability of Keys with cached hashing
Add CollectionUtils for copying maps.
Add World#spawnEntities for spawning a collection of Entity instances
Add BookView API, allows developers to present a Book GUI on clients without using a real ItemStack
Add Virtual Block Change API to send block changes to clients without affecting the server world
Add DataSerializer API for objects that are unable to implement DataSerializable, adds default support for UUIDs, Flow Math, and several other classes
Add BlockSnapshot.NONE for air blocks
Add AttackEntityEvent, a sister event to DamageEntityEvent specifically called before an Entity attacks another Entity and allows modifying the output of damage (separation of focuses for incoming damage versus outgoing damage)
Add DataHolder#tryOffer methods for developers who prefer throwing exceptions if Data is not supported
Add @Getter Event Filtering to allow filling parameters of event listeners with an automatic method caller
Add ArmorStandData, deprecates previous methods that were used in its place
Add methods to ChannelBuf for writing UTF strings, varints and byte arrays
World is now a MessageReceiver, add TextTemplate methods to ChatTypeMessageReceiver also adds WorldMessageChannel
Allow getting and setting Guardian beam targets
Add userOrSource to GenericArguments
Add Player#hasPlayedBefore
Add GameReloadEvent for when a plugin is requested to perform a soft reload of various things, notably to request a reload of any configurations possible. This is NOT a full plugin reload where the class path is reloaded. The implementation of this event in plugins is entirely up to the plugin developer.
Expose ItemStack equality methods
Add utility methods for retrieving all CatalogTypes registered by a plugin
Refactor Teleporter API, the previous API was never implemented, however plugins NEED to target the new API (API 4.1.0) to make use of it. There were many changes made to the implementation and API is now fully implemented.
Add Silent Data
We (the Sponge Team) hope that you enjoy this update and wish to continue updating the implementations for Minecraft 1.8.9 as any bugs are found.
####What about development for 1.9? I saw some commits and some issues about that…
1.9.4’s development is nearing stability, however the limited amount of testing performed by the few developers who have spent the most time with it are not able to guarantee that the implementations targeting 1.9.4 are bug free. SpongeVanilla and SpongeForge are now releasing builds for 1.9.4, however, please please please make backups before the server crashes them. Also, please note that bleeding is targeting API 5.0.0-SNAPSHOT, so plugins are likely to break if a specific part of the API they use was changed.
####Will the docs be updated? @Inscrutable and the SpongeDocs team already have been working on making the jump to 4.1.0, but have stated that they will stick with “whatever is the latest release”. That being said, they will be updating the docs soon.
Hi, this is a very good news ! But i have some troubles to do the update. Am I alone ?
I am using Minecraft Forge: forge-1.9.4-12.17.0.1954-installer.jar
And SpongeForge: spongeforge-1.9.4-1954-5.0.0-BETA-1398.jar
I got this error:
[18:57:17] [main/INFO] [mixin/]: Instancing error handler class org.spongepowered.mod.mixin.handler.MixinErrorHandler
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / Oh dear. Something went wrong and the server had to shut down! /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: /----------------------------------------------------------------------------------------------------------------------------------------/
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / A critical error was encountered while blending Sponge with Forge! /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / Possible causes are: /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / * An incompatible Forge “core mod” is present. Try removing other mods to /
[18:57:17] [main/INFO] [Sponge/]: / see if the problem goes away. /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / * You are using the wrong version of Minecraft Forge. You must use the /
[18:57:17] [main/INFO] [Sponge/]: / correct version of Forge when running Sponge, this version is for /
[18:57:17] [main/INFO] [Sponge/]: / 12.17.0.1954 (you are running 12.17.0.1954) /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / * An error exists in Sponge itself. Ensure you are running the latest version /
[18:57:17] [main/INFO] [Sponge/]: / of Sponge. /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / * Gremlins are invading your computer. Did you feed a Mogwai after midnight? /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: /----------------------------------------------------------------------------------------------------------------------------------------/
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / Technical details: /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: / Failed on class : net.minecraft.server.MinecraftServer /
[18:57:17] [main/INFO] [Sponge/]: / During phase : DEFAULT /
[18:57:17] [main/INFO] [Sponge/]: / Mixin : server.MixinMinecraftServer /
[18:57:17] [main/INFO] [Sponge/]: / Config : mixins.forge.core.json /
[18:57:17] [main/INFO] [Sponge/]: / Error Type : org.spongepowered.asm.mixin.transformer.InvalidMixinException /
[18:57:17] [main/INFO] [Sponge/]: / Caused by : Unknown /
[18:57:17] [main/INFO] [Sponge/]: / Message : Overwrite target “worldServerForDimension” was not located in target class net/minecraft/server/MinecraftServer /
[18:57:17] [main/INFO] [Sponge/]: //
[18:57:17] [main/INFO] [Sponge/]: /****/
When I installed the Sponge Forge server, I hade several 403 error on downloadings. Starting the installation again led to no error message.
I tried re-installing everything from scratch and I got the same error.
We will be developing Sponge for 1.10 in due course, however given the small size of the changes between 1.9 and 1.10, it makes sense for use to press on with 1.9 development. In order to begin work on 1.10 Implementations, we must first wait for MCP to be released for SpongeVanilla development, then of course wait for Forge 1.10 before we can begin work on SpongeForge.
In short, just have patience. We will be working towards the next Minecraft version in due course, but for now we are focusing our efforts on the current version.
I really hope it always does not take this long to update Sponge. I was speaking with someone a while back and it was on the topic of downgrading Sponge to 1.7.10. He said Sponge wants to stay with the latest versions and give support for them. No support for previous versions. If Sponge always takes this long it will fall. We have had 1.9.4 servers for a bit now and Sponge is at the low end of the stick right now.
I bet it is the API 5 release thought and with all of our lives in the way it will take a bit for each update.
This 1.9 update is not a normal update for us, there’s been a massive backend rewrite that we’re still bug testing and cleaning up. The initial time required to get SpongeVanilla up and running on 1.9 was a grand total of 4 days. Oh, don’t forget that we’re still tasked with implementing the API that has yet to be implemented! I mean, if you want to make an actual comparison as to what’s changed for the 1.9 update, the implementation is the largest change. We’re not likely to ever back port any version of Sponge to Minecraft 1.7.10 because of the massive rewrites it would require, from both an implementation perspective and an API perspective. All in all, the two builds are relatively stable, barring certain incompatibilities with certain mods, but if modding is not your thing, SV has bee pretty stable as mentioned above.
I see. You also had the API 5 to implement and 1.9 was a huge update. 1.10 is out now. Are you planning on releasing that soon after since it is a WAY smaller update?