Tags
Creators
Details
Licensed MIT
Published 10 months ago
Updated 3 weeks ago
All versions
3.3.0
Release
BS CustomJukebox 3.3.03 months ago 96
Compatibility
Minecraft: Java Edition
26.2
26.1.x
1.21.4–1.21.11
Platforms
Folia
Paper
Purpur
Spigot
Changes
[3.3.0] - 2026-07-19
Added
- Ambient zones — auto-playing looping playlists for regions/areas: a zone continuously loops a playlist and starts automatically for every player who enters its area, with no disc or command needed once configured. Ideal for lobby/hub background music or event ambience. Zones are stored in a new
zones.jsonand managed via/cjb zone(permissioncustomjukebox.zone, default op) or the/cjb zone edit <id>GUI.- Three area types: a radius around a point (no dependencies), a named WorldGuard region (
/cjb zone region <id> <region>), or a cuboid box between two corner positions (/cjb zone pos1 <id>//cjb zone pos2 <id>, covering the full block range between them like a WorldGuard selection). Overlapping zones resolve bypriority(highest wins). - Height range (
/cjb zone height <id> <full|limited>): by default (full) a zone ignores the Y axis — a radius zone is a vertical cylinder and a cuboid an infinite column, so players hear it at any height within the horizontal footprint.limitedbounds the zone in Y too (a true 3D sphere/box). Defaults tofullso lobbies aren't limited to a few blocks of vertical range. - Whole-playlist loop: each zone loops its playlist back to the first track at the end.
- Per-zone playback mode (
/cjb zone playback <id> <synced|individual>):synced(default): one shared timeline — everyone in the zone hears the same track at the same time. Best for events. Late arrivals are handled by two sync modes (/cjb zone sync <id> <immediate|next_track>):immediatestarts the current track from its beginning for a player who walks in mid-track (never silence, slightly offset);next_trackwaits for the next track boundary so they join perfectly in sync. This is because Minecraft's sound engine cannot seek — a running track cannot be joined at its exact current position; everyone re-syncs at each track boundary regardless.individual: each player runs the playlist on their own from the moment they enter, always hearing complete tracks start-to-finish (no mid-song switching), looping the whole playlist — but not in sync with other players. Best for lobby/background music.syncModedoes not apply here.
- Per-zone options:
playlist,loop,playback,syncMode,fullHeight(see Height range),volume(inheritor 0–4, controlling audible radius),priority,enabled. Set via subcommands or the editor GUI;/cjb zone radius|center,pos1|pos2andregionshape the area from your position. - Config: master switch
ambient-zones.enabledinconfig.json; scan cadencesettings.scan-interval-ticksinzones.json(default 20 ticks). A single scanner assigns players to zones each interval. - Folia-safe: the scanner dispatches each player's evaluation and sound playback to that player's region thread; a new global scheduler path in
SchedulerUtildrives the per-zone (and per-player, inindividualmode) track timers. Discs without a configured duration are skipped in zones (a zone needs durations to advance/loop).
- Three area types: a radius around a point (no dependencies), a named WorldGuard region (
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:SFWdW3tI:m6DtacSM"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:SFWdW3tI:m6DtacSM"
}

