promotional bannermobile promotional banner

BS CustomJukebox

Fully-featured Paper 1.21+ jukebox plugin with custom music discs, disc fragments, GUI support, and WorldGuard/GriefPrevention integration.

File Details

CustomJukebox-1.3.0.jar

  • R
  • Jan 1, 2026
  • 198.26 KB
  • 13
  • 1.21.11+11

File Name

CustomJukebox-1.3.0.jar

Supported Versions

  • 1.21.11
  • 1.21.10
  • 1.21.9
  • 1.21.8
  • 1.21.7
  • 1.21.6
  • 1.21.5
  • 1.21.4
  • 1.21.3
  • 1.21.2
  • 1.21.1
  • 1.21
## [1.3.0] - 2025-12-31

### Added
- **Public API for Plugin Developers**: New `CustomJukeboxAPI` class 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.json` with display name and description
  - Assign discs to categories using `"category"` field
  - Filter discs by category via API
  - Example categories: Ambient, Epic, Nature

- **Playlist System**: Group discs for sequential playback with automatic queue management
  - Create playlists in `disc.json` with list of disc IDs OR in-game with commands/GUI
  - Commands: `/cjb playlist list|info|play|create|delete|add|remove|rename|edit` for 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

- **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
  - **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
  - No more manual JSON editing for most operations!

- **Advanced Color System**: Full support for modern Minecraft color codes
  - **HEX Colors**: Use `&#RRGGBB` or `#RRGGBB` format (e.g., `&#FF5555` for 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
  - **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 `ColorUtil` class handles all color processing
  - Better user guidance in all wizards and editors

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

- **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: `PlaylistSubcommand` with 9 actions (list/info/play/create/delete/add/remove/rename/edit)
- **New GUIs**:
  - `AdminGUI` - Main admin panel with navigation to all management functions
  - `DiscCreationWizard` - 7-step chat wizard for disc creation with validation
  - `DiscEditorGUIv2` - 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 interface
  - `CategoryCreationWizard` - 3-step chat wizard for category creation
  - `CategoryEditorGUI` - Visual category editor with chat input for text fields
  - Extended `GuiSubcommand` with 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
- **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)
- 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)