KeyAllPro | Folia & Paper v1.0.1

Give crate keys to every online player on a configurable timer.
ChatGPT Image Apr 2, 2026, 12_38_37 PM.png

Key All Pro
Automated crate key drops for every player Paper & Folia ready.

⚡ Drift-free Timer 🌐 Full Folia Support 📊 BossBar Countdown 🔗 PlaceholderAPI 🎖 Per-Rank Rewards

Overview​


KeyAllPro automatically broadcasts crate keys to every online player on a fully configurable interval. Built from the ground up for both Paper and Folia it uses the modern AsyncScheduler, GlobalRegionScheduler, and EntityScheduler APIs, so no thread is ever blocked and the plugin is fully correct under Folia's regionalized model.

The countdown is driven by wall-clock time rather than server ticks, so TPS drops and GC pauses cannot cause drift or double-fires. Timer state is persisted across restarts a reboot won't erase your players' wait.


Features​

⏱ Timer System​

  • Wall-clock accurate countdown uses System.currentTimeMillis(), immune to TPS fluctuations
  • Double-fire proof atomic CAS guard prevents executing twice on the same tick
  • Persists across restarts resumes from the saved timestamp in data.yml
  • Configurable interval any value in seconds (e.g. 3600 = 1 hour)
  • Warning thresholds alerts at 300s · 60s · 30s · 10s · 5s (fully customizable list)
  • Mid-cycle override /keyall settime <seconds> without any restart
  • Force drop /keyall give fires an instant key drop on demand

🎁 Crate & Reward System​

  • Multiple crate types define unlimited crates in config, each with their own commands
  • ROTATION mode cycles through crates in a predictable, ordered sequence
  • RANDOM mode weighted random selection each cycle (configure weights per crate)
  • Per-rank rewards extra keys for VIP / MVP / Elite tiers via permission nodes
  • Bonus reward chance configurable % chance to award a random extra key per player
  • Daily Double event toggle a day-of-week multiplier (e.g. 2× keys every Saturday)
  • Offline catch-up optionally give missed keys to players when they next join
  • Works with any crate plugin EZCrates, CratesPlus, ExcellentCrates, SupremeCrates, etc.

📢 Messaging System​

  • Chat broadcast full-colour announcements at every warning and on drop execution
  • ActionBar persistent countdown displayed above the hotbar
  • Title overlay configurable fade-in / stay / fade-out durations (in ticks)
  • BossBar live progress bar draining as the timer counts down; configurable colour & style
  • Sounds play any Bukkit sound key at warning intervals and on drop
  • Per-player confirmation private message telling each player exactly what key they received
  • Full colour code support standard & colour codes in all messages

📊 PlaceholderAPI​

  • %keyall_time% countdown in mm:ss format
  • %keyall_time_long% verbose format, e.g. 1h 30m 45s
  • %keyall_status% Waiting or Giving
  • %keyall_players% number of currently online players
  • %keyall_next_crate% display name of the upcoming crate
  • %keyall_interval% configured full interval in seconds

⚙ Developer API​

  • Clean KeyAllAPI class force drops, set timer, give to a specific player, query state
  • All methods are thread-safe call from any sync or async context
  • Obtain via ((KeyAllPro) Bukkit.getPluginManager().getPlugin("KeyAllPro")).getApi()

Commands & Permissions​

CommandDescriptionPermission
/keyallView countdown statuskeyallpro.use
/keyall giveForce an immediate key dropkeyallpro.give
/keyall reloadHot-reload config.ymlkeyallpro.reload
/keyall settime <seconds>Set countdown to N secondskeyallpro.settime
/keyall statusAlias for /keyallkeyallpro.use

Permission Nodes​

  • keyallpro.admin grants all sub-permissions (default: op)
  • keyallpro.use view timer status
  • keyallpro.give force key drop
  • keyallpro.reload reload config
  • keyallpro.settime change countdown value
  • keyallpro.rank.vip / keyallpro.rank.mvp / keyallpro.rank.elite donor rank reward tiers

Configuration Highlights​

YAML:
# ============================================================
#   KeyAllPro  |  Production Configuration
#   Full Paper + Folia support
# ============================================================
# ── TIMER ────────────────────────────────────────────────────
# How often (in seconds) to give crate keys to all online players.
# Default: 3600 = 1 hour.
interval: 3600
# Persist the countdown across server restarts.
# When true, the timer resumes from where it left off.
# When false, the timer resets to full "interval" on every restart.
persist-timer: true
# ── CRATE SELECTION ──────────────────────────────────────────
# How the next crate is chosen each cycle:
#   ROTATION  -  cycles through the list in order (predictable)
#   RANDOM    -  picks randomly, weighted by the "weight" field
crate-mode: ROTATION
# ── CRATES ───────────────────────────────────────────────────
# Each crate is a keyed section with:
#   name     - display name used in messages/placeholders
#   commands - console commands to run (use %player% for player name)
#   weight   - relative chance weight (only used in RANDOM mode)
#
# You can list multiple commands per crate (all will run per player).
crates:
  common:
    name: "Common"
    commands:
      - "crates key give %player% common 1"
    weight: 50
  rare:
    name: "Rare"
    commands:
      - "crates key give %player% rare 1"
    weight: 30
  legendary:
    name: "Legendary"
    commands:
      - "crates key give %player% legendary 1"
    weight: 20
# ── RANK REWARDS ─────────────────────────────────────────────
# Extra commands given to players who hold a specific permission.
# Useful for tiered donor rewards on top of the base crate.
rank-rewards:
  enabled: false
  ranks:
    vip:
      permission: "keyallpro.rank.vip"
      commands:
        - "crates key give %player% vip 1"
    mvp:
      permission: "keyallpro.rank.mvp"
      commands:
        - "crates key give %player% mvp 2"
    elite:
      permission: "keyallpro.rank.elite"
      commands:
        - "crates key give %player% elite 3"
# ── OFFLINE PLAYER SUPPORT ───────────────────────────────────
# When enabled, players who were offline during a key drop
# receive catch-up rewards the next time they join.
# Commands run with %player% replaced by the joining player.
offline-players:
  enabled: false
  catch-up-commands:
    - "crates key give %player% common 1"
# ── WARNINGS ─────────────────────────────────────────────────
# Seconds before the drop to broadcast a countdown alert.
# Multiple values supported. Set to [] to disable all warnings.
warnings:
  - 300
  - 60
  - 30
  - 10
  - 5
# ── MESSAGES ─────────────────────────────────────────────────
# Standard Minecraft color codes (&a, &e, &l, etc.) supported everywhere.
# Placeholders: %keyall_time%  %keyall_next_crate%  %keyall_status%
messages:
  prefix: "&8[&6&lKeyAllPro&8] &r"
  # Sent at each warning threshold
  warning: "&7Key drop in &e%keyall_time%&7!"
  # Broadcast when the drop actually fires
  giving: "&6&lKey Drop &ais happening &6&lNOW&a!"
  # Per-player confirmation after keys are given
  given: "&aYou received &e1x %keyall_next_crate% Key&a!"
  # Which channels to use for warnings/giving broadcasts.
  # Valid values: CHAT  ACTIONBAR  TITLE
  # (BossBar is configured separately below)
  broadcast-types:
    # - CHAT
    # - ACTIONBAR
    # - TITLE
  # Title overlay (only sent when TITLE is in broadcast-types)
  title:
    title: "&6&lKey Drop!"
    subtitle: "&7Next in &e%keyall_time%"
    fade-in: 10      # ticks
    stay: 60         # ticks
    fade-out: 20     # ticks
# ── BOSS BAR ─────────────────────────────────────────────────
bossbar:
  enabled: false
  title: "&6&lKey Drop &8» &e%keyall_time%"
  # Colors: PINK  BLUE  RED  GREEN  YELLOW  PURPLE  WHITE
  color: YELLOW
  # Styles:  SOLID  SEGMENTED_6  SEGMENTED_10  SEGMENTED_12  SEGMENTED_20
  style: SOLID
  # Show bossbar to all players (false = only players with keyallpro.use)
  show-to-all: true
# ── SOUNDS ───────────────────────────────────────────────────
sounds:
  enabled: true
  # Sound key names from https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html
  warning: "ENTITY_EXPERIENCE_ORB_PICKUP"
  give: "ENTITY_PLAYER_LEVELUP"
# ── BONUS REWARDS ────────────────────────────────────────────
# Random chance to award an extra key on top of the regular drop.
bonus-rewards:
  enabled: false
  # Percentage chance (0.0 – 100.0) that any individual player wins a bonus
  chance: 10.0
  commands:
    - "crates key give %player% bonus 1"
# ── DAILY DOUBLE EVENT ───────────────────────────────────────
# On the configured day of the week all rewards are multiplied.
daily-double:
  enabled: false
  # MONDAY  TUESDAY  WEDNESDAY  THURSDAY  FRIDAY  SATURDAY  SUNDAY
  day: "SATURDAY"
  # Multiplier applied to command repetitions (2 = double keys)
  multiplier: 2

Technical Details​

  • Server software: Paper 1.21+ and Folia fully region-safe
  • Java version: Java 21
  • Hard dependencies: None
  • Soft dependencies: PlaceholderAPI (optional)
  • Thread model: Countdown → AsyncScheduler · Command dispatch → GlobalRegionScheduler · Player packets → EntityScheduler
  • Hot reload: /keyall reload rebuilds all services without stopping the timer loop
  • Persistence: data.yml stores next-execution epoch-ms + crate rotation index
  • Performance: Only iterates online players no entity loops, no main-thread blocking


KeyAllPro is provided as-is. Feature requests and bug reports are welcome.

💬 Support & Community
Join our Discord
EULA: Free EULA
307 Views
7 Downloads
Apr 4, 2026 Published
Apr 4, 2026 Updated
Not yet rated
39.8 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Type
  1. Gameplay
  1. Reward
  1. Fun
Game mode
  1. Survival
  1. Lifesteal
  1. Donut-like
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Folia
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. This product doesn't contain text
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Host a lag-free Minecraft or Hytale server in minutes.
Get 25% off your first order with our link.
Recommended for you
Auto-generates random orders with smart scheduling, player scaling, dimension filtering, ItemsAdder
5.00 star(s) 3 ratings
12 purchases
Auto auction listings for active market
Not yet rated
1 purchase
#1 BuiltByBit Plugin ~ Protects your server from crash packet exploits ~ Folia Support
5.00 star(s) 141 ratings
4,202 purchases
Create items, blocks, mobs, emojis, and more with automatic resourcepack generation!
5.00 star(s) 53 ratings
3,160 purchases
Protect your server from crash/dupe/packet exploits with the ultimate security fix plugin.
5.00 star(s) 44 ratings
3,088 purchases
307 Views
7 Downloads
Apr 4, 2026 Published
Apr 4, 2026 Updated
Not yet rated
39.8 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Type
  1. Gameplay
  1. Reward
  1. Fun
Game mode
  1. Survival
  1. Lifesteal
  1. Donut-like
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Folia
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
Supported languages
  1. This product doesn't contain text
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Host a lag-free Minecraft or Hytale server in minutes.
Get 25% off your first order with our link.
Recommended for you
Auto-generates random orders with smart scheduling, player scaling, dimension filtering, ItemsAdder
5.00 star(s) 3 ratings
12 purchases
Auto auction listings for active market
Not yet rated
1 purchase
#1 BuiltByBit Plugin ~ Protects your server from crash packet exploits ~ Folia Support
5.00 star(s) 141 ratings
4,202 purchases
Create items, blocks, mobs, emojis, and more with automatic resourcepack generation!
5.00 star(s) 53 ratings
3,160 purchases
Protect your server from crash/dupe/packet exploits with the ultimate security fix plugin.
5.00 star(s) 44 ratings
3,088 purchases
Top