
Customizable broadcasts for chat, titles, and images with gradients & rainbow effects
The modern broadcast plugin for Minecraft servers. One YAML file for every announcement across chat, titles, action bars, boss bars, and multi-channel scenes — on Paper, Spigot, Velocity, and Folia.
A single, unified primitive — scenes — runs every automated or triggered broadcast on your server. A scene has one trigger (join, interval, daily, or manual) and one or more steps. Each step can fire multiple channels at the same instant or chain them on a timeline. Drop the jar in, edit one line, /bc reload, done.
welcome.yml, rotation.yml, schedule.yml. Every broadcast is a scene with the same shape.server-name: once; every chat broadcast gets a gradient prefix. Change server-color: to restyle — no MiniMessage knowledge required.servers: [lobby] to target broadcasts per-server./bc validate dry-runs your config before applying. If the new config has errors, the old one stays live.scenes:
welcome-sequence:
description: "On-join cinematic"
on-join: true
steps:
- { at: 0s, chat: welcome }
- { at: 1s, actionbar: tip-spawn }
- { at: 3s, title: welcome-back }
chat-rotation:
every: 5m
cycle: true
steps:
- { at: 0s, chat: tip-sethome }
- { at: 0s, chat: rules }
- { at: 0s, chat: discord }
daily-reset:
daily-at: "00:00"
steps:
- { at: 0s, chat: server-restart }
| Trigger | Fires |
|---|---|
on-join: true |
Once per player when they connect |
every: 5m |
Every 5 minutes server-wide |
daily-at: "09:00" |
Once a day at 09:00 UTC |
daily-at: "09:00 local" |
Once a day in the server's system timezone |
daily-at: "09:00 America/Los_Angeles" |
Once a day in any IANA timezone |
| (none) | Manual only — fires via /bc scene <name> |
vip-event:
every: 10m
min-players: 5
max-players: 80
worlds: [survival, minigames] # Paper/Spigot only
servers: [lobby] # Velocity only (backend filter)
permission: broadcastplusplus.vip
steps:
- { at: 0s, chat: vip-tip }
All filters are optional. Set at scene level (applies to every step) or at preset level (applies just to that preset). When both are set, the stricter value wins.
at: offset from scene start.cycle: true — one step fires per trigger tick, round-robin. Use with every: for classic tip rotations.cycle: true + random: true — shuffled rotation instead of round-robin.server-name: "YourServer"
server-color: ["#00C8FF", "#5C78FF"] # gradient — two colors
# server-color: "#FFAA00" # solid — one color
# server-color: "red" # named color — works too
That's it. The chat prefix is auto-synthesized from your server name and color. Every chat broadcast is stamped with it, and <server> resolves to the same value anywhere in presets.
Need a custom prefix layout? Set chat.prefix: explicitly and it overrides the auto-brand.
bossbars:
presets:
countdown:
text: "<red><bold>Event starts in 10 seconds</bold></red>"
color: RED
overlay: PROGRESS
progress: { from: 1.0, to: 0.0 }
duration: 10s
Drain the bar to zero over 10 seconds. Or progress: { from: 0.0, to: 1.0 } for a fill. Static bars — just a number.
| Command | Permission | Purpose |
|---|---|---|
/bc chat <preset|"text"> |
send |
Broadcast a chat preset or ad-hoc MiniMessage |
/bc title <preset|"text"> |
send |
Show a title |
/bc actionbar <preset|"text"> (alias ab) |
send |
Show an action bar |
/bc bossbar <preset|"text"> (alias bb) |
send |
Show a boss bar |
/bc scene <preset> |
send |
Play a scene on demand |
/bc to <player> <channel> <preset|"text"> |
send |
Send to one player (staff DMs, moderation notices) |
/bc preview <type> <preset|"text"> |
send |
Send only to yourself — test before broadcasting |
/bc list [type] |
send |
List every preset, optionally filtered by channel |
/bc validate |
admin |
Dry-run the config without applying it |
/bc reload |
admin |
Reload config.yml (rejects on errors, keeps old live) |
/bc studio (alias gui) |
studio |
Open the in-game Studio GUI |
Ad-hoc broadcasts — a single unquoted word looks up a preset; multi-word or "quoted" arguments render as MiniMessage text. /bc chat "<red>Server restart in 5m</red>" works without touching the config.
Three nodes. All default to op.
| Node | Grants |
|---|---|
broadcastplusplus.send |
All /bc broadcasts + preview |
broadcastplusplus.studio |
/bc studio GUI access |
broadcastplusplus.admin |
Everything above + /bc reload + /bc validate |
Usable in any preset text, per-recipient at render time:
| Tag | Value |
|---|---|
<player> |
Recipient's in-game name |
<online> |
Current online player count |
<server> |
Your server-name: value |
<time> |
Server time, HH:mm |
<date> |
Server date, yyyy-MM-dd |
Formatting uses MiniMessage. Gradients, hex colors, bold / italic, clickable URLs, hover tooltips — all supported. Preview live at webui.advntr.dev.
/bc studio opens a 54-slot inventory UI on Paper and Spigot:
Velocity doesn't support inventory GUIs — use commands there.
| Platform | Support | Notes |
|---|---|---|
| Paper 1.20.1+ | ✅ Full | Native Adventure, smallest jar |
| Folia | ✅ Full | Region-aware schedulers, no runtime branching |
| Spigot 1.20.1 – 26.x | ✅ Full | Bundles Adventure, drop-in on legacy setups |
| Velocity 3.3+ | ✅ Full | Proxy-wide broadcasts + per-backend servers: filter |
plugins/ folder (or the proxy's plugins/ for Velocity).plugins/BroadcastPlusPlus/config.yml and change server-name: at the top./bc reload.The shipping config comes with five chat presets, one title, two action bars, one boss bar, and three scenes already wired up — join a fresh server and the welcome sequence fires on first connect so you can see the plugin working immediately.
The deprecated rotation: and join: top-level sections still parse on load. The plugin detects them, synthesizes equivalent scenes in-memory, and logs one deprecation warning pointing at the new format. Nothing breaks — move your config to the scenes: shape at your own pace.