New Features
- Add loot requirements to tables, pools, and loot
- The
requirements
option can be set on the loot table, a pool, or loot entry - Requirements accept the already available Block Requirements types
- The
- The following new requirement types have been added
world
,biome
,region
,item
, andenchantment
- 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
world
type requires the player to be in the specified world. Keys:world
- The name of the world the player is required to be in
- The
biome
type requires the player to be in the specified biome. Keys:biome
- The name of the biome the player is required to be in
- The
region
type requires the player to be in the specified WorldGuard region. Keys:region
- The name of the WorldGuard region the player is required to be in
- The
item
type requires the player to hold a specific item. Keys:item
- The material name of the item the player is required to hold
- The
enchantment
type requires the player to have a specific enchantment on their held item. Keys:enchantment
- The name of the enchantment to add a requirement forlevel
- The required enchantment level, either singular or a min-max (optional)- Examples of valid levels are
1
and1-3
- Add new options and tags to customize Treecapitator
- Add
trunks
tag to the Foraging sources file to configure which sources can activate Treecapitator - Add
treecapitator_applicable
tag to the Foraging sources file to configure which sources are broken by Treecapitator - Add
max_blocks
option to block sources to set the max number of blocks Treecapitator can break for this trunk type
- Add
- Add experimental config options
- Experimental options are not included in the config by default
- Each option you want to enable must be manually added in an
experimental
section - Add experimental option
experimental.optimize_leaderboard_updating
- Whether to enable optimized fetching of user data from the SQL database for leaderboard updates. When enabled, only users updated in the database since the last leaderboard update will be fetched after the initial load.
Bug Fixes
- Fix Nexo hook
API Changes
- Add SkillsUser#sendAbiltyMessage
New Features
- Add 1.21.6/1.21.7 support
- Add chance-based enchantments to loot
- An element in an
enchantments
list can also now be a mapping instead of a string - This mapping has the following keys:
name
- The name of the enchantmentlevel
- The level of the enchantment, supports rangeschance
- The chance that this enchantment is added to the item, from 0-1 (defaults to 1)
- The existing string enchantment format of
unbreaking 3
andunbreaking 1-3
still works
- An element in an
- Add configurable damaged loot
- The
damage
option can be set on an item loot entry to set the ratio of total durability that should be removed from the given item- For example, an item with
damage: 0.4
will have 40% less durability than max, or be at 60% of total durability
- For example, an item with
- A random amount of damage can be assigned using the
damage.min
anddamage.max
options, which will select a random damage ratio between the values every time the loot is dropped
- The
- Add skill addlevel command to add to a player's skill level
- Syntax:
/skills skill addlevel <player> <skill> <level>
- Syntax:
- Add income placeholder to source template in sources menu
- Add option to subtract a percentage of skill XP on death
- Add support for start/end wildcards in source tags
Changes
- Include item multiplier value in multiplier command
- Change BlockBreakEvent event priority for requirements to lowest
- Improve WorldEdit wand exclusion from Treecapitator
Bug Fixes
- Fix stat rewards applying when skill permission is negated
- Fix mana not resetting when entering disabled world
- Fix Repairing ability not adding repair cost
- Fix NPE if StatModifier stat is null
- Fix NPE in ArmorModifierListener
- Fix No Debuff ability not working for some effects
- Fix tooltips not hidden on some menu fill items
- Fix requirements being applied in disabled worlds
New Features
- Add auraskills.leaderboard.exclude permission to hide players from the leaderboard
- Setting this to online players requires a relog to take effect (leaderboard still takes time to update)
Bug Fixes
- Remove legacy item conversion to fix item stacking
- Fix stat info menu not opening with disabled traits
Breaking Changes
- The plugin now requires at least Java 21
- Support for Minecraft 1.17-1.19 has been dropped
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
- Update Polish, Chinese Simplified, and German messages
- 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
Changes
- Update French, Russian, and Brazilian Portuguese messages
Bug Fixes
- Fix Jumper and Runner abilities applying to the wrong skill
- Fix error when parsing some damage source cause values
- Fix idle action bar message not updating on reload
- Fix skull profile missing error when opening leaderboard menu
- Update stats on join on the main thread to fix errors
API Changes
- Add api methods to load and save offline users
- Use UserManager#loadUser to load a user into memory
- Use SkillsUser#save to save the user to storage asynchronously
New Features
- Add 1.21.4 support
- Add pale garden blocks to Foraging sources
- Add support for external items anywhere that accepts an item key
Changes
- Change MythicDamageEvent priority from high to normal
- Support {color} placeholder in leveled_by component of stats menu
- Make anvil discount trait formula configurable in stats.yml
- Change update checker to use Modrinth with loader and version filters
Bug Fixes
- Fix slimes and groups of mobs attacking rapidly with no cooldown
- Fix hex colors not working in loot entry message
- Fix xp-gain and custom-loot WorldGuard flags with Fishing loot
- Fix offline player skins not working in leaderboard menu
- Fix double plus in lore when adding some trait modifiers
New Features
- Add more permission nodes with child permissions
- auraskills.* contains permissions for all commands
- auraskills.command.user contains permissions users have by default
- auraskills.skill.* contains permissions to use all skills
- auraskills.command.item.* contains permissions related to item modifier creation
- auraskills.command.armor.* contains permissions related to armor modifier creation
- auraskills.command.admin contains permissions for all admin/op commands
Changes
- Respect cancelled drops when applying block luck
- Only show loaded skills in profile command
- Update Chinese Simplified, Chinese Traditional, and Indonesian messages
Bug Fixes
- Fix health value must be between error when changing worlds
- Fix boss bar progress must be between error when max skill level
- Fix NPE when updating leaderboards on MySQL
API Changes
- SkillsUser#setSkillLevel will now refresh stats, permissions, rewards, and item modifiers
- Add setSkillLevel method with boolean parameter to control whether to refresh stats
- Add CustomManaAbilityBuilder#infoFormats to set the list of menu format names to use in the menu description
New Features
- Add new damage source options
- Add excluded_damager/excluded_damagers to prevent XP gain from specific entity types
- Add cooldown_ms to define a delay before XP can be gained again in milliseconds (200 by default)
- Add damagers option to define a list of valid damagers
- Add job selection cooldown option (jobs.selection.cooldown_sec)
Changes
- Update German, Polish, and Italian messages
- Make all region loading async
Bug Fixes
- Fix error loading menu on Spigot 1.21
- Fix typos in excavation loot file
- Implement error handling for global requirement material names
- Fix trait_experience_bonus placeholder not working
- Fix boss bar progress must be between error
New Features
- Add anti-AFK system for preventing AFK XP gain
- This is an optional feature that detects and blocks repetitive AFK skill XP gain, encouraging active play
- Must be manually enabled with the
anti_afk.enabled
option in the main config - There are 8 types of checks that can block AFK XP gain in the following skills: Farming, Foraging, Mining, Fishing, Excavation, Fighting, Archery, and Defense
- The checks work in one of three ways: detecting identical player coordinates, facing direction (pitch/yaw), or the entity being involved
- Checks are configured in the
anti_afk.checks
section- Specific checks can be toggled with the
enabled
option - The
min_count
option is the number of identical XP gain conditions in a row for the player to be blocked from gaining XP - The
max_distance
option for some checks is the threshold for which movement below that value is still considered identical
- Specific checks can be toggled with the
- Logging for failing anti-AFK checks can be enabled with the
anti_afk.logging_enabled
option- The
log_threshold
is an expression determining the count of identical conditions required for logging an event. The min_count variable can be used in this expression to reference the min_count in the checks section for a check type. - Logs will be sent to any online player with the auraskills.antiafk.notify permission (op by default)
- Logs are saved to storage can can be viewed for any player with the
/skills antiafk logs <player> [page] [perPage]
command (auraskills.command.antiafk.logs permission)
- The
- Important disclaimer: A player failing checks and being logged does not necessarily mean they are cheating or using a macro, as false positives can be common for legitmate players, especially if min_count is low. An example is a player using a mob farm manually can still trigger anti-AFK checks. Always check logged players manually before taking any action.
- Add entity loot for fishing loot tables
- The new entity loot type adds the ability to catch entity with fishing
- Defined by a loot entry with
type: entity
- The
entity
key defines the type of entity caught- Vanilla entities/mobs are defined by name (e.g.
entity: zombie
) - MythicMobs can be used with the
mythicmobs:
prefix (e.g.entity: mythicmobs:SkeletonKing
)
- Vanilla entities/mobs are defined by name (e.g.
- The
health
key overrides the entity max health attribute - The
damage
key overrides the entity attack damage attribute - The
level
key can be used to define the AuraMobs or MythicMobs level - The default vertical and horizontal velocities when caught can be overridden with
velocity.horizontal
andvelocity.vertical
- The keys
hand
,off_hand
,feet
,legs
,chest
, andhead
are used to define equipment on the spawned entity- The value is a mapping in the same item format as regular item loot (Using keys
material
,enchantments
, etc.)
- The value is a mapping in the same item format as regular item loot (Using keys
- Add boss bar animation using delay when upgrading progress
- This allows players to visually see the change in progress when a new boss bar is shown
- Can be toggled with the
boss_bar.animate_progress
option in the main config
- Add support for multiple commands on one loot entry
- Use a
commands
list of strings on a command loot entry instead ofcommand
- Use a
Changes
- Optimize leaderboard updating for SQL
- Optimize SQL user loading and saving
- A user is now loaded in a single statement with subqueries
- Saving key_values will now utilize batched statements
Bug Fixes
- Fix disabled abilities still showing in abilities menu
- Fix level up title not working in 1.20.5+
- Fix XP Convert giving extremely high experience values
- Fix boss bar income showing for jobs enabled without economy
API Changes
- Relocate and create Configurate API wrapper (breaking change)
- ConfigurationNode has been replaced with the ConfigNode wrapper class in api and api-bukkit
- Configurate is no longer included in the api module as a dependency
- Any plugins working with ConfigurationNode in the API will break and must be updated (such as using LootParser, creating custom source types, or ItemManager#parseItem)
- Updating is done by simply renaming ConfigurationNode mentions to ConfigNode, as most methods are copied over exactly
- This change was made to fix critical loading errors with plugins like Nova
- Add trait modifier methods to ItemManager
- Deprecate addModifier, getModifiers, and removeModifier to be replaced by addStatModifier, getStatModifiers, and removeStatModifier
- Add action bar methods to SkillsUser for sending and pausing action bars
New Features
- Add Oraxen support
- Oraxen note blocks defined in sources will now give XP properly
- Custom blocks can now be easily defined in sources by prefixing the
block
option of a block source withoraxen:
- For example,
block: oraxen:mythril_ore
will automatically register the block state from Oraxen without needing to manually define astate
- For example,
- Oraxen items can be directly used in any source
menu_item
option using a string key prefixed withoraxen:
- For example,
menu_item: oraxen:mythril
will use the exact item defined in Oraxen, including any NBT - This is defined as a string value directly on the
menu_item
key rather than the map section used for normal menu items
- For example,
- Custom loot from Oraxen blocks will drop extra items correctly with Luck traits like Mining Luck
- Add requirement.override_global option to main config
- If true, global requirements will be ignored if item-specific requirements are defined
- Add mana.cooldown_timer_period option to main config
- Increasing can help reduce lag caused by TimerCountdown for mana abilities
- Add sql.pool options to main config
- The new options maximum_pool_size, minimum_idle, connection_timeout, max_lifetime, and keepalive_time are used to configure the Hikari connection pool
- These should not be changed unless you have issues with connection stability and know what you are doing
Bug Fixes
- Fix power leaderboard not adding custom skills
- Fix leaderboard still showing for disabled skills
- Fix global requirements and world options not being updated on skills reload
- Fix roman placeholders with value 0 not working
- Fix ManaAbilityRefreshEvent being called invalidly
- Fix hp keep_full_on_increase not working sometimes
- Fix snow golem and mooshroom not giving XP in 1.20.5+
New Features
- Add jobs income batching options to reduce economy lag
- If jobs.income.batching.enabled is true, accumulated income will be given in an interval instead of immediately
- The interval_ms option controls the minimum delay between when money is given
- If display_individual is true, the boss bar will display the original individual income instead of batched
Changes
- Optimize checking for disabled sources using cache
Bug Fixes
- Fix XP duplication exploit with land claiming plugins
- Fix resethealth command not working on 1.21
- Fix modifier is already applied error with stun
- Fix NoSuchMethodError on 1.19.4
- Fix PlaceholderAPI not working in level up message
- Fix negative XP gain after negative multipliers
New Features
- Minecraft 1.21 support
- Add bogged and breeze to Fighting and Archery sources
- Add new action_bar options to main config
- format_last - If true, parsing of MiniMessage will happen after placeholders are replaced on each send. This makes MiniMessage gradients work at the cost of performance (false by default).
- update_async - If true, the idle action bar will be updated and sent asynchronously. This is an experimental option (false by default).
Changes
- The option modifier.auto_convert_from_legacy is now false by default
Bug Fixes
- Fix Lightning Blade attribute modifier not being removed
- Fix backup debug message spam
- Fix disabled traits not being fully disabled sometimes
- Fix hex colors not working in level up title and chat message
- Fix hex colors not working in action bars
New Features
- Add roman and int placeholders for abilities (thanks Erik)
%auraskills_[ability]_roman%
- Gets ability level as a Roman numeral%auraskills_[ability]_value_int%
- Gets ability value rounded to an integer%auraskills_[ability]_value_2_int%
- Gets secondary ability value rounded to an integer if it exists%auraskills_mability_[ability]_roman%
- Gets mana ability level as a Roman numeral%auraskills_mability_[ability]_value_int%
- Gets mana ability value rounded to an integer
- Add correct_over_max_level option to main config to prevent skill levels being over max level on join (false by default)
- Add shape option to menu fill items
- Available values are border, top_row, bottom_row, left_column, and right_column
Changes
- Revert unnecessary AdvancedEnchantments event ignores, fixing compatibility
- Update German and Chinese Simplified messages
Bug Fixes
- Fix split slimes and magma cubes not applying spawner_multiplier
- Fix double reloading on addStatModifier (thanks Erik)
- This fixes extra health resets with plugins like MMOItems
- Fix Charged Shot not applying damage bonus
- Fix NoSuchFieldError on older versions when using mana abilities
- Fix RoseStacker spawner mobs not working with spawner_multiplier
- Fix armor add command not accepting decimal values
- Fix level progression total page count sometimes being wrong
- Fix food level decreasing at full health with use_custom_delay true