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-2.0.0.jar

  • R
  • Jan 6, 2026
  • 202.83 KB
  • 57
  • 1.21.11+11

File Name

CustomJukebox-2.0.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

[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