Tags
Creators
Details
2
Compatibility
Changes
Compatibility
- Supports every Paper release from 1.21.11 to 1.21.26.2
- Compiled against
paper-api:1.21.11(Java 21,api-version: '1.21') - Added a new
checkLatestApiGradle task:- Recompiles the plugin against the latest Paper API (26.2)
- Runs automatically as part of
check - Detects API removals during development instead of at runtime
- Replaced deprecated string-based Bukkit APIs with Adventure Components:
ChatColorItemMeta#setDisplayNameBukkit.createInventory(..., String)InventoryView#getTitle()
- Materials are now resolved by name with automatic fallback and warning logging
- Verified on:
- Paper 1.21.11 (Build 132)
- Paper 1.21.26.2 (Build 84)
- LuckPerms 5.5.65
Configurable Commands & Permissions
- Command name, aliases, description and usage are now fully configurable
- All permission nodes are configurable, including their default value (
trueorop) - Commands are registered dynamically at runtime
- Command labels are automatically sanitized:
- Removes leading
/ - Removes invalid spaces and colons
- Normalizes casing
- Removes leading
- Aliases already owned by another plugin are skipped and logged instead of appearing broken
- Permission nodes are registered with Bukkit, allowing
default: trueto work correctly - Per-server permission nodes:
- Generated automatically from the server key
- Can be overridden individually
- Can be hidden or shown as locked
Bug Fixes
Menu & Interaction
- Fixed the menu opening twice because interact events fired for both hands
- Left-clicks no longer prevent normal block breaking while holding the selector
- Menu now uses an
InventoryHolderinstead of comparing inventory titles - Prevented players from:
- Taking menu items
- Dragging items
- Using number keys
- Swapping with the offhand
- Placing items into item frames
- Eating menu items
Selector Item
- Selector items are now identified using a
PersistentDataContainertag instead of their display name - Added a display-name fallback for backwards compatibility
- Fixed selector duplication after death and respawn
- Fixed null checks for
ItemMeta
Configuration
- Added startup validation for all configuration values
- Invalid configuration entries now generate detailed warnings:
- Unknown materials
- Invalid inventory sizes
- Invalid slots
- Duplicate server slots
- Configuration is now parsed once into an immutable snapshot instead of reading YAML on every event
Stability
- Fixed a
NullPointerExceptionwhen the command was missing fromplugin.yml - Fixed open menus remaining after plugin shutdown
- Fixed
unregisterOutgoingPluginChannel(this)unregistering every outgoing plugin channel instead of onlyBungeeCord - Removed the Guava (
ByteStreams) dependency for plugin messaging in favour of the Java standard library
Additions
- Fully customizable messages section
- Any message can be disabled by setting it to
"" - Supports:
- Legacy
&colour codes - MiniMessage
- Hex colours
- Legacy
- Added
prevent-connect-to-currentto prevent reconnecting players to the server they are already on - Added new selector item options:
enabledopen-onlockedforce-slotgive-on-joingive-on-respawn
- Added:
gui.fillergui.close-on-click
- Full backwards compatibility with v1 configurations:
- Missing values automatically fall back to defaults
gui.fill-borderis still supported- Configuration version mismatches are reported in the console
Notes
Changing
command.namerequires a full server restart. Running/selector reloadwill continue using the previous command label and will notify you in chat instead of pretending the change was applied.
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:em8DRVZA:I2G16GEZ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:em8DRVZA:I2G16GEZ"
}

