Alright, buckle up...
BodyHealth v3.0.0
New official addon:
LocationalArmorAddon (BodyHealth v3.0.0+, Minecraft v1.21.3+)
Added a %BodyPart% placeholder to the COMMAND and COMMAND_UNDO effects that translates into the BodyPart that caused the effect, so you can copy/paste the effect onto different parts
Added a new update checker that checks for updates on Modrinth, works with dev versions and prereleases, and formats update notifications a bit nicer
Added a new config option that allows you to choose whether to check for development versions and prereleases, or full releases only
Added permission overrides to the body-health and body-damage configuration sections (examples are added to your config)
Added a %bodyhealth_enabled% PAPI placeholder that returns true when BodyHealth is enabled for a player
Added more robust error logging for throwables and error logging for failing math expressions
Added new meta effects (DELAYED & REPEATING) to execute effects delayed and/or repeating
Improved the default effect config to still use all effects there are, but while actually making sense in a survival environment, so it can now be used without changes (check it out
here)
Improved MySQL and SQLite storage types to use HikariCP for extra performance and stability
Improved various methods to be thread safe when used by multiple plugins/addons at the same time
Improved debug logging to not only include the calling class, but now also the line of code
Improved various comments within the plugin's source code and its configuration file
Improved parsing of the body-damage section to warn users in case of invalid entries
Improved meta effects to allow you to chain them together
Fixed missing javadoc params in the BodyHealth and EffectHandler classes
Fixed en-us being set as the default language, despite the file being named en.yml
Fixed attribute modifiers being expected in one specific format, causing errors with other formats present
Updated the following wiki entries:
Setup Guide,
API Usage,
Addons
For Developers
Events
Added causing/underlying event to BodyHealthChangeEvent (retrieve with BodyHealthChangeEvent#getCause, can optionally be set via API)
Fixed health value in BodyHealthChangeEvent#setNewHealth being set as an int instead of double
Effects
Added methods that let you register your own BodyHealthEffects via the API or directly within an addon's main class (
docs)
API
Added way more methods to the BodyHealthAPI class to ensure you don't have to touch anything else in most cases (check it out
here)
Changed BodyHealthAPI#getInstance to BodyHealthAPI#getBodyHealthPlugin and BodyHealthAPI#reloadSystem to BodyHealthAPI#reloadBodyHealthPlugin
Changed BodyHealthAPI to be object based, retrievable with BodyHealthAPI#getInstance
Addons
Overhauled the AddonFileManager class, simplifying its use, adding javadoc comments and adding a new method that lets you update yaml configurations with
BodyHealth's config updater
Overhauled the AddonManager class, also simplifying it, adding javadoc comments and adding logging that's up to standard with the rest of the plugin
Added AddonDebug#logRaw for you to log something regardless of debug or dev mode being enabled
Improved addon debug methods to also include logging for throwables and the calling line of code
Fixed debug messages in the AddonManager class not logging enough information to tell what addon caused something
tl;dr:
This update includes a lot (and I mean A LOT) of things.
If you're a developer using the API and/or addon system, prepare for breaking changes and read at least the "For Developers" section.
Casual users should be fine, as the plugin's config is updated automatically.
Enjoy!