- Added new Dispatcher interface. A dispatcher can represent a Player, Entity, Block, or even the Server.
- Holders (e.g. Enchantment Levels, Talismans, EcoItems) are no longer held by Players, but by Dispatchers
- Chains / Effects are now triggered by Dispatchers
- Conditions are now checked against Dispatchers
- Triggers are now triggered by Dispatchers
For Developers:
- Deprecated most core API methods and replaced them with new Dispatcher-based methods: e.g. registerHolderProvider has been replaced with registerSpecificHolderProvider<T> and registerGenericHolderProvider
- Effect#onEnable and Effect#onDisable have had the player versions deprecated and replaced with new versions that take Dispatchers. Update your effects!
- Condition#isMet has had the player version deprecated and replaced with a new version that takes a Dispatcher
- All methods like Player#holders, Player#updateHolders, etc. have been deprecated and replaced with Dispatcher<*>#holders etc.
To convert between an Entity and a Dispatcher, just do Entity#toDispatcher - the core flow and most method names have remained the same.
Your existing Effects, Conditions, etc. will still work, however you should update them ASAP as the old methods will eventually be removed!