Appearance
2.3
AuraSkills 2.3 adds new customization features for the stats and requirements systems. The new stat info menu shows players exactly how stat and trait levels are calculated, while percentage-based and temporary modifiers create new ways to use stats. Block requirements add a flexible way to restrict breaking blocks based on skills.
Breaking Changes
- The plugin now requires at least Java 21
- Drop support for Minecraft 1.18.x and 1.19.x
New Features
- Add 1.21.5 support
- Add stat_info menu
- This allows players to see exactly how their stat and trait levels are calculated
- Accessed by clicking any of the stat items (glass panes) in the stats menu (/stats)
- The menu is tab-based and shows stat modifiers by default. Trait modifiers can be viewed by clicking on the tab buttons on the right.
- Each tab shows any base value, value from skill rewards, and custom modifiers
- Add percentage-based stat and trait modifiers
- Modifiers now have an operation value that defines how they are applied
- The
add_percentoperation multiplies the stat level by 1+value/100- For example, a modifier with value 50 multiplies the stat by 1.5
- The values for all
add_percentmodifiers for a stat are added together before multiplying the stat (additive multiplier)
- The
multiplyoperation directly multiplies the stat level by the value- For example, a modifier with value 2 doubles the stat level
- Each
multiplymodifier is applied separately (multiplicative modifier)
- All existing modifiers use the
addoperation, which is the basic addition to the stat level- All
addmodifiers are applied before anyadd_percentormultiplymodifiers
- All
- The following existing commands have been modified to add an operation argument:
/skills modifier add <player> <stat> <name> <value> [operation] [silent] [stack]/skills trait add <player> <trait> <name> <value> [operation] [silent] [stack]/skills item modifier add <player> <stat> <value> [operation] [lore]/skills item trait add <player> <trait> <value> [operation] [lore]/skills armor modifier add <player> <stat> <value> [operation] [lore]/skills armor trait add <player> <trait> <value> [operation] [lore]- The
operationargument is optional and defaults toadd
- Add temporary modifiers
- Temporary modifiers are automatically removed after certain amount of time
- Use the following commands to add temporary stat and trait modifiers:
/skills modifier addtemp <player> <stat> <name> <value> <duration> [pauseOffline] [operation] [silent] [stack]/skills trait addtemp <player> <trait> <name> <value> <duration> [pauseOffline] [operation] [silent] [stack]- The
durationargument is in the format[years]y[months]mo[days]d[hours]h[minutes]m[seconds]s- Examples of valid durations are
5s,10m, and4d2m1s
- Examples of valid durations are
- The
pauseOfflineargument defines whether the remaining duration should stop counting down when the player is offline (defaults to false)
- Add block requirements
- Block requirements are customizable restrictions on breaking, placing, or harvesting blocks
- Requirements are defined in requirement.blocks.list in config.yml
- Each element in the list can have the following keys:
material- The name of the block to add requirements for (required)allow_break- Whether to ignore requirements on block break (defaults to false)allow_place- Whether to ignore requirements on block place (defaults to false)allow_harvest- Whether to ignore requirements on block harvest (defaults to false)- When none of the above allow options are defined, the block cannot be broken, placed, or harvested when requirements are not met
requirements- A map list of the requirement nodes for this block. Each element in the list can have the following keys:type- The type of requirement, which can beskill_level,permission,excluded_world, orstatmessage- The error message to send to the player when the requirement is not met. Supports MiniMessage and PlaceholderAPI (optional).- Each type has specific keys below that must be added to define type behavior. These keys are added in the same indent level as
type. - The
skill_leveltype requires the player to be at least a specific level in a skill. Keys:skill- The name of the skill to add a level requirement forlevel- The minimum skill level the player must be
- The
permissiontype requires the player to have a specific permission node. Keys:permission- The permission node required
- The
excluded_worldtype defines a list of worlds that will make the requirement fail if the player is in one of them. Keys:worlds- The list of worlds to not allow the player to be in
- The
stattype requires the player to be at least a specific stat level. Keys:stat- The name of the stat to add a level requirement forvalue- The minimum stat value that the player must be
- General options related to the block requirement system are in requirement.blocks:
enabled- Whether block requirements are checked at allbypass_in_creative_mode- Whether to ignore block requirements for players in creative mode (defaults to true)bypass_if_op- Whether to ignore block requirements for players that are op (defaults to false)
- Add addition protections against removing items from menus
- Enable by setting
menus.removal_protectionin config.yml to true (false by default)
- Enable by setting
- Add
speed_reductionoption to Stun ability - Add translatable messages for command descriptions and update notification
- Add
item_modelsupport in menu and loot items - Add
percent_formatandcurrent_xp_formatoptions to skills menu - Add
xp_formatoption to sources menu - Add
formatoption to stat reward to configure decimals - Add Nexo support
Changes
- Storing modifiers with SQL has been moved from the key_values table to a new modifiers table
- Existing modifiers will be migrated automatically
- A new schema_migrations table stores previously applied migrations
- Remove Oraxen support
Bug Fixes
- Fix default item options like glow being saved when updating files
- Fix errors when Anvil Discount is not loaded