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_percent
operation 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_percent
modifiers for a stat are added together before multiplying the stat (additive multiplier)
- The
multiply
operation directly multiplies the stat level by the value- For example, a modifier with value 2 doubles the stat level
- Each
multiply
modifier is applied separately (multiplicative modifier)
- All existing modifiers use the
add
operation, which is the basic addition to the stat level- All
add
modifiers are applied before anyadd_percent
ormultiply
modifiers
- 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
operation
argument 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
duration
argument 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
pauseOffline
argument 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
, orstat
message
- 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_level
type 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
permission
type requires the player to have a specific permission node. Keys:permission
- The permission node required
- The
excluded_world
type 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
stat
type 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_protection
in config.yml to true (false by default)
- Enable by setting
- Add
speed_reduction
option to Stun ability - Add translatable messages for command descriptions and update notification
- Add
item_model
support in menu and loot items - Add
percent_format
andcurrent_xp_format
options to skills menu - Add
xp_format
option to sources menu - Add
format
option 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