BS-CustomJukebox Bedrock Extension
2.3.0Bedrock Edition support for BS-CustomJukebox via Geyser/Floodgate. Bridges custom disc sounds and items to Bedrock players.
2.3.0latestBS-CustomJukebox Bedrock Extension 2.3.0last week v2.3.0
Added
- Bedrock pack straight from the Java resource pack. At every start the extension fetches the pack the server sends (resource-packinserver.properties), takes each disc's sound and texture from it and builds the Bedrock pack — no copying.oggfiles, no/cjb-bedrock generate. Downloads are cached (sha1 / ETag);javaPackpoints elsewhere if the pack is sent another way. - Ambient zones on a category other thanRECORDSfollow the matching Bedrock volume slider.Fixed
- New discs stayed silent on Bedrock until someone ran `/cjb-bedrock generate`. The pack is now rebuilt at startup, before Geyser reads it. - `/cjb-bedrock generate` overwrote the pack Geyser was serving, handing joining clients a file that no longer matched its checksum. Builds now go to a pending file that is put in place on the next start; the zip is written atomically. - Discs without a texture are no longer registered as Bedrock items with an empty icon; they show as their base disc. - Two legacy sound files with the same name in different folders are reported instead of silently picking one. - New config options are added to an existingconfig.json.2.2.0BS-CustomJukebox Bedrock Extension 2.2.0Aug 25, 2026 v2.2.0
Requires CustomJukebox 3.5.0+.Fixed
- Geyser accepted the listeners but never called them — no custom items were registered and the pack was never handed over, silently. Registration went througheventBus().register(owner, listener), which scans for@Subscribe; Geyser and Floodgate both ship that annotation class unrelocated and in different versions, so the copy this plugin resolves need not be the one Geyser's scanner compares against. Subscriptions now name the event class explicitly (eventBus().subscribe(owner, Event.class, handler)), which takes annotation identity out of the picture. Measured on a server with both plugins installed: the annotation path subscribed nothing, the explicit one registers every disc and the pack. Verified live on Paper 26.1.2 with Geyser 2.11.2 and Floodgate — Geyser's custom item count rose by the number of discs, the pack was accepted without a warning, and Bedrock players connected through the pack download. The startup log reports how many subscriptions Geyser actually holds, and warns with a fallback instruction if the answer is zero. - A regenerated pack never reached anyone. The manifest always claimed version1.0.0with the same UUIDs, so Bedrock kept serving every client the copy it had cached the first time. The pack version now tracks a fingerprint of its content (discs, sound keys, sound and texture files) and counts up whenever that changes, recorded inbedrock-pack/pack-revision.json. Unchanged content keeps its version, so nobody re-downloads for nothing. - Bedrock playback volume followed the debug flag. Sounds played at full volume withdebug: trueand at the configured volume otherwise. The player's effective volume — personal volume included — is now used in both cases. - Custom items were registered in a way that could never match. The definition was keyed to a model identifier no disc item carries, and had no predicate to tell discs sharing a base item apart. Definitions are now keyed to the base item's own model and matched by an exact predicate on the disc id incustom_model_data. - Only the start of a jukebox playback was bridged. Ambient zones, radio, players walking into range and/cjb music onall delivered the Java sound key to Bedrock clients — silence. The bridge now hooks CustomJukebox's per-player delivery events, which cover every path. - Bedrock players were cut out of their own playback. They were removed from the listener set to suppress the Java sound, which also cost them progress bar,/cjb skipand stop handling. Delivery is now cancelled per sound instead, so they stay ordinary listeners. - `soundPrefix` and `autoDeliverPack` did nothing. Both were documented and neither was read.soundPrefixnow names the Bedrock sounds in the pack and in playback alike;autoDeliverPackhands the generated.mcpackstraight to Geyser. - Textures were counted by re-scanning the source folder instead of counting what was actually copied, so unreadable files still showed up in the summary. -ignoreCancelledwas set on a non-cancellable event, the manifest javadoc claimed a format version the code doesn't write, and stack traces went toprintStackTraceinstead of the plugin logger.Added
- Automatic pack delivery — withautoDeliverPack(default on) the generated pack is registered with Geyser at startup; copying it intopacks/by hand is no longer needed./cjb-bedrock statusshows whether Geyser took it. - Folia support (folia-supported: true). All scheduling goes through CustomJukebox's scheduler abstraction, so the extension now loads on the same servers the main plugin does.2.1.0BS-CustomJukebox Bedrock Extension 2.1.0Jul 4, 2026 v2.1.0
- Unified release: one jar now supports Paper 1.21.4 through 26.x (matches CustomJukebox 3.1.0) - Built against Paper API 1.21.4 withapi-version: '1.21'and Java 21 bytecode — loads on 1.21.4+ servers (Java 21) and 26.x servers (Java 25) alike - Requires CustomJukebox 3.1.0+2.0.0BS-CustomJukebox Bedrock Extension 2.0.0May 6, 2026 v2.0.0
- Updated to Paper 26.1.2 (new versioning system) - Updated to Java 25 - Updated Geyser API to 2.10.0-SNAPSHOT - Updated Floodgate API to 2.2.5-SNAPSHOT - Updated Gradle to 9.5.01.1.0BS-CustomJukebox Bedrock Extension 1.1.0May 4, 2026 v1.1.0
- Added bStats metrics integration - UpdateChecker now filters by game version and loader via Modrinth API — users only see updates compatible with their Minecraft version - Fixed thread-safety issue in UpdateChecker (volatile fields)1.0.0BS-CustomJukebox Bedrock Extension 1.0.0May 2, 2026 v1.0.0 — Initial Release
- Bedrock sound bridging via Geyser — custom disc sounds are played to Bedrock players - Bedrock resource pack generator (/cjb-bedrock generate) — creates.mcpackwith manifest, sound definitions, and sound files - Custom item registration via Geyser Custom Items API v2 - Bedrock player detection via Floodgate API - Graceful no-op when Geyser or Floodgate is not installed - JSON-based configuration - Commands:/cjb-bedrock generate,reload,status,help- Modrinth update checker with join notifications
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Customizable Player Models
Customize your minecraft avatar!
3.2MSueta
LuckPerms
A permissions plugin/mod for Minecraft servers.
2.8MSueta