
BS-BanHammer
The most feature-rich ban hammer for Paper & Folia 1.21.x - Strike players with lightning effects while maintaining a complete punishment database, Discord integration, and preset system.
Оцените первым
647
2
Список изменений
[3.1.2] - 2026-06-03
🐛 Bug Fixes
Jail System
- Fixed jail escape via relogging — jailed players are now re-enforced on join (
JailListener#onJoin→JailManager#restoreJailOnJoin): the enforcement cache is rebuilt on every join (even within the offline-cleanup window) and restoration also works without a database (the periodic cleanup keeps active jails in memory when no DB is configured). Previously the cache was cleared on quit and never restored, so a relog escaped the jail. - Fixed jails not surviving server restarts —
loadJailedPlayers()now runs ininitializeDatabaseDependentComponents()after the (asynchronous) database is ready, instead of duringonEnablewhen it was stillnull. /unjailnow works for offline players — the database record is released even when the target is not online.- Fixed jail enforcement being blocked by the plugin's own teleports —
JailListener#onTeleportnow exemptsPLUGIN-cause teleports. Previously the plugin's own "teleport back into jail" (and, on Folia, the initial jailing teleport) was cancelled by the very teleport-prevention handler, so a jailed player could leave the jail radius and never be pulled back. - Temporary jails now auto-release without a database —
JailManagertracks an in-memory expiry as a fallback when no database is configured. With a database theUnbanSchedulerremains the sole authority, so there is no duplicate handling or leaked entry. - Fixed return-location being clobbered on re-jail — the pre-jail location is now saved with
putIfAbsent, so restoring a jail (relog/restart) no longer overwrites the player's real return location with the jail spot.
Essentials Integration
- Essentials is now always preferred when hooked — when Essentials is present, jails are created and managed in Essentials; the built-in jail system is no longer used as a fallback in that case.
- Auto-creates an Essentials jail when none exists — if Essentials is hooked but no jail has been configured, BanHammer registers its configured jail location as an Essentials jail (via
setJail) instead of falling back to the built-in system. An existing, admin-configured Essentials jail is preferred when present. - Cell selection for
/jail— new syntax/jail <player> <duration> [cell] [reason]. The optionalcelltargets a specific Essentials jail; when omitted, the configurable default cell is used. Tab-completion suggests existing cells, and a non-existent cell is rejected with the list of available ones. The hammer and reason-only commands use the default cell. Case-insensitive cell matching. /jailno longer requires a built-in jail location when Essentials is hooked — the location now comes from Essentials.
Messages
- Hammer feedback now renders MiniMessage —
HammerListenerdeserializes MiniMessage tags (e.g.<green>…</green>) instead of sending them literally.
Configuration
- Resource pack is now disabled by default —
resourcePack.enabledships asfalsewith emptyurl/hash(andSettingsdefaults tofalse). The texture pack is no longer bundled/sent by the plugin; host it yourself and opt in explicitly. Previously a freshly generated config re-enabled it with a hardcoded URL. - New
punishmentTypes.jail.useEssentialstoggle — enable/disable the Essentials jail hook from the config (defaulttrue). Whenfalse, BanHammer always uses its built-in jail even if Essentials is installed. Applies on (re)start. - New
punishmentTypes.jail.essentia✨efaultJail(default"1") — the Essentials cell used by the hammer and by/jailwhen no cell is specified.
Punishments / IP Bans
- Fixed IP-ban removal with anonymization enabled —
/unbanno longer attempts to pardon an anonymized IP. The real IP is only pardoned whenprivacy.ipAnonymization: NONE; otherwise a hint to use the vanilla/pardon-ipis logged. Applied to both manual unban and the auto-unban scheduler. - Muted players can no longer bypass chat blocking via namespaced commands (e.g.
/minecraft:msg).
Presets
- Fixed memory leak — per-player preset selections are now cleared on quit.
- Thread-safety — preset lists are immutable snapshots swapped atomically on reload, preventing a possible
ArithmeticException(modulo by zero) if a player cycled presets during/bh reload. - Modernized sound resolution — new registry-based
Soundsutility resolves both namespaced keys (block.note_block.pling) and legacy constants (BLOCK_NOTE_BLOCK_PLING).
Stability / Logging
- Removed noisy
INFO-level debug logging from the jail, hammer-use, ban and Discord code paths (nowdebug). ModrinthUpdateCheckershared fields are nowvolatilefor correct visibility between the async check and the main thread.GUIListenerno longer risks aNullPointerExceptionon inventory items without a display name.
Файлы
banhammer-3.1.2.jar(21.48 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
3.1.2
Загрузчики
FoliaPaperPurpurSpigot
Версии игры
1.21–1.21.11
Загрузок
25
Дата публикации
03.06.2026
