▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/BS CustomJukebox
BS CustomJukebox

BS CustomJukebox

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

226
2

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 AdventureUtil class for unified text component handling
    • Full support for HEX colors, gradients, and MiniMessage format
    • Better performance and future-proofing for Paper 1.21+

Changed

  • Modernized Text Handling: Core components now use Adventure API
    • CustomDisc.createItemStack() uses displayName() and lore() methods
    • DiscFragment.createItemStack() uses Adventure Components
    • JukeboxListener titles 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 has clearPlaylistQueue parameter
    • 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 AdventureUtil instead
    • 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: true flag in plugin.yml
    • New SchedulerUtil class 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

Fixed

  • Folia Scheduler Bug: Fixed UnsupportedOperationException when running on Folia servers

    • Corrected all reflection API calls to use proper Folia methods
    • runLater() now uses Bukkit.getRegionScheduler().runDelayed()
    • run() now uses Bukkit.getRegionScheduler().run()
    • runAsync() now uses Bukkit.getAsyncScheduler().runNow()
    • runAsyncLater() now uses Bukkit.getAsyncScheduler().runDelayed()
  • Sound Key Validation: Removed strict validation that rejected valid sound keys

    • Now accepts both namespace:key format (e.g., customjukebox:epic_journey)
    • AND legacy music_disc.name format (e.g., music_disc.traeumer)
    • Validation errors for 18 discs resolved
  • ConfigManager NullPointerException: Fixed initialization crash

    • Removed isDebug() check in createBackup() method during initialization
    • Plugin now starts without errors
  • 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() and scheduleLoopTask() methods

Technical

  • New SchedulerUtil class with Folia detection via io.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 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)

BS CustomJukebox 1.2.4

release24 декабря 2025 г.

[1.2.4] - 2025-12-23

Fixed

  • Documentation: Corrected sounds.json format 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
  • Example Configuration: Updated default disc.json with correct sound key format

    • Changed from customjukebox:* to minecraft:music_disc.* format
    • All three example discs now use consistent, working configuration
    • Matches the format validated on production servers

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

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Сервер

Детали

Лицензия:MIT
Опубликован:2 месяца назад
Обновлён:1 неделю назад
Главная