promotional bannermobile promotional banner

Diamond DJ

Server-wide synchronized music for your Minecraft server!

File Details

diamond-dj-1.6.1.jar

  • R
  • Feb 9, 2026
  • 32.52 MB
  • 31
  • 1.21.1
  • Fabric

File Name

diamond-dj-1.6.1.jar

Supported Versions

  • 1.21.1

Curse Maven Snippet

Fabric

modImplementation "curse.maven:diamond-dj-1455325:7597757"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

[1.6.1] - 2026-02-09

Added

  • Dual OpenAL Sources for Battle Music: Global stream runs muted on one OpenAL source while local OGG battle music plays on a dedicated second source; battle end fades back to stream instantly with no reconnection delay
  • Virtual Playhead for Battle Variety: Battle playlist continuously advances even when no battle is active; each fight starts at a different position in a different song, preventing the "same opening every fight" problem
  • Super Minimal HUD Preset: New SUPER_MINIMAL preset shows only the progress bar with no chat messages for song changes; now the default preset
  • URL Validation (Security): Defense-in-depth domain whitelist blocking SSRF, file:// access, and unsupported services at 5 checkpoints (playlist file, commands, resolver gate, client packet handler, packet length limit)

Changed

  • Join Playhead: Joining players in streaming mode now start the current song from the beginning instead of seeking to the server's elapsed position; sync aligns naturally when the next track starts
  • Battle Music in Streaming Mode: When enableBattleMusicInStreaming: true, battle music now uses a separate OpenAL source instead of interrupting the global stream; volume crossfades over ~1 second
  • HUD Preset Cycle: Updated to VERBOSE -> MINIMAL -> SUPER_MINIMAL -> NONE -> VERBOSE
  • Default HUD Preset: Changed from MINIMAL to SUPER_MINIMAL for a cleaner default experience
  • Battle Music Selection: Replaced simple "start from track #1" with virtual playhead; every battle starts at the point the playlist would have reached if playing continuously
  • Config Renames for Clarity: musicSource -> localMusicSource (only applies in local mode), battleMusicDisabledInStreaming -> enableBattleMusicInStreaming (positive boolean, default false), battleBleedEnabled -> crossDimensionBleedEnabled, battleBleedLowPassStrength -> crossDimensionLowPassStrength
  • Combat Timeout Default: combatTimeoutSeconds default increased from 6 to 12 seconds, giving battles more breathing room before music stops

Fixed

  • Battle OGG Not Playing in Streaming Mode: Download callback was comparing battle track ID against global stream ID, silently rejecting every download
  • Silence After Battle Ends: Server re-sync packet was restarting the stream instead of resuming the muted one; now detects same-song-already-playing and skips restart
  • Battle HUD Progress Bar Inaccuracy: AL_SEC_OFFSET already includes seek position on static buffers; removing double-counted offset fixes progress display

Technical

  • Dual OpenAL source architecture: source (global stream, buffer queue) + battleSource (local OGG, static buffer)
  • battleFadeProgress crossfade factor composable with existing crossfade logic
  • setBattleActive() / playBattleLocal() / stopBattleLocal() in AudioPlayer
  • isStreamingGlobal and currentBattleSongId tracking in ClientNetworking for independent pipeline management
  • Silent NowPlaying processing during battle (global stream changes without HUD/chat updates)
  • Virtual playhead: playheadEpochMs + totalDurationMs with modulo wrapping in BattlePlaylist
  • StartResult(track, offsetMs) data class for battle start with seek offset
  • battleStartTimeMs offset trick for seamless integration with existing tick() timer
  • Low-pass filter applies to both global and battle sources
  • UrlValidator object: shared validation with hardcoded domain whitelist (YouTube, SoundCloud, Bandcamp, Vimeo), scheme enforcement (http/https), and 2048-char length cap