Tags
Creators
Details
Licensed GPL-3.0-only
Published 4 years ago
Updated last month
All versions
2.3.0
Release
2.3.0last year 684
Compatibility
Minecraft: Java Edition
1.21–1.21.5
1.20.x
Platforms
Paper
Purpur
Spigot
Changes
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_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
- 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
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:uDdZAVls:CP6O7niK"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:uDdZAVls:CP6O7niK"
}

