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
[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_MINIMALpreset 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, defaultfalse),battleBleedEnabled->crossDimensionBleedEnabled,battleBleedLowPassStrength->crossDimensionLowPassStrength - Combat Timeout Default:
combatTimeoutSecondsdefault 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_OFFSETalready 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) battleFadeProgresscrossfade factor composable with existing crossfade logicsetBattleActive()/playBattleLocal()/stopBattleLocal()in AudioPlayerisStreamingGlobalandcurrentBattleSongIdtracking in ClientNetworking for independent pipeline management- Silent
NowPlayingprocessing during battle (global stream changes without HUD/chat updates) - Virtual playhead:
playheadEpochMs+totalDurationMswith modulo wrapping in BattlePlaylist StartResult(track, offsetMs)data class for battle start with seek offsetbattleStartTimeMsoffset trick for seamless integration with existingtick()timer- Low-pass filter applies to both global and battle sources
UrlValidatorobject: shared validation with hardcoded domain whitelist (YouTube, SoundCloud, Bandcamp, Vimeo), scheme enforcement (http/https), and 2048-char length cap

