Broadcast++ | The Ultimate Broadcast Plugin

Customizable broadcasts for chat, titles, and images with gradients & rainbow effects

1,76k

Broadcast++ | The Ultimate Broadcast Plugin

Broadcast++

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.

---

What is Broadcast++

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.

---

Why server owners pick it

- Plug-and-play. Stop juggling `welcome.yml`, `rotation.yml`, `schedule.yml`. Every broadcast is a scene with the same shape. - Plug-and-play. Set `server-name:` once; every chat broadcast gets a gradient prefix. Change `server-color:` to restyle — no MiniMessage knowledge required. - Plug-and-play. Drain or fill the bar over a duration as a visual countdown. No custom scheduler code. - Plug-and-play. On Velocity, filter scenes by backend with `servers: [lobby]` to target broadcasts per-server. - Plug-and-play. `/bc validate` dry-runs your config before applying. If the new config has errors, the old one stays live. - Plug-and-play. Ships with five working presets and three working scenes. Useful on boot with zero edits.

---

Scenes — one primitive for everything

```yaml 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 } ```

Triggers — pick one per scene

| 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>` |

Filters — gate delivery per-audience

```yaml 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.

Timeline vs. cycle

- `cycle: true` + `random: true` — every step fires at its `at:` offset from scene start. - `cycle: true` + `random: 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.

---

Branding in two lines

```yaml 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.

---

Animated boss bars

```yaml 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.

---

Commands

| 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.

---

Permissions

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` |

---

Placeholders

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 MiniMessage.

---

Studio GUI

`/bc studio` opens a 54-slot inventory UI on Paper and Spigot:

- Six tabs: Status tab - Status tab a preset → preview it to yourself - Status tab → broadcast it to everyone - Status tab shows the scene-trigger breakdown at a glance - Admins get a reload button in the corner

Velocity doesn't support inventory GUIs — use commands there.

---

Platform support

| Platform | Support | Notes | | --- | --- | --- | | Velocity 3.3+ | ✅ Full | Native Adventure, smallest jar | | Velocity 3.3+ | ✅ Full | Region-aware schedulers, no runtime branching | | Velocity 3.3+ | ✅ Full | Bundles Adventure, drop-in on legacy setups | | Velocity 3.3+ | ✅ Full | Proxy-wide broadcasts + per-backend `servers:` filter |

---

Install

1. Download the jar that matches your platform from the Versions page. 2. Drop it into your server's `plugins/` folder (or the proxy's `plugins/` for Velocity). 3. Start the server. 4. Open `plugins/BroadcastPlusPlus/config.yml` and change `server-name:` at the top. 5. `/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.

---

Migrating from older configs

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.

---

Links

- Hex color pickerHex color picker - Hex color picker — %%MD1%% - Hex color picker — %%MD2%%

ADS