Tags
Creators
Details
2.9
Compatibility
Changes
CraftersBan v2.9 ā Premium Edition
Release Date: October 2026
Compatibility: Spigot / Paper / Purpur 1.13ā1.21+ | BungeeCord / Velocity
Overview
CraftersBan v2.9 introduces a major internal restructuring of punishment tracking and identification, improved startup reliability and database initialization, comprehensive fixes for Adventure and MiniMessage formatting, and a new set of global and player-specific statistics placeholders.
This release also improves optional PlaceholderAPI integration, dependency isolation, error reporting, and compatibility across supported server platforms.
š What's New
1. Independent Sequential Punishment IDs
Punishment IDs are now tracked using independent sequential counters for each punishment category, making identification more consistent and organized.
- Permanent Bans (
/ban): Independent counter for permanent bans (#1,#2, etc.). - Temporary Bans (
/tempbanor/ban <duration>): Independent counter for temporary bans. - IP Bans (
/ipban): Dedicated counter for IP bans. - Mutes and IP Mutes (
/mute,/ipmute): Separate counters for player mutes and IP mutes. - Kicks and Warnings (
/kick,/warn): Independent sequential counters.
Technical improvements:
- Added the
getNextTypeIdmethod toPunishmentRepository,SqlPunishmentRepository, andCachedPunishmentRepository. - Updated
CraftersBanAPIImpl#dispatchPunishmentto automatically assign the appropriate sequentialtype_idbefore inserting a punishment into the database. - Updated
BanCommand,IpBanCommand,MuteCommand,IpMuteCommand,WarnCommand, andKickCommandto support the new ID assignment system.
2. New Statistics and Placeholders
New placeholders allow server administrators to display punishment statistics in messages, kick screens, and other supported integrations.
Server-Wide Message Placeholders
Available in messages.yml and kick screen messages:
%craftersban_total_sanctions%ā Total number of recorded sanctions, including bans, mutes, kicks, and warnings.%craftersban_total_permanent_bans%ā Total number of permanent bans.%craftersban_total_temporary_bans%ā Total number of temporary bans.%craftersban_total_ip_bans%ā Total number of IP bans.
PlaceholderAPI ā Global Statistics
The following placeholders are available without requiring a target player:
%craftersban_total_punishments%/%craftersban_total_sanctions%ā Total number of recorded punishments.%craftersban_total_permanent_bans%/%craftersban_total_perm_bans%ā Total number of permanent bans.%craftersban_total_temporary_bans%/%craftersban_total_temp_bans%ā Total number of temporary bans.%craftersban_total_ip_bans%/%craftersban_total_ipbans%ā Total number of IP bans.
PlaceholderAPI ā Player-Specific Statistics
These placeholders provide historical punishment statistics for an individual player:
%craftersban_player_total_sanctions%/%craftersban_player_total_punishments%ā Total number of punishments recorded for the player.%craftersban_player_permanent_bans%ā Total number of permanent bans received by the player.%craftersban_player_temporary_bans%ā Total number of temporary bans received by the player.%craftersban_player_ip_bans%ā Total number of IP-related punishments associated with the player.
3. MiniMessage, Adventure, and Color Formatting Fixes
Fixed issues that caused gradients and other formatting styles in the [CraftersBan] prefix to be lost during message rendering.
- Removed legacy
LegacyComponentSerializerre-serialization fromMessageManager#send(), which could break MiniMessage gradients such as<gradient:#ff4b4b:#aa0000>. - Updated
send()to delegate directly tosendComponent(), preserving native Adventure components when sending messages to players and the console. - Updated
PlayerCommandListenerto usesendComponent()for lockdown notifications and restrictions involving muted commands. - Fixed mute and IP mute messages in
PlayerChatListenerto correctly parse prefixes and colors. - Updated blocked-word filtering in
AsyncPlayerChatListenerto usesendComponent(). - Standardized component-based message delivery in
LockdownCommand,MuteChatCommand, andLastUuidCommand.
4. Improved Startup Reliability and Database Initialization
Improved the plugin's startup process to prevent configuration-related database connection failures.
- Fixed database credential loading during
onEnable(). - Connection settings (
host,port,name,username, andpassword) are now correctly retrieved fromsettings/database.ymlthrough typedConfigManageraccessors. - Reduced the risk of accidental plugin disablement caused by incorrectly loaded database settings.
- Added detailed connection initialization error logging, including full stack traces at
Level.SEVERE, when HikariCP, MySQL, or H2 initialization fails.
5. Packaging and Dependency Improvements
- Improved Guice and MaxMind dependency shading and relocation.
- Relocated library packages under
dev.xunknown.craftersban.libs.*to reduce the risk of class conflicts with other plugins. - Verified the Maven build pipeline and unified deployment workflow through CircleCI for supported Paper 1.20+ and 1.21+ environments.
6. Safer Optional PlaceholderAPI Integration
PlaceholderAPI is now handled more safely when it is not installed on the server.
- Removed the static reference and import of
CraftersBanPlaceholderExpansionfromCraftersBanModule, preventing the JVM from attempting to load PlaceholderAPI classes when the dependency is absent. - Prevented the
java.lang.NoClassDefFoundErrorpreviously caused by attempting to loadme.clip.placeholderapi.expansion.PlaceholderExpansionwithout PlaceholderAPI installed. - CraftersBan now starts normally without PlaceholderAPI.
- Added a clear and concise console notice explaining that PlaceholderAPI must be installed to enable
%craftersban_...%placeholders, including a download link.
š Compatibility
- Minecraft Servers: Spigot, Paper, and Purpur 1.13ā1.21+
- Proxy Platforms: BungeeCord and Velocity
- Database Support: MySQL and H2
- Optional Integration: PlaceholderAPI
š Notes
PlaceholderAPI is optional. CraftersBan can run without it, but PlaceholderAPI-dependent placeholders will require the integration to be installed.
CraftersBan v2.9 focuses on more reliable punishment tracking, improved message rendering, safer dependency handling, and expanded statistics for server administrators.
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:89MtK2xN:yjjWONGI"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:89MtK2xN:yjjWONGI"
}

