The previous layout and class hierarchy of the skeleton API defined
variances of the skeleton, such as the wither skeleton or the stray, as
child types of the normal skeleton variance, which is technically
incorrect, yet did not produce any specific issue as the normal skeleton
variance did not have any unique logic.
With the introduction of powdered snow in the 1.17 update, the normal
skeleton variance now has unique logic, specifically the conversion to
a stay when stuck inside powdered snow, which cannot be represented in
the current API layout due to the prior mentioned hierarchy.
This commit introduces the AbstractSkeleton interface, which follows the
concept of other abstract interfaces like AbstractArrow and serves as a
common parent to the existing skeleton variances. Furthermore this
commit introduces the previously mentioned stray conversion to the
normal skeleton variance.
This commit does not break ABI yet breaks backwards compatibility due to
the mentioned hierarchy changes. Plugins that previously used the
Skelton interface to compute whether or not an entity is skeleton-like
through instanceOf checks will now only match the normal skeleton variance
instead of any skeleton-like entity.
Example plugin.yml usage:
```
libraries:
- com.squareup.okhttp3:okhttp:4.9.0
```
Libraries will only be accessible to plugins and their transitive depends, allowing for multiple versions of the same library to be used by different plugins.
This feature is modeled on the parallel BungeeCord feature and intends to offer the same behaviour.
Although this is a preview feature, major changes to behaviour are not expected at this point.
With the exception of the issues described in SPIGOT-6419 it is not expected that this feature alters classloading behaviour, although some changes may be unavoidable.