Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
CustomJukebox
Real music on your Minecraft server. CustomJukebox turns jukeboxes into a full music system: custom discs with your own .ogg tracks, playlists, and ambient zones that play background music automatically as players walk into an area โ all without replacing a single vanilla disc.
Built for Paper and Folia, configured in JSON, and translated into four languages.
๐ง Bedrock players?
CustomJukebox streams audio from a Java resource pack, which Bedrock clients handle differently. If you run Geyser/Floodgate, install the companion plugin:
โก๏ธ BS-CustomJukebox Bedrock Extension
It hooks into the public API events this plugin fires, so no extra configuration is needed on the CustomJukebox side โ install both and they work together.
โจ Features
๐ต Custom Music Discs
- Add your own music discs without overriding vanilla ones
- Real audio via resource pack (
.ogg) โ full quality, not note blocks - Customisable title, author, lore and CustomModelData
- Automatic stop at the configured track length
- Managed in
disc.json, or entirely in-game through the admin GUI
๐ป Ambient Zones & Server Radio
Background music that starts on its own for everyone who enters an area โ no disc, no command, no redstone.
- Four area types: radius, cuboid, WorldGuard region, or global (a server-wide radio station reaching every player in every world)
- Priority decides which zone wins where several overlap โ a lobby zone can override the radio
- Two playback modes:
synced(everyone hears the same track together โ ideal for events) orindividual(each player hears complete tracks from the moment they arrive โ ideal for lobbies) - Height range: cover the full column (default) or bound the zone in Y as a true 3D sphere/box
- Loop and shuffle, reshuffled on every lap
- Per-zone volume and playlist
๐ถ Playlists & Categories
- Group discs into playlists and play them in sequence
- Shuffle and repeat modes (
loop,repeat-one) - Playback range per playlist: normal, whole world, server-wide, or a custom radius in blocks
- Categories to keep large disc collections organised
๐ค Player Controls
Every player gets these by default โ no permission setup required.
/cjb music on|offโ opt out of plugin music entirely, saved across sessions/cjb music volumeโ a personal volume, independent of the server setting/cjb skipโ skip the track you are currently hearing/cjb favoriteโ keep a personal favourites list and play it as a playlist; discs can also be favourited by shift-clicking them in the disc menu- Progress bar โ an optional boss bar showing the current track and how far into it you are
๐งฉ Fragment System
- Collect disc fragments and craft them into complete discs (shapeless, count configurable)
- Creeper drops: guaranteed when a skeleton kills a creeper, configurable chance for player kills
- Loot integration: fragments appear in dungeons, bastions, end cities, trail ruins and more
๐ฅ๏ธ In-Game Administration
- Jukebox GUI โ right-click an empty jukebox to pick a disc
- Admin panel (
/cjb gui) โ create, edit and delete discs, playlists and categories without touching a file - Step-by-step creation wizards with input validation
- Zone editor GUI that tells you exactly why a zone is not playing yet
- Every list paginates, so large collections stay fully reachable
- Delete confirmations on destructive actions
๐ Integrations & Compatibility
- Paper 1.21.4 โ 26.x and Folia (region-threaded scheduling, auto-detected)
- WorldGuard โ respects the
USEflag, and can bind ambient zones to regions - GriefPrevention โ respects container trust
- PlaceholderAPI โ 16 placeholders (disc in hand, volume, mute state, totals, and more)
- Multi-language: English, German, Spanish, Italian โ fully translated, editable
- Developer API with four Bukkit events (
DiscPlaybackStart/Stop,DiscRegistered/Removed) - bStats metrics (opt-out)
๐ฆ Parrot Dancing
Parrots react to custom music within a configurable radius.
๐ Commands
For everyone
| Command | Description |
|---|---|
/cjb music <on|off|toggle|volume <0-4|reset>|status> |
Your personal music settings |
/cjb skip |
Skip the track you are hearing |
/cjb favorite <add|remove|toggle|list|play|clear> |
Manage and play your favourites |
/cjb gui |
Open the disc menu |
/cjb list [page] ยท /cjb info <disc> |
Browse discs |
For admins
| Command | Description |
|---|---|
/cjb zone <...> |
Create and manage ambient zones and radio stations |
/cjb playlist <...> |
Create and play playlists |
/cjb play <disc> [loop] [global|world|<radius>] |
Play a disc at your position |
/cjb give ยท /cjb fragment |
Hand out discs and fragments |
/cjb volume ยท /cjb mute ยท /cjb unmute |
Server-wide volume |
/cjb stop ยท /cjb reload |
Stop playback / reload configuration |
Aliases: /customjukebox, /jukebox, /jb
๐ Permissions
| Permission | Default | Grants |
|---|---|---|
customjukebox.use |
everyone | Use jukeboxes |
customjukebox.gui ยท .list ยท .info |
everyone | Browse discs |
customjukebox.music ยท .favorite ยท .skip |
everyone | Personal settings, favourites, skip |
customjukebox.admin |
op | All admin commands (parent) |
customjukebox.zone ยท .playlist ยท .play ยท .stop ยท .volume |
op | Individual admin permissions |
customjukebox.give ยท .fragment ยท .reload |
op | Item handout and reload |
customjukebox.bypass.protection |
op | Ignore WorldGuard/GriefPrevention checks |
๐ฆ Requirements
- Server: Paper 1.21.4+ or Folia (also runs on 26.x)
- Java: 21 or newer
- A resource pack containing your
.oggfiles โ required for custom sounds to be audible - Optional: WorldGuard, GriefPrevention, PlaceholderAPI, Geyser/Floodgate (with the Bedrock Extension)
๐ Quick Start
- Drop the JAR into
plugins/and start the server. It createsconfig.json,disc.json,zones.jsonand thelanguages/folder. - Put your
.oggfiles into a resource pack and register them insounds.json. - Host the pack and set
resource-packplusresource-pack-sha1inserver.properties. - Create a disc โ easiest through
/cjb guiโ Admin Panel โ Disc Management, or by editingdisc.json. /cjb reload
Lobby music in four commands
/cjb playlist create lobby-mix
/cjb playlist add lobby-mix my_track
/cjb zone create lobby # centred on where you stand
/cjb zone radius lobby 60
/cjb zone playlist lobby lobby-mix
The zone is enabled and looping by default. For a station covering the entire server, use /cjb zone global <id> instead of a radius.
โ๏ธ Configuration
config.json โ every value shown is the default:
{
"settings": {
"enabled": true,
"language": "en",
"enable-gui": true,
"debug": false,
"max-backups": 5,
"backup-min-interval-minutes": 5
},
"discs": {
"creeper-drops": true,
"creeper-drop-chance": 0.05,
"dungeon-loot": true,
"trail-ruins-loot": true,
"max-loot-discs": 2,
"loot-chance": 0.15,
"enable-crafting": true,
"fragments-per-disc": 9
},
"playback": {
"volume": 4.0,
"default-loop": false,
"jukebox-hearing-radius": 64,
"show-title": true,
"show-actionbar": true,
"show-progress-bar": true,
"progress-update-ticks": 20
},
"parrots": {
"enable-dancing": true,
"dance-radius": 3
},
"ambient-zones": {
"enabled": true,
"sound-category": "RECORDS"
},
"integrations": {
"worldguard": true,
"griefprevention": true
}
}
Ambient zones live in zones.json, discs and playlists in disc.json, per-player settings in players.json. All files are written asynchronously and replaced atomically, so saving never stalls the server tick and an interrupted write cannot corrupt a config.
๐ Links
- ๐ง Bedrock Extension โ for Geyser/Floodgate servers
- ๐ Source on GitHub
- ๐ Report an issue


