1.2.3latestStaff+ 1.2.3Sep 25, 2026 [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. * Addedvelocity-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. Limbo Kick Prevention via `KickedFromServerEvent`*: * Subscribed to Velocity'sKickedFromServerEvent. 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. * Addedvelocity-disconnect-on-kick(default:true) inconfig.yml. Complete Alias Registration on Velocity*: * Registered all moderation command aliases with Velocity'sCommandManager:/ipban,/banip,/tempipban,/tempbanip,/unipban,/unbanip,/banleaderboard,/staffleaderboard,/bancheck,/staff+,/punishhistory, and/historylog.Fixed
Velocity Asynchronous Event Race Condition*: * RefactoredonLoginandonPlayerChatlisteners 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. Database Staff Hierarchy Weight Preservation*: * UpdatedDatabaseManager.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. Instant Online Target Resolution on Velocity*: * AddedresolveTargetUuidacross all punishment handlers inVelocityPunishCommand, immediately resolving online players viaplugin.getServer().getPlayer(...)before falling back to database lookups. Unit Testing*: * Added unit test cases for hierarchy weight preservation and Velocity configuration defaults inDatabaseManagerTest.Changed
* Bumped project version to1.2.3across all subprojects, build scripts, plugin descriptors, and documentation.1.2.2Staff+ 1.2.2Sep 17, 2026 [1.2.2] - 2026-09-17
Fixed
Database Driver Bundling & Connection Hardening*: * Shaded and relocated officialcom.mysql:mysql-connector-j:8.3.0andorg.mariadb.jdbc:mariadb-java-client:3.3.3across Paper and Velocity editions, fixingClassNotFoundException/No suitable driver foundon proxies and bare server environments. * Added native support forstorage-type: "mariadb"alongside"mysql"and"sqlite". * Added essential JDBC properties to connection pools:createDatabaseIfNotExist=true(preventsUnknown databaseerrors),allowPublicKeyRetrieval=true(fixes MySQL 8+ authentication),serverTimezone=UTC, andcharacterEncoding=utf8. * Implemented automated graceful fallback to local SQLite (database.db) with clear console warnings if a remote MySQL/MariaDB database cannot be reached, ensuring the plugin never disables itself and commands remain fully functional. * Dynamic database reconnection:/staff reloadnow automatically re-initializes and reconnects the database pool on both Paper and Velocity. Command Permissions & Operator Bypass*: * Added operator (isOp()) andstaff.adminbypass toDynamicCommandandStaffCommandon Paper, guaranteeing OP players have access to/bans,/banhistory,/staff reload, and all moderation utilities. * Added top-level permission declarations withdefault: opinpaper-plugin.ymland createdplugin.ymlfor complete compatibility with LuckPerms and Spigot-based permission managers. * Fixed command permission mapping on Velocity: alias commands (/banhistory,/banlist,/bancheck) now resolve to their canonical permission nodes (staff.bans,staff.checkban), andstaff.admingrants global access to all proxy moderation commands. Unit Testing*: * AddedDatabaseManagerTestunit test suite covering SQLite initialization, player records, and remote database fallback.Changed
* Bumped project version to1.2.2across all subprojects, build scripts, plugin descriptors, and documentation. ---1.2.1Staff+ 1.2.1Sep 14, 2026 [1.2.1] - 2026-09-14
Fixed
Bedrock / Geyser Classloader Isolation*: * DecoupledBedrockFormManagerinto a zero-dependency facade, eliminating compile-only Cumulus and Geyser/Floodgate imports from the class verification path. * Isolated Cumulus form creation and API calls into internalBedrockFormHandler,GeyserInvoker, andFloodgateInvokerclasses, classloaded strictly on-demand only whenGeyser-Spigotorfloodgateis enabled on the Paper server. * ResolvedNoClassDefFoundError: org/geysermc/cumulus/form/Formthat prevented/bans,/banhistory, and/bansleaderboardfrom opening on backend Paper servers operating without local Geyser or Floodgate plugins (e.g., proxy-only Geyser network architectures). * Backend Paper servers without Floodgate now gracefully fall back to native 54-slot Java chest inventory GUIs with zero console errors or stack traces. * AddedBedrockCompatTestunit test verifying that Bedrock detection cleanly returns false without throwing classloading exceptions when dependencies are absent.Changed
* Bumped project version to1.2.1across all subprojects, build scripts, plugin descriptors, and documentation.1.2.0Staff+ 1.2.0Sep 13, 2026 [1.2.0] - 2026-09-13
Added
Native Bedrock Geyser Forms*: * ImplementedBedrockFormManagerwith dual detection forGeyserApi(Geyser-Spigot) andFloodgateApi(floodgate). * Bedrock players running/bansreceive a native BedrockSimpleFormwith paginated ban list buttons, detailed ban modal inspections, and back navigation. * Bedrock players running/bansleaderboardreceive a native BedrockSimpleFormdisplaying top staff member statistics and ban counts. * Runtime soft-dependency isolation guaranteeing zeroNoClassDefFoundErroror crashes on servers without Geyser or Floodgate. Java Chest Inventory GUIs*: * ImplementedBansMenuHolder54-slot chest GUI on Paper for Java players with player heads, active/expired status badges, and clickable page navigation buttons. * ImplementedBansLeaderboardHolder54-slot chest GUI on Paper displaying top 10 staff with gold, silver, and bronze podium styling and player heads. * Full support for--chat/-cflag and automatic fallback to paginated chat text for Console and Velocity proxy execution. New Moderation Commands*: */kick <player> [reason]: Online player kick enforcing administrative hierarchy checks, Folia entity-thread safety, and Discord webhook logging. */unwarn <player> [id]: Deactivates a player's latest active warning (or a specific warning ID) with hierarchy weight validation against the issuing staff member. */checkban <player/IP>(alias/bancheck): Status audit command displaying active ban or IP-ban status, expiry, issuing staff, and reason. Dynamic Configuration Reloading*: * Added/staff reload(and/staffplus reload) across both Paper and Velocity to dynamically reloadconfig.ymlandmessages.ymlwithout server restarts. Core Database Enhancements*: * AddedgetLatestActiveWarning(UUID)toDatabaseManagerfor quick warning resolution. * AddedremoveWarningById(int)andremoveLatestWarning(UUID)for warning revocation. * AddedgetPunishmentById(int)for targeted punishment inspection. * AddedisPermanent()andgetDuration()helpers toPunishment.Changed
* Bumped project version to1.2.0across all subprojects, build scripts, plugin descriptors, and documentation. * Addedstaff.kick,staff.unwarn,staff.checkban, andstaff.staff.reloadpermission nodes topaper-plugin.yml.1.1.0Staff+ 1.1.0Sep 9, 2026 [1.1.0] - 2026-09-09
Added
Modrinth Version Notifier*: * Asynchronous update checker querying the Modrinth v2 API (https://api.modrinth.com/v2/project/staff+/version) using native Java 21HttpClientand Gson. * Compares semantic versioning between running and published releases. * Automatically logs update availability to the server console upon enable. * In-game notifications for server administrators and OPs (staff.admin,staff.update.notify, or OP) upon joining, featuring interactive clickable links to [Modrinth Releases](https://modrinth.com/plugin/staff%2B/versions). * Configuration optionsupdate-checker-enabledandupdate-checker-notify-adminsinconfig.yml. Global Ban History Command (`/bans`)*: * Cross-platform/bans [page]command (aliases:/banhistory,/banlist) available on both Paper/Purpur/Folia servers and Velocity proxies. * Displays paginated ban logs with[ACTIVE]and[EXPIRED]badges, target name/IP, staff member, reason, and timestamps. * Interactive pagination buttons ([« Previous]and[Next »]) enabling one-click page navigation. * Permission node:staff.bans(granted by default understaff.admin). Staff Moderation Leaderboard (`/bansleaderboard`)*: * Cross-platform/bansleaderboardcommand (aliases:/banleaderboard,/staffleaderboard) available on Paper and Velocity. * Displays the Top 10 staff members ranked by total bans and IP bans issued. * Configurable togglebans-leaderboard-enabledinconfig.ymlallowing server owners to enable or disable staff leaderboards. * Permission node:staff.bansleaderboard(granted by default understaff.admin). Core Database Enhancements*: * AddedgetRecentBans(offset, limit)toDatabaseManagerfor paginated ban retrieval. * AddedgetTotalBanCount()toDatabaseManagerfor dynamic page calculation. * AddedgetStaffBanLeaderboard(limit)andStaffLeaderboardEntryfor staff ranking aggregation. * Statements tested and fully compliant with SQLite and MySQLONLY_FULL_GROUP_BYstrict modes. Testing & Platform*: * AddedUpdateCheckerTestunit test suite covering semantic version parsing, release prefixes, and edge cases. * AddedStaffPlatform#getPluginVersion()method for platform-agnostic version resolution.Changed
* Bumped project version to1.1.0across rootbuild.gradle,paper-plugin.yml,StaffVelocityPlugin,package.json, and documentation. * Configured JUnit test execution instaff-paper/build.gradlewith ByteBuddy experimental property and dynamic agent loading for modern Java compatibility. * Updated documentation files (README.md,commands.md,configuration.md,getting-started.md) with the new commands, options, and download sources.1.0.0Staff+ 1.0.0May 31, 2026 First Release
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta