Tags
Creators
Details
Licensed MIT
Published last year
Updated last month
All versions
3.1.0
Release
BS-BanHammer 3.1.06 months ago 49
Compatibility
Minecraft: Java Edition
1.21.x
Platforms
Folia
Paper
Purpur
Spigot
Changes
[3.1.0] - 2026-04-24
π New Feature
Folia Support (Dual-Compatibility)
- Paper + Folia from a single JAR β automatically detects the platform at startup
- New
FoliaSchedulerutility class abstracts all scheduler, teleport and kick operations plugin.ymldeclaresfolia-supported: true
Migrated APIs:
- All
Bukkit.getScheduler().runTask()calls βFoliaScheduler.runGlobal()/runOnEntity() - All
runTaskTimerAsynchronously()calls βFoliaScheduler.runAsyncRepeating() - All
player.teleport()calls βFoliaScheduler.teleportAsync()(usesteleportAsync()on Folia) - All
BukkitTaskfields βObjectwithFoliaScheduler.cancelTask() - GUI
openInventory()calls run on entity scheduler for correct thread ownership - Resource pack sending uses entity-delayed scheduler
Files changed:
BanHammerPlugin.javaβ Folia detection on startupPunishmentManager.javaβ 13 scheduler replacementsUnbanScheduler.javaβ async scheduler, entity scheduler for jail releaseJailManager.javaβ 4 teleport migrations, scheduler migrationModrinthUpdateChecker.javaβ async scheduler, global scheduler for notificationsStatisticsGUI.javaβ entity scheduler for inventory operationsResourcePackListener.javaβ entity-delayed schedulerEssentialsJailIntegration.javaβ async teleport
No changes needed: HammerListener.java, AppealCommand.java, BanHammerCommand.java β events already fire on correct regional threads.
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:odcCYmcd:UXH8Lvm4"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:odcCYmcd:UXH8Lvm4"
}

