
BS CustomJukebox
Fully-featured Paper 1.21+ jukebox plugin with custom music discs, disc fragments, GUI support, and WorldGuard/GriefPrevention integration.
BS CustomJukebox 2.1.1
release21 февраля 2026 г.Нет описания изменений
BS CustomJukebox 2.1.0
release19 февраля 2026 г.[2.1.0] - 2026-02-18
Added
- Adventure API Integration: Migrated to modern Paper Adventure API
- New
AdventureUtilclass for unified text component handling - Full support for HEX colors, gradients, and MiniMessage format
- Better performance and future-proofing for Paper 1.21+
- New
Changed
- Modernized Text Handling: Core components now use Adventure API
CustomDisc.createItemStack()usesdisplayName()andlore()methodsDiscFragment.createItemStack()uses Adventure ComponentsJukeboxListenertitles and action bars use Adventure API- Player.sendTitle() → Title.title() with proper durations
- Player.sendActionBar() → Adventure Component-based
Fixed
-
Critical Playlist Bug: Fixed playlists stopping after first song
stopPlayback()now hasclearPlaylistQueueparameter- Playlist queue is preserved during auto-progression to next track
- Playlist queue is cleared only when manually stopping playback
- This was a critical bug preventing playlists from working correctly!
-
Resource Leak in UpdateChecker: Properly closes HTTP connections
- Added try-finally blocks with explicit connection.disconnect()
- Added proper BufferedReader closing
- Prevents resource exhaustion on update checks
Deprecated
- ColorUtil class marked as @Deprecated (but still functional)
- Kept for backwards compatibility
- New code should use
AdventureUtilinstead - Legacy ChatColor/BungeeCord API calls will be phased out
Technical
- Deprecation Warning Reduction: 70 → 1 warning (98.6% reduction)
- Migrated all ColorUtil.colorize() calls to AdventureUtil
- Replaced 7 internal deprecated method calls
- Only remaining warning: GriefPrevention external API (cannot be fixed)
- Adventure API bundled in Paper 1.21+ (no extra dependency needed)
- Full backwards compatibility maintained
- All existing features continue to work unchanged
Migration Notes
- Plugin users: No action required - update is fully compatible
- Plugin developers using API: Consider migrating to AdventureUtil for new code
- All color codes (&a, &#RRGGBB, gradients) continue to work as before
BS CustomJukebox 2.0.0
release6 января 2026 г.[2.0.0] - 2026-01-06
Added
- Folia Support: Full compatibility with Folia (region-threaded) servers
- Added
folia-supported: trueflag in plugin.yml - New
SchedulerUtilclass for cross-platform scheduler abstraction - Automatic detection of Folia vs Paper/Spigot at runtime
- Uses reflection to call Folia API without compile-time dependency
- Region scheduler for location-based tasks
- Entity scheduler for player/entity-specific tasks
- Async scheduler for background operations
- All 26 scheduler calls migrated to use SchedulerUtil
- Added
Fixed
-
Folia Scheduler Bug: Fixed UnsupportedOperationException when running on Folia servers
- Corrected all reflection API calls to use proper Folia methods
runLater()now usesBukkit.getRegionScheduler().runDelayed()run()now usesBukkit.getRegionScheduler().run()runAsync()now usesBukkit.getAsyncScheduler().runNow()runAsyncLater()now usesBukkit.getAsyncScheduler().runDelayed()
-
Sound Key Validation: Removed strict validation that rejected valid sound keys
- Now accepts both
namespace:keyformat (e.g.,customjukebox:epic_journey) - AND legacy
music_disc.nameformat (e.g.,music_disc.traeumer) - Validation errors for 18 discs resolved
- Now accepts both
-
ConfigManager NullPointerException: Fixed initialization crash
- Removed
isDebug()check increateBackup()method during initialization - Plugin now starts without errors
- Removed
-
PlaybackManager NullPointerException: Fixed task storage crash on Folia
- Added null checks before storing tasks in ConcurrentHashMap
- Folia tasks return null (expected behavior) - now handled gracefully
- Fixed in both
scheduleAutoStop()andscheduleLoopTask()methods
Technical
- New
SchedulerUtilclass with Folia detection viaio.papermc.paper.threadedregions.RegionizedServer - Uses Java reflection to avoid compile-time Folia dependency
- Fallback to Paper scheduler if reflection fails
- All scheduler methods return nullable
BukkitTask(null on Folia) - Enhanced error logging for scheduler failures
- Full backwards compatibility with Paper/Spigot servers
Migration Notes
- Plugin now works on both Folia AND Paper/Spigot servers
- No configuration changes required
- Automatic server type detection
- Zero performance impact on Paper/Spigot servers
BS CustomJukebox 1.3.0
release1 января 2026 г.[1.3.0] - 2025-12-31
Added
-
Public API for Plugin Developers: New
CustomJukeboxAPIclass allows other plugins to interact with CustomJukebox- Access to all discs, fragments, categories, and playlists
- Playback control methods
- Configuration access
- Integration checks (WorldGuard, GriefPrevention)
- Full JavaDoc documentation
-
Disc Categories System: Organize discs by theme or genre
- Define categories in
disc.jsonwith display name and description - Assign discs to categories using
"category"field - Filter discs by category via API
- Example categories: Ambient, Epic, Nature
- Define categories in
-
Playlist System: Group discs for sequential playback with automatic queue management
- Create playlists in
disc.jsonwith list of disc IDs OR in-game with commands/GUI - Commands:
/cjb playlist list|info|play|create|delete|add|remove|rename|editfor full control - In-Game Management: Create and edit playlists without touching config files
- GUI Editor: Visual playlist editor with click-to-add/remove interface
- Integrated into Admin GUI for centralized management
- Automatic progression: Plays next disc when current finishes
- Loop support: Endless playlist playback with
/cjb playlist play <name> loop - Queue management: Tracks current position and handles transitions
- Auto-save: All changes instantly saved to
disc.json - Perfect for events, ambient music, or themed collections
- Create playlists in
-
Admin GUI System: Comprehensive in-game administration interface
- Main Admin Panel: Accessible via
/cjb gui(Admin button at bottom for OPs) - Disc Creation Wizard: 7-step chat wizard for creating new discs
- Step-by-step guidance through all fields (ID, name, author, sound, duration, category, model data)
- Input validation at each step (ID format, sound key syntax, numeric values)
- Shows existing categories during creation
- Summary preview before final creation
- Auto-save to
disc.json
- Disc Editor: Hybrid GUI/Chat system for editing existing discs
- GUI Selectors for numeric values:
- Duration selector with presets (30s, 60s, 90s... up to 600s) + custom input
- Custom Model Data selector (1-20) + custom input
- Category selector showing all categories + create new option
- Chat Input for text fields (Display Name, Author, Sound Key)
- All changes auto-save immediately
- Delete confirmation dialog for safety
- GUI Selectors for numeric values:
- Playlist Management: Full playlist CRUD operations via GUI
- Create new playlists (chat-based for now)
- Edit playlists with visual disc selector (click to add/remove)
- Delete playlists with confirmation
- Live status indicators (✔ In playlist)
- Category Management: Organize discs by categories
- Category Creation Wizard: 3-step chat wizard for creating categories
- ID input with validation (lowercase, no spaces)
- Display Name with full color support (legacy, HEX, gradients)
- Optional description field
- Summary confirmation before creation
- Category Editor GUI: Visual editor for existing categories
- Edit display name with advanced color support
- Edit description with color codes
- Live preview of changes
- Auto-save to
disc.json
- Create and delete categories
- View disc count per category
- Easy category assignment via selector in disc editor
- Category Creation Wizard: 3-step chat wizard for creating categories
- No more manual JSON editing for most operations!
- Main Admin Panel: Accessible via
-
Advanced Color System: Full support for modern Minecraft color codes
- HEX Colors: Use
&#RRGGBBor#RRGGBBformat (e.g.,&#FF5555for red) - Gradient Support: Create color gradients with
<gradient:#START:#END>text</gradient>- Example:
<gradient:#FF0000:#0000FF>Epic Soundtrack</gradient>creates red-to-blue gradient - Automatically interpolates colors across each character
- Example:
- Legacy Codes: Still supports standard codes (
&a,&b,&c, etc.) - Formatting: Bold (
&l), italic (&o), underline (&n), strikethrough (&m) - Works Everywhere: Display names, authors, descriptions, categories, lore
- New
ColorUtilclass handles all color processing - Better user guidance in all wizards and editors
- HEX Colors: Use
-
bStats Metrics Integration: Anonymous plugin statistics
- Track plugin usage and feature adoption
- Custom charts for language, integrations, and feature usage
- Helps improve plugin development
- Fully privacy-respecting (configurable via bStats)
-
PlaceholderAPI Support: 15+ placeholders for use in other plugins
%customjukebox_version%- Plugin version%customjukebox_total_discs%- Total number of custom discs%customjukebox_hand_disc_name%- Name of disc in main hand%customjukebox_hand_disc_author%- Author of disc in hand%customjukebox_volume%- Current playback volume- And many more! See API documentation for full list
-
Configurable Jukebox Hearing Radius: New config option
playback.jukebox-hearing-radius- Default: 64 blocks
- Controls how far players can see disc title/actionbar when disc is inserted
- Separate from sound playback radius (controlled by volume)
Changed
-
Improved Tab-Completion: Commands now suggest disc display names in addition to IDs
- Works for
/cjb give,/cjb info,/cjb play,/cjb fragment - Automatically strips color codes for better matching
- More user-friendly for admins
- Works for
-
Enhanced CustomDisc Model: Added category field support
- Discs can now be assigned to categories
- Backwards compatible (category is optional)
-
Updated Dependencies:
- Added bStats 3.1.0
- Added PlaceholderAPI 2.11.6 (soft-dependency)
Fixed
-
Color Codes in Author Field: Author field now properly supports color codes
- Previously, color codes in author field were not processed
- Now supports legacy codes (
&a-&f), HEX colors (&#FF5555), and gradients - Resolves user report about non-working color codes in author field
-
Update Checker Version Comparison: Fixed false "update available" notifications
- Previously used string comparison instead of semantic versioning
- Would incorrectly show "1.0.1" as newer than "1.3.0"
- Now properly compares versions numerically (1.3.0 > 1.0.1)
- Added support for development versions (shows "development version" message)
- Handles version suffixes like "-SNAPSHOT" correctly
-
Category Management TODOs: Completed all category management features
- Category creation wizard now fully implemented (previously TODO)
- Category editor GUI now fully functional (previously TODO)
- All category operations work seamlessly through Admin GUI
Technical
- New model classes:
DiscCategory,DiscPlaylist - Extended DiscManager with full CRUD methods for discs, playlists, and categories
- Added PlaybackManager queue system for automatic disc progression
- New command:
PlaylistSubcommandwith 9 actions (list/info/play/create/delete/add/remove/rename/edit) - New GUIs:
AdminGUI- Main admin panel with navigation to all management functionsDiscCreationWizard- 7-step chat wizard for disc creation with validationDiscEditorGUIv2- Hybrid GUI/Chat editor with selector menus- Duration selector with preset values
- Custom Model Data selector (1-20)
- Category selector with create option
PlaylistEditorGUI- Visual playlist editor with click-to-add/remove interfaceCategoryCreationWizard- 3-step chat wizard for category creationCategoryEditorGUI- Visual category editor with chat input for text fields- Extended
GuiSubcommandwith admin button integration
- New Utilities:
ColorUtil- Advanced color processing with HEX and gradient support- Replaces basic
ChatColor.translateAlternateColorCodes()throughout plugin - Supports legacy codes, HEX colors, and gradients
- Used by all managers and GUIs for consistent color handling
- Replaces basic
- Enhanced UpdateChecker:
- Semantic versioning comparison with
compareVersions()method - Proper handling of version parts (major.minor.patch)
- Support for version suffixes (e.g., "-SNAPSHOT")
- Three-way comparison (older/equal/newer)
- Semantic versioning comparison with
- Auto-save system: All changes persist to disc.json immediately
- Wizard pattern for guided multi-step processes
- Selector pattern for numeric value selection with presets
- Added PlaceholderAPIExpansion for PAPI integration
- Improved modular architecture for future extensions
- All new features fully documented with JavaDoc
Commands Added
/cjb playlist list- List all available playlists/cjb playlist info <playlist>- Show playlist details and track list/cjb playlist play <playlist> [loop]- Play playlist with optional looping/cjb playlist create <id> [display name]- Create new playlist in-game/cjb playlist delete <playlist>- Delete existing playlist/cjb playlist add <playlist> <disc>- Add disc to playlist/cjb playlist remove <playlist> <disc>- Remove disc from playlist/cjb playlist rename <old-id> <new-id>- Rename playlist ID/cjb playlist edit <playlist>- Open GUI editor for playlist management
Permissions Added
customjukebox.playlist- Allows managing and playing playlists (default: op)
BS CustomJukebox 1.2.4
release24 декабря 2025 г.[1.2.4] - 2025-12-23
Fixed
-
Documentation: Corrected
sounds.jsonformat in README and example resource pack- Sound event keys now use proper format:
music_disc.<disc_id>(e.g.,music_disc.epic_journey) - Sound file paths now use relative paths without namespace (e.g.,
custom/music/epic_journey) - Updated all example configurations to match working server format
- Removed unnecessary subtitle fields from examples
- Sound event keys now use proper format:
-
Example Configuration: Updated default
disc.jsonwith correct sound key format- Changed from
customjukebox:*tominecraft:music_disc.*format - All three example discs now use consistent, working configuration
- Matches the format validated on production servers
- Changed from
Changed
- Resource Pack Documentation: Improved clarity in sounds.json setup instructions
- Added clear explanation of sound event key format
- Documented correct file path structure for .ogg files
- Updated Important Notes section with accurate format information
