All versions
2.2.3
Release
QoLPlugin 2.2.37 months ago 23
Compatibility
Minecraft: Java Edition
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.x
Platforms
Bukkit
Paper
Spigot
Changes
Additions:
/runat <player|Console> <command>— Execute a command as another player with a one-time permission bypass (or as the server Console). Console always allowed; players require the new permission nodekelpylandia.runatto use in-game. Alias:/forcecmd/kit <subcommand>- Kit utils!- Added kits system with GUI and one-time / first-join kit support.
/recipecommand + GUI- Added a
/recipecommand that shows a GUI of the recipe, with pagination and tab-completion for recipe names.
- Added a
Changes / Bug fixes:
/enchantnow supports an optional[player]argument so console (and other senders) can enchant another player's held item remotely. Players may still omit the player to enchant themselves.- Tab-completion updated to suggest player names for the new
/enchant playerargument. - Reflection-based call to Paper's setMaximumRepairCost to avoid "Too Expensive!" blocking when using enchant overrides (falls back gracefully on Spigot).
- Tab-completion updated to suggest player names for the new
- Enchant override system improvements:
- Enchanted-book + enchanted-book combining now supported for the custom conflicting-enchant overrides (Infinity+Mending, Multishot+Piercing, Sharpness+Smite+Bane combos, sword enchants on tridents).
- Anvil repair cost calculation added, so overridden combinations show a cost and can be taken from the anvil.
- Fixed: Enchanted-book combining crash and incorrect behaviour
- Previously, the plugin treated enchanted books like ordinary items when computing merged enchants and costs (stored enchants live in EnchantmentStorageMeta). The compute/cost logic now correctly reads/writes stored enchants and calculates anvil cost for book combinations.
- Fixed: Anvil overrides showed a valid result, but the client couldn't take the product out / no price was shown
- Added proper repair-cost calculation and setting in the PrepareAnvilEvent handler; clients now see an XP-level cost and can take the result.
- Fixed:
/enchantis unusable from the console- Rewrote onCommand so console may target a player (or use Console-to-player flows), and added helpful usage/errors.
- Fixed:
/backportal tracking- Excluded NETHER_PORTAL, END_PORTAL, and END_GATEWAY from back-teleport tracking to avoid incorrect
/backlocations after portal travel.
- Excluded NETHER_PORTAL, END_PORTAL, and END_GATEWAY from back-teleport tracking to avoid incorrect
- Fixed: punishments.yml LocalDateTime YAML tag crash
- Serialisation now writes ISO-formatted timestamps; existing files are sanitised when loaded to strip harmful YAML tags.
- Fixed: duplicate vanish join/quit messages sent to DiscordSRV
- Adjusted event priorities so messages are suppressed before DiscordSRV receives them (avoids duplicate notifications).
- Misc bugfixes and polish
- Numerous smaller bugfixes across listeners, commands and formatting
Notes for server owners:
- The new
/runatcommand is powerful — it temporarily grants a player all permissions to make a single command succeed. Then it is revoked. By default, only the console can run it. If you want staff to use it in-game, grant themkelpylandia.runatcarefully. - If you run Paper, the plugin will attempt to lift the anvil maximum cost cap via reflection, so some custom anvil combinations won't be blocked by vanilla's "Too Expensive!" limit. On Spigot, the vanilla cap still applies.
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:KNfs5POB:xWqmUChx"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:KNfs5POB:xWqmUChx"
}

