▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/boosCooldowns
boosCooldowns

boosCooldowns

Per-command cooldowns, warmups, limits, prices and disable rules – with a shared database so your whole network stays in sync.

Оцените первым
76
3

boosCooldowns

Per-command cooldowns, warmups, limits, prices and disable rules – with a shared database so your whole network stays in sync.

Built for Paper 1.20+ (tested on 1.21.8 and 26.1.2). Java 21. Drop-in install, SQLite out of the box, MySQL/MariaDB for multi-server.


✨ Features

Core control

  • Per-command cooldowns – regular expressions or wildcards, per command group, with custom messages
  • Warmups – player has to stand still while the command charges up
  • Usage limits – N uses per time window, with scheduled resets
  • Prices – money (Vault), XP levels, items, PlayerPoints
  • Server-wide cooldowns – one player uses /event, everyone shares the cooldown window
  • Progressive cooldowns – multiplier that grows with each consecutive use, resets after a quiet period
  • Disable commands – flag a command disabled: true without unregistering it; bypass permission available

Player UX

  • Warmup effects – boss bar progress indicator, sounds, particles
  • Action bar for warmup countdown and cooldown notices
  • Confirmation dialogs – clickable [Yes] [No] for commands that cost something, per-player toggle
  • Refund on warmup cancel – opt-in return of charged money/items/XP when a warmup is aborted
  • Localization – drop messages_<locale>.yml and messages follow client language
  • Per-command messages – override cooldown/warmup/disabled text per command

Admin tooling

  • /bcd status [player] – every active cooldown, remaining uses, warmup state
  • /bcd rule get/set/tempset – inspect or mutate command rules live (temp overrides auto-restore)
  • /bcd grant cooldown/uses – manually seed state on a player
  • /bcd clear cooldowns/uses/warmups/all <player> – cleanup with granularity
  • /bcd reset now/schedule/list – global usage-counter resets, immediate or scheduled
  • /bcd validate – config linter (unknown keys, bad durations, typos in materials/sounds)
  • /bcd audit – decision log (opt-in)
  • /bcd diff – compare config hash across nodes sharing the same DB
  • Legacy aliases – every pre-4.0 command name still works (clearcooldowns, set, info, …)
  • Autogenerated /bcd help – permission-filtered, grouped by category
  • Smart tab completion – suggests options, player names, configured commands

Advanced

  • Per-world restrictions – rule only applies in specific worlds
  • WorldGuard regions – rule only applies inside specific regions (optional)
  • Group inheritancevip group inherits every rule from default, overrides just what it needs
  • Event-based resets – wipe a cooldown when the player kills an entity or earns an advancement; optional chat message, sound cue and server-wide broadcast
  • Namespace-aware – commands typed as /plugin:command are rewritten to their bare form so cooldowns and limits still apply (no need to keep the old hard syntax blocker on)
  • Command aliases/ja hello/me hello with argument substitution ($1, $*, $player, $world)
  • Sign shortcuts[boosCooldowns] signs that run commands as player or console
  • Multi-server drift detection – each node hashes its config.yml, plugin warns on divergence, /bcd diff inspects

Persistence

  • SQLite (default, zero-config) or MySQL / MariaDB (for networks)
  • JDBC drivers auto-downloaded via libraries: in plugin.yml – no manual install
  • HikariCP connection pool, cache-through for hot-path reads
  • Schema-versioned migrations (V1V4), applied on startup
  • Legacy users.yml is auto-migrated on first run; old file renamed for safety

Developer

  • Public APIBoosCooldownAPI.getInstance() with isOnCooldown, setCooldown, getRemainingUses, …
  • Custom Bukkit eventsCooldownEvent, WarmupEvent, CommandEvent (all cancellable)
  • PlaceholderAPI expansion%boos_remaining_<cmd>%, %boos_uses_<cmd>%, %boos_on_cooldown_<cmd>%
  • bStats metrics – 13 custom charts covering storage backend (with driver version), feature toggles, detected integrations, multi-node setups, locale distribution and config scale

📦 Requirements

Version
Java21+
Paper / Spigot / Bukkit1.20+ (API)
StorageSQLite bundled, or MySQL 5.7+ / MariaDB 10+

Optional integrations (soft-depend)

Every integration is detected at runtime – missing one just disables that feature, never breaks startup.

PluginUnlocks
Vault + any Vault-compatible economy (EssentialsX Economy, CMIEconomy, …)Money prices (price: 100.0)
PlayerPointsPoint prices (playerpoints: 10)
PlaceholderAPI%boos_*% placeholders; expansion of third-party placeholders inside plugin messages
WorldGuardregions: per-command restriction
LuckPerms (or any permissions plugin)Group-based rule targeting via booscooldowns.<group-name>

🚀 Installation

  1. Download boosCooldowns.jar from the Hangar page.
  2. Drop it into plugins/.
  3. Start the server once – default config.yml is generated in plugins/boosCooldowns/.
  4. Edit config.yml and run /bcd reload in-game or from console.

Upgrading from a pre-4.0 version? users.yml is migrated automatically on first start and renamed to users.yml.migrated-<timestamp>.


⚙️ Configuration essentials

Database

database:
  type: sqlite                  # sqlite (default) or mysql / mariadb
  # host: localhost
  # port: 3306
  # database: boosCooldowns
  # username: user
  # password: secret
  pool-size: 4
  cache-ttl-seconds: 30

For shared cooldowns across multiple servers (BungeeCord/Velocity network), point every server at the same MySQL/MariaDB instance and give each one a unique options.options.node_id.

A command rule – everything available

commands:
  groups:
    default:
      /kit:
        cooldown: "1 hour"
        warmup: 5                         # seconds
        limit: 3
        limit_reset_delay: "6 hours"      # fixed window
        price: 100.0                      # Vault money
        xpcost: 5
        playerpoints: 10
        itemcost:
          item: DIAMOND
          count: 1
          name: "Kit Token"
        server_cooldown: "30 minutes"

        # Progressive cooldown – ×2 each time, streak resets after idle
        cooldown_multiplier: 2.0
        cooldown_reset_after: "6 hours"

        # Restrictions
        worlds: [survival, nether]
        regions: [spawn, arena]           # requires WorldGuard

        # Effects
        warmup_sound: BLOCK_BEACON_AMBIENT
        complete_sound: ENTITY_EXPERIENCE_ORB_PICKUP
        warmup_particle: ENCHANT

        # Access + messages
        disabled: false
        disabled_message: "&cKit is offline."
        cooldown_message: "&7Kit cooling down: &e&seconds&&7."
        warmup_message: "&7Preparing kit... &e&seconds&&7."
        permission: "myplugin.kit"        # optional extra gate
        denied_message: "&cNot allowed."
        shared_cooldown: [/kit_daily]
        shared_limit: [/kit_daily]

    vip:
      _inherits: default                  # all /kit rules above
      /kit:
        cooldown: "10 minutes"            # …except this one gets shorter

Aliases

commands:
  aliases:
    /ja: /me                              # exact match
    /tell *: /msg $1 $*                   # wildcard with argument substitution

Placeholders: $1, $2, …, $*, $player, $world.

Event-based cooldown resets

event_triggers:
  - when: KILL
    entity: ENDER_DRAGON
    reset_cooldown: /boss_reward
    message: "&6You slew the dragon! &e/boss_reward&6 is ready."
    sound: ENTITY_PLAYER_LEVELUP
    broadcast: true                       # default: false

  - when: ADVANCEMENT
    advancement: story/mine_diamond
    reset_cooldown: /miner_reward
    message: "&a/miner_reward has been reset."

Message placeholders: &command&, &player&, &entity& (KILL only), &advancement& (ADVANCEMENT only).

Handling /plugin:command syntax

Minecraft lets anyone bypass a cooldown by typing /minecraft:tp instead of /tp. You have two ways to stop that:

  • Hard blocker (syntax_blocker_enabled: true, the default) – rejects any namespace-prefixed command with an invalid_command_syntax message. Strict but annoying when ops type /paper:version.
  • Transparent rewrite (syntax_blocker_enabled: false + apply_rules_to_prefixed_syntax: true) – the plugin silently rewrites /plugin:cmd to /cmd before running its rule lookup. Players keep the shortcut, admins keep the cooldown. Recommended.

Global options

options:
  options:
    disabled_for_ops: true                # plugin has no effect on ops
    warmups_enabled: true
    cooldowns_enabled: true
    limits_enabled: true
    prices_enabled: true
    cancel_warmup_on_move: false
    cancel_warmup_on_damage: false
    cancel_warmup_on_sneak: false
    cancel_warmup_on_sprint: false
    cancel_warmup_on_gamemode_change: false
    block_interact_during_warmup: false
    clear_cooldowns_on_death: false
    clear_uses_on_death: false
    start_cooldowns_on_death: false
    command_logging: false
    command_signs: false
    syntax_blocker_enabled: true          # reject /pluginname:command outright
    # when the blocker is off, rewrite /plugin:cmd → /cmd so rules still apply
    apply_rules_to_prefixed_syntax: true
    command_confirmation: true            # ask Yes/No for priced commands
    refund_on_warmup_cancel: false
    audit_enabled: false                  # persist every decision to DB
    audit_retention_days: 30
    default_locale: en
    node_id: ""                           # "" = auto hostname:port
    config_sync_interval_seconds: 60
  action_bar:
    warmup: false
    cooldown_on_attempt: false
    update_interval_ticks: 10
  boss_bar:
    warmup: false
    color: BLUE                           # BLUE, GREEN, PINK, PURPLE, RED, WHITE, YELLOW
    style: PROGRESS                       # PROGRESS, NOTCHED_6/10/12/20

💬 Commands

Root command: /booscooldowns (alias /bcd). Tab completion is wired up throughout.

Player commands

CommandDefaultPurpose
/bcd status [player]trueYour cooldowns, limits, active warmup. [player] requires booscooldowns.status.others
/bcd check <command>trueIs this command on cooldown for me?
/bcd confirmationstrueToggle the confirmation dialog on/off

Administration

CommandDefaultPurpose
/bcd reloadopReload config.yml
/bcd clear cooldowns <player> [command]opClear active cooldowns
/bcd clear uses <player> [command]opReset usage counters
/bcd clear warmups <player>opCancel active warmups
/bcd clear all <player>opWipe cooldowns + uses + warmups
/bcd rule set <option> <command> <value> [group]opPersist a rule override
/bcd rule tempset <option> <command> <value> <duration>opTemporary override (auto-restores)
/bcd rule get <command> [group]opPrint effective rules (after inheritance)
/bcd grant cooldown <player> <command> <duration>opSeed a cooldown manually
/bcd grant uses <player> <command> <count>opOverwrite remaining uses
/bcd reset now <command>opWipe the global usage counter immediately
/bcd reset schedule <command> <time>opSchedule a global reset (+2h, yyyy-MM-dd HH:mm:ss)
/bcd reset listopList pending scheduled resets

Diagnostics

CommandDefaultPurpose
/bcd validateopLint config.yml for typos, bad durations, unknown materials/sounds
/bcd audit [command] [limit]opRead the command_audit log
/bcd diffopCompare this node's config hash with peers
/bcd help [section]trueAutogenerated help; <section> drills into a group

Legacy aliases (still work for backwards compatibility)

LegacyNew
/bcd clearcooldowns, clearuses, clearwarmups/bcd clear cooldowns / uses / warmups
/bcd set, tempset/bcd rule set / tempset
/bcd scheduleglobalreset, listresets, startglobalreset/bcd reset schedule / list / now
/bcd info, limits, checkcooldown/bcd status [player] / /bcd check

🔑 Permissions

Player-level (default true)

PermissionEffect
booscooldowns.statusUse /bcd status on yourself
booscooldowns.check.cooldownUse /bcd check
booscooldowns.list.limitsLegacy – now covered by booscooldowns.status

Bypass permissions

PermissionEffect
booscooldowns.exceptionBypass the plugin entirely
booscooldowns.norestrictionBypass warmups/cooldowns/prices/limits (aliases still apply)
booscooldowns.nocooldown[./command]Bypass cooldowns, optionally per command
booscooldowns.nowarmup[./command]Bypass warmups
booscooldowns.nolimit[./command]Bypass limits
booscooldowns.noprice[./command]Bypass Vault money cost
booscooldowns.noxpcost[./command]Bypass XP cost
booscooldowns.noitemcost[./command]Bypass item cost
booscooldowns.noplayerpoints[./command]Bypass PlayerPoints cost
booscooldowns.nodisable[./command]Use commands flagged disabled: true
booscooldowns.noactionbarSuppress action-bar notifications
booscooldowns.nobossbarSuppress boss-bar warmup indicator
booscooldowns.nocancel.{move,damage,sneak,sprint,gamemodechange}Don't cancel warmup on that event
booscooldowns.dontblock.interactInteract with blocks/containers during warmup

Admin permissions (default op)

PermissionGrants
booscooldowns.reload/bcd reload
booscooldowns.status.others/bcd status <other player>
booscooldowns.clearcooldowns/bcd clear cooldowns, legacy aliases
booscooldowns.clearuses/bcd clear uses
booscooldowns.clearwarmups/bcd clear warmups
booscooldowns.clear.all/bcd clear all
booscooldowns.set/bcd rule set, tempset, legacy set/tempset
booscooldowns.rule.get/bcd rule get
booscooldowns.grant/bcd grant cooldown, grant uses
booscooldowns.scheduleglobalreset/bcd reset now, schedule, list
booscooldowns.validate/bcd validate
booscooldowns.audit/bcd audit
booscooldowns.diff/bcd diff
booscooldowns.signs.{player,server}.{use,place}Use / place [boosCooldowns] signs

Group targeting

booscooldowns.<group-name> places the player in a non-default command group. Use with your permissions plugin (LuckPerms, PermissionsEx, etc.):

/lp user Alice permission set booscooldowns.vip true

🔌 PlaceholderAPI

Install PlaceholderAPI and the boos expansion registers automatically.

PlaceholderValue
%boos_remaining_<cmd>%Formatted remaining cooldown ("2h 15m")
%boos_remaining_seconds_<cmd>%Raw integer seconds
%boos_on_cooldown_<cmd>%true / false
%boos_server_cooldown_<cmd>%Server-wide cooldown remaining
%boos_uses_<cmd>%"remaining/limit" (or if no limit)
%boos_uses_remaining_<cmd>%Raw integer remaining uses

Use underscores instead of spaces in command names – %boos_remaining_daily_claim% for /daily claim. Leading slash is optional.

You can also embed foreign placeholders inside plugin messages:

cooldown_message: "Wait &e%remaining%&r (balance: &a%vault_eco_balance%&r)"

🌐 Multi-server setup

All player state (cooldowns, limits, user preferences, audit log, scheduled resets) is shared automatically through the database. Point every server at the same MySQL/MariaDB and:

  • Cooldowns follow the player across the network
  • Server-wide cooldowns block every player everywhere
  • Scheduled resets fire consistently on the node that happens to trigger first

Command rules (the commands: section of config.yml) still live per-server – keep them in sync via git, rsync, symlink or deploy pipeline.

The plugin ships drift detection: each node hashes its config.yml on enable and on /bcd reload, writes it to config_version, and a periodic task warns you when peers disagree. /bcd diff shows the mismatch at a glance.


📡 For developers

API

BoosCooldownAPI api = BoosCooldownAPI.getInstance();
CommandData data = api.buildCommandData(player, "/kit");
if (data != null && !api.isOnCooldown(player, data)) {
    api.setCooldown(player, data);    // CompletableFuture<Void>
}

Consumers referencing BoosCooldownAPI at class-load time should declare loadbefore: [boosCooldowns] in their plugin.yml.

Events

  • CooldownEvent – player hit an active cooldown (cancellable)
  • WarmupEvent – warmup is starting or completing (cancellable)
  • CommandEvent – plugin is about to process a command (cancellable, set deny message)

💬 Support & community

Need help? Found a bug? Want to suggest a feature?

  • Discord: https://discord.gg/GFy7x62Jpd – quickest way to get help and chat with other admins
  • GitHub: https://github.com/LordBoos/boosCooldowns – source code, issue tracker, pull requests

For bug reports, please include:

  1. Paper version (/version)
  2. Full latest.log (or the relevant section with timestamps)
  3. Your config.yml
  4. /bcd validate output
  5. /bcd diff output (multi-server only)

📊 Metrics

This plugin uses bStats to collect anonymous usage data. In addition to the default server metrics (player count, Java version, online mode, …) the plugin contributes these custom charts so the community can see how the plugin is actually used:

  • Storage backend (SQLite / MySQL) with drill-down to the driver version
  • Multi-node setups – how many admins share a DB across servers
  • Locale distribution (default_locale)
  • Feature toggles – confirmations, signs, action bar, boss bar, audit, refund-on-cancel
  • Detected integrations – Vault, PlayerPoints, PlaceholderAPI, WorldGuard, LuckPerms
  • Which plugin features admins actually enable (cooldowns, warmups, limits, prices, …)
  • Which warmup-cancel sources are wired up (move, damage, sneak, sprint, gamemode change)
  • Config scale buckets – how many command groups, how many configured commands, how many event triggers

You can opt out globally in plugins/bStats/config.yml.


📝 License & credits

Licensed under the MIT License – copyright © 2011–2026 LordBoos (in-game boosik) and contributors.

Originally by LordBoos (in-game boosik).

Партнёрский материал

Сервер для плагина boosCooldowns - как у профи

Плагин boosCooldowns создан для серверов: на своём сервере вы настраиваете его под себя и решаете, кому играть. Создать сервер с плагином boosCooldowns для друзей можно за пару минут - BungeeHost всё уже подготовил.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.1.x1.21.x1.20.x

Платформы

Поддерживаемые окружения

Сервер

Зависимости

Ссылки


Создатели

Детали

Лицензия:
Опубликован:5 месяцев назад
Обновлён:5 месяцев назад
Главная