Tags
Creators
Details
All versions
1.2.3
Release
Staff+ 1.2.3last month 29
Compatibility
Minecraft: Java Edition
26.3
26.2
26.1.x
1.21.6–1.21.11
Platform
Velocity
Changes
[1.2.3] - 2026-09-25
Added
- Velocity Backend Command Forwarding:
- Implemented automatic transparent command forwarding (
velocity-forward-to-backend: true). If a staff member executes a moderation command (/tempban,/ban,/mute, etc.) on Velocity and lacks proxy-level permissions (e.g. LuckPerms and OPs are configured exclusively on backend Paper servers), Velocity automatically forwards the command down to their connected Paper server viaplayer.spoofChatInput(...)instead of dropping it with a "no permission" error. - Added
velocity-proxy-commands(default:true) inconfig.yml, allowing server administrators to optionally disable proxy command registration so backend Paper servers handle all moderation commands directly while Velocity focuses purely on gateway enforcement.
- Implemented automatic transparent command forwarding (
- Limbo Kick Prevention via
KickedFromServerEvent:- Subscribed to Velocity's
KickedFromServerEvent. When a player is explicitly kicked (/kick) or banned by staff on a backend server, Velocity intercepts the event and executesDisconnectPlayer.create(reason). - Completely eliminates the issue where kicked or banned players bounced into fallback or Limbo servers instead of being disconnected from the proxy network.
- Preserved normal server restart and shutdown routing ("Server closed"), which continues sending players to the lobby.
- Added
velocity-disconnect-on-kick(default:true) inconfig.yml.
- Subscribed to Velocity's
- Complete Alias Registration on Velocity:
- Registered all moderation command aliases with Velocity's
CommandManager:/ipban,/banip,/tempipban,/tempbanip,/unipban,/unbanip,/banleaderboard,/staffleaderboard,/bancheck,/staff+,/punishhistory, and/historylog.
- Registered all moderation command aliases with Velocity's
Fixed
- Velocity Asynchronous Event Race Condition:
- Refactored
onLoginandonPlayerChatlisteners inVelocityListenersto returnEventTaskwith continuations. Velocity now properly pauses event dispatch until database ban and mute queries complete, ensuring rulebreakers are reliably rejected at the gateway and muted players are blocked from chatting.
- Refactored
- Database Staff Hierarchy Weight Preservation:
- Updated
DatabaseManager.savePlayerSQL upsert logic to preserve existing hierarchy weights when incoming weight is 0 (weight = CASE WHEN VALUES(weight) > 0 THEN VALUES(weight) ELSE weight END). - Fixes an issue where staff logging in through the Velocity proxy had their hierarchy weight reset to 0 in the shared database.
- Updated
- Instant Online Target Resolution on Velocity:
- Added
resolveTargetUuidacross all punishment handlers inVelocityPunishCommand, immediately resolving online players viaplugin.getServer().getPlayer(...)before falling back to database lookups.
- Added
- Unit Testing:
- Added unit test cases for hierarchy weight preservation and Velocity configuration defaults in
DatabaseManagerTest.
- Added unit test cases for hierarchy weight preservation and Velocity configuration defaults in
Changed
- Bumped project version to
1.2.3across all subprojects, build scripts, plugin descriptors, and documentation.
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:72KSAFnn:Ai8L3JyR"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:72KSAFnn:Ai8L3JyR"
}

