PSA: SpongeAPI 4.0 and what it means for YOU!

We’re making the release of SpongeAPI 4.0.1 after two months of development additions and minor breakages. Many of these breakages have been made for better quality of life adjustments. For those who are still developing against SpongeAPI 3.1-SNAPSHOT, we’ll also be making a small release of 3.1.0. Any further additions to the API will be made against 4.1-SNAPSHOT.

###What version of Minecraft is this for?
4.0.0 is targeted for Minecraft 1.8.9. As previously mentioned, Sponge does not back port the API for previous versions of Minecraft. Minecraft 1.8.0 had quite a few security bugs that have been fixed since and overall culminate in 1.8.9.

###Will there be bug fixes released for 3.1.0?
Unfortunately, as most of the implementation is already moving forward, backwards incompatible bug fixes will only target their specified versions, be it 4.0.0 or 4.0.1 etc. Any minor bug fixes that can be made for 3.1.0 may be made in the implementations, however we will highly advise you to move towards a 4.x compatible implementation version.

###How many plugins will be broken with this update?
Not a great many. The few API breakages we’ve made were minor and a simple recompile can be achieved. Some plugins that utilize Cause for example may break. A full changelog can be viewed further down.

###Is 4.x the last update for Minecraft 1.8.9?
At this time, it is not determined whether 4.x will be the last version for 1.8.9. As it stands, it is not guaranteed that 1.9’s branch will be targeting API 5.x as there can be breaking changes necessary during 4.x’s lifetime before 1.9 is actually stable.

What’s the full changeling?

A rough changelog of 4.0.0’s release is as follows:

  • New DataFormat API
  • Minor changes in DisplayName related Data
  • Add ProfileProperty API
  • Refactor abstract implementations of DataManipulators
  • Add PitchModulation for Sound API
  • Change inventory opening/closing to Players only
  • Require a Cause when opening/closing inventories
  • Expose head rotations
  • Add ChatType to MessageChannel
  • TargetedLocation uses a Vector3d instead of Location
  • PopulateChunkEvent.Post no longer includes populated transactions, use the World Gen API to modify these sort of things
  • Switch using ListenableFuture to CompletableFuture
  • Add Plugin Annotation Processor for File metadata generation
  • Add TextTemplate API
  • MessageEvent changes in relation to TextTemplates
  • Change RespawnLocationData to use new RespawnLocation which bundles a boolean value for forced locations
  • Refactor TabList API
  • Add AssetManager for managing assets
  • Improve Pagination API
  • Clean up Economy Account creation
  • Add ItemStackGenerator, TradeOfferGenerator, and TradeOfferListMutator API, modify TradeOffers to use ItemStackSnapshots
  • Ues DyeableData for all colored blocks (wool, clay, carpet, glass)
  • Refactor SpawnCause for proper implementation, provides abstract SpawnCauses for plugin extension
  • Same treatment to HealingSource

Note: SpongeAPI 4.0.0 has an incorrect dependency that 4.0.1 has resolved. If a plugin developer wishes to use the release version of the API, please use 4.0.1 at the least.

9 Likes

Why 4.0.0 is 42% complete in GitHub milestones? Or it’s not a release yet?

Quick recompile they said…

Not that its really any trouble, great work! I’m quite happy that most of these changes have been made! Just, gg package changes, gg.

I guess the reason is that SpongePowered team is focusing on Minecraft 1.9.