BlockyQueue
Priority queue management perfected
Highly Customizable • Priority Queueing • Multi-Platform
Priority queue management perfected
Highly Customizable • Priority Queueing • Multi-Platform
Overview
BlockyQueue is a robust, low‑overhead queue management plugin built for proxy and backend networks. It handles per‑server queues, LuckPerms priority integration, actionbar/ETA updates, cross‑server stats and placeholders, and automatic re‑queueing during restarts - supporting Velocity, BungeeCord, Paper and Folia.Key Features
- Multi‑Platform Support - Proxy + backend ready: Velocity, BungeeCord, Paper, Folia, Spigot, etc.
- Highly Customizable - Fine‑grained settings for wait times, actionbar, titles, retries, cooldowns, and more.
- Priority System - LuckPerms integration (blockyqueue.priority.<number>) for VIP/donor ordering.
- Real‑time Player Updates - Actionbar & periodic messages with ETA and position.
- Cross‑Server Bridge - Broadcasts stats and actionbar updates to backends for placeholders and integrations.
- Smart ETA Calculations - Tracks recent send times for accurate wait estimates.
- Fail‑Safe Delivery - Configurable retry limits, proxy fallback, and auto‑removal options.
- Auto‑requeue & Restart Handling - Opvetional requeue when serrs restart; configurable wait‑after‑online.
- Per‑server Command Forwarding - Avoid conflicts by forwarding commands to backends on specified servers.
- Lightweight & Performant - Minimal overhead with configurable broadcast intervals and async-friendly design.
Performance
- Non‑blocking operations where possible to minimise main‑thread impact
- Configurable stats broadcast and actionbar intervals to tune network/CPU
- Efficient ETA tracking with adjustable history length
- Designed for busy proxy networks with low overhead
Additional Details
- Supports multiple queues per player (optional)
- Display name mapping for servers and per‑server command disabling
- Config updater and optional automatic update checks
- Placeholder support for scoreboards, holograms and GUI's
- No external database required, lightweight config driven
- Bridge backend config example available (bridge-config.yml) for actionbar relay and suggestions
Support & Docs
For support, feature requests, and updates join our DiscordTry It!
Try it at play.voidmc.coPlease take note the images used are not always the default config values.
These files are from version: v1.0.0
YAML:
# ╔════════════════════════════╗
# ║ BlockyQueue Config ║
# ║ Leaf Studios ║
# ╚════════════════════════════╝
# The default server players are sent to when they run /queue with no arguments.
# Leave empty ("") to require players to always specify a server.
default-queue-server: "Lobby-1"
# Time between each send attempt (in seconds, supports decimals).
# Default: 5
wait-time: 5.0
# How often position/ETA update messages are sent to queued players (in seconds).
# Set to -1 or any negative number to disable periodic update messages.
# Default: 10
message-time: 10
# Should we send an actionbar to queued players showing their position?
# Default: true
send-actionbar: true
# How often actionbar updates are sent while queued (in seconds).
# Keep low (e.g. 0.5-1.0) so the actionbar stays visible continuously.
# Default: 1.0
actionbar-time: 1.0
# How often the proxy broadcasts queue/server stats to backends (in seconds).
# This controls how frequently backends receive stats snapshots for placeholders.
# Increasing this reduces network/messages but makes placeholder data update slower.
# Default: 1.0
stats-broadcast-interval: 1.0
# Send queue actionbar updates through the backend bridge plugin so backend plugins
# can integrate with them (for example, custom actionbar backgrounds).
# Default: true
send-actionbar-through-bridge: true
# If bridge delivery fails, should Velocity still send the actionbar directly?
# Default: true
send-actionbar-proxy-fallback: true
# Should we send a title to players when they reach position #1 or are about to be sent?
# Default: false
send-title: false
# Should players be removed from the queue if they switch servers while queued?
# Default: true
remove-on-server-switch: true
# Should players be removed from all queues when they disconnect from the proxy?
# Default: true
remove-on-disconnect: true
# After how many failed send attempts should a player be kicked from the queue?
# Set to -1 for unlimited retries (not recommended).
# Default: 10
max-tries: 10
# How long a server must be unreachable before it is marked "offline" vs "restarting" (in seconds).
# Default: 120
offline-time: 120
# How many recent send-times to track for ETA calculation (0 = use position * wait-time).
# Default: 10
send-times-to-keep: 10
# Should we allow players to join multiple queues at the same time?
# Default: true
allow-multiple-queues: true
# If a player is in multiple queues, which server is shown in actionbar / placeholders?
# Options: first | last
# Default: last
multi-server-queue-pick: last
# How long to wait after a server comes back online before sending players (in seconds).
# Default: 1
wait-after-online: 1
# Cooldown between queue commands (in seconds). Set to -1 or 0 for no cooldown.
# Default: 3
queue-command-cooldown: 3
# Should require permissions to join queues (blockyqueue.queue.<server>)?
# Default: false
require-queue-permission: false
# Should we resume draining queued players automatically as soon as a server comes back online?
# Players are still sent one by one, using wait-time between sends.
# Default: false
send-all-when-back-online: false
# Should players be automatically re-queued to a server if it restarts while they were in lobby?
# Default: false
auto-queue-on-restart: false
# Which server is considered the "lobby"? Players sent back here during a restart will be auto-queued.
# Default: "Lobby-1"
lobby-server: "Lobby-1"
# =====================================================
# SERVER DISPLAY NAMES
# =====================================================
# Configure display names for servers to show in messages and actionbars.
# If a server is not configured here, its name from velocity.toml will be used.
# Format:
# servers:
# <server-name-from-velocity>:
# display-name: "Display Name"
#
# Example:
# servers:
# survival:
# display-name: "Survival"
# lobby-1:
# display-name: "Lobby 1"
servers: {}
# =====================================================
# PER-COMMAND DISABLING PER SERVER
# =====================================================
# List servers where specific commands should be forwarded to the backend
# instead of being handled by BlockyQueue.
# This is useful when another plugin on that backend server uses the same command name.
#
# Format:
# <server-name>:
# - command1
# - command2
#
# Supported commands: queue, q, leavequeue, queueleave, qleave, leave
#
# Example: Survival server has a duel plugin using /queue
# survival:
# - queue
# - q
disabled-commands-per-server: {}
# survival:
# - queue
# - q
# factions:
# - leave
# =====================================================
# PRIORITY SYSTEM
# =====================================================
# Priority is determined via LuckPerms permissions:
# blockyqueue.priority.<number> (e.g. blockyqueue.priority.10)
# Higher number = higher priority. Default priority = 0.
# Players with higher priority are placed ahead in the queue.
# If LuckPerms is not installed, all players default to priority 0.
# Minimum ping interval for checking server status (in seconds).
# Default: 1
minimum-ping-time: 1.0
# Debug Mode
debug-mode: false
# =====================================================
# UPDATE CHECKER
# =====================================================
update-check:
# Check BuiltByBit for new BlockyQueue versions automatically.
# Default: true
enabled: true
# Notify admins (blockyqueue.admin) about available updates when they join.
# Default: true
notify-on-join: true
# Should the plugin automatically update the config files after updating to a new version.
# Default: true
config-updater: true
# How frequently the plugin should check for new plugin updates. Supports: s, m, h, d (e.g. 30m, 6h, 1d)
# Default: 6h
check-interval: 6h
# DO NOT CHANGE THIS
version: ${version}
YAML:
# ╔════════════════════════════╗
# ║ BlockyQueue GUI Config ║
# ╚════════════════════════════╝
# Backend server selector GUI.
#
# material supports normal Bukkit materials (e.g. BARRIER, DIAMOND_SWORD)
# and custom heads via: player_head-<base64>
#
# Slot keys are 1-based (1 = first slot, 9 = last slot of first row).
# You can also set page: <number> per item for paged GUIs.
#
# Actions:
# [exit] - closes the GUI
# [back] - opens previous page
# [next] - opens next page
# [sound] <SOUND> <VOL> <PITCH> - plays a sound for the player
# [connect] <server> - asks proxy to connect player to a server
# [message] <text> - sends a formatted message
#
# Text in title/displayname/lore/[message] supports MiniMessage, legacy (&), and hex (&#RRGGBB).
# If PlaceholderAPI is installed, placeholders are also resolved.
gui:
enabled: false
title: "<gold>Server Selector"
size: 9
items:
"1":
material: "GRASS_BLOCK"
displayname: "&aSurvival"
slot: 4
lore:
- "<gray>Click to connect to survival!"
actions:
- "[sound] ENTITY_PLAYER_LEVELUP 1 1"
- "[connect] Survival"
- "[message] <green>Connecting you to <yellow>Survival<green>..."
"2":
material: "BARRIER"
displayname: "&cClose"
slot: 9
lore: []
actions:
- "[exit]"
YAML:
# Backend bridge command tab-complete suggestions.
# This does not define queue behavior; actual queue rules are managed on Velocity.
# Should this backend receive and send proxy actionbar updates?
receive-proxy-actionbar: true
server-suggestions:
- Lobby-1
- Survival
highly customizable, priority queueing, Multi-Platform, queue, luckperms, velocity, bungee, paper, folia, actionbar, ETA, placeholders, auto-requeue, failover, performance, admin, configurable, lightweight, blocky, blockyseries
