It's time for a major release, the first one since 2013. The reason for this is major changes in the project structure and removal of backwards compatibility.
For server owners:
ProtocolLib will no longer provide backwards compatibility. The released version will only support the latest minor version of Minecraft, so in this case it will only support 1.9.x. The reasoning behind this is two-fold:
First, it would have been a pain and required lots of extra code to maintain backwards compatibility with 1.7 and 1.8 due to the changes in 1.9.
Second, the public API remains relatively constant between updates, so as long as you're using the proper version of ProtocolLib for your server, plugins will work just fine.
The biggest change in 1.9 involves data watchers. Mojang added a few new data watcher related classes, most notably the data watcher object and the data watcher serializer. Watcher objects are generally created and registered in entity classes and store the item's index and serializer. Serializers serialize watcher values into the packet stream. What this means for developers is that now, in order to register a new object in a data watcher, you must specify a valid watcher object, and by extension, a serializer. Check the documentation for the WrappedDataWatcher and its subclasses here:
The API has been split off into its own module, ProtocolLib-API. Developers are encouraged to use it as the dependency. I plan to do more with the new project structure in the future.
Changes since 3.7:
- Added modifiers for ItemSlot, Sonds, Hands, SoundCategory, and MobEffects
- Added the ability to use user-created enums (See here)
- Full support for 1.9-1.9.4
- More DataWatcher improvements
- Fixed block data errors
- Fixed false update notifications with beta releases
- Fixed an issue with chat components