Battle Music Crescendo
Minecraft 1.21.x · Client-side adaptive combat music · Custom music packs · In-game editor · Optional server sync · Mob Battle Music pack format supported
Author: MickDev
What this mod actually does (under the hood)
Battle Music Crescendo is not a single looping track. Every second it:
- Scans your world around you (hostile mobs, bosses, PvP, health, biomes, structures).
- Scores combat intensity and picks a mood (exploration → tension → combat → intense → boss → PvP → critical danger).
- Resolves priority so real danger always beats ambient fluff.
- Selects the best matching track from your enabled music packs (JSON rules + conditions).
- Crossfades between tracks with configurable fade in/out.
- Silences vanilla Minecraft music while your custom music plays (optional).
- Plays victory stings when combat ends (optional).
All audio runs on your client only. Other players hear their own music (or vanilla). The server never needs your .ogg files.
Features at a glance
| Feature |
Details |
| Track moods |
Exploration, tension, light combat, intense combat, boss, PvP, victory, critical danger, ambient, menu (title screen), scripted |
| Music packs |
Folder packs in battlemusiccrescendo_musicpacks/ — enable them like resource packs |
| Pack editor |
Create, edit, preview, export .zip, import packs, Load example pack (full template) |
| JSON tracks |
One .json per track + matching .ogg in sounds/music/ |
| Conditions |
Biomes, dimensions, structures, entity ids, entity tags, min enemy count, boss, PvP, low health, screen (title for main menu) |
| Mob Battle Music |
Import packs using assets/mobbattlemusic/music_tracks/ (mob_specific, mob_list, mob_tag, player_specific) |
| Multiplayer |
Client-only on any server — no server mod required |
| Server sync |
Optional: install on server too for slightly better combat detection |
| Config screen |
Volume, detection, fades, debug overlay, menu music, mute vanilla |
| Debug overlay |
Live state, track id, priority, enemy count, intensity |
Compatibility
| Setup |
Result |
| Single-player |
Full features |
| Multiplayer — mod only on your client |
Works — local mob detection |
| Multiplayer — mod on client + server |
Works — optional combat sync packets |
| Hybrid servers (Mohist, etc.) |
Client fallback detection; no server mod required |
| Mob Battle Music packs |
Drop JSON + OGG into your BMC music pack (see tutorial below) |
Minecraft version: 1.21.x
Complete tutorial
Follow these steps in order the first time you use the mod. After that, you only tweak packs or add new .ogg files.
Part 1 — Install and open settings
- Install Battle Music Crescendo on your Minecraft client (1.21.x).
- Launch the game and join a world (single-player is fine for testing).
- Open Options → Controls and find the category Battle Music Crescendo:
- Open config (default
B) — main settings screen
- Toggle debug (default
F8) — on-screen combat/music debug
- Test music (unbound) — plays a test track if packs are loaded
- Open Options → Music & Sound (or the mod config via
B / Mods list).
- Click Music packs… (placed near skin/resource pack buttons).
You do not need the mod on a dedicated server to hear music.
Part 2 — Load the example pack (recommended)
The mod ships a full ExamplePack template. Use the in-game editor so you never start from an empty folder.
- From the main menu or in-game, open the music pack UI:
- Options → Music packs…, then Music Pack editor,
or use the editor shortcut from the mod config screen.
- In the editor (left column), click Load example pack.
- You should see 12 tracks in the list, for example:
tension_near, combat_light, combat_intense, boss_dark, pvp_duel, victory_sting, critical_danger, ambient_forest, ambient_stronghold, menu_title, exploration_calm, scripted_example
- Click Open pack folder — Windows Explorer opens your pack directory.
Default folder (game directory):
battlemusiccrescendo_musicpacks/ExamplePack/
- Click Reload packs in the editor after any file change.
Important: Loading the example pack creates JSON + sounds.json only. You still add your own music files (next part).
Part 3 — Add your music files (.ogg)
Each track JSON references an ogg_file. Put the matching file here:
battlemusiccrescendo_musicpacks/ExamplePack/assets/battlemusiccrescendo/sounds/music/
| Track JSON |
Put this file in sounds/music/ |
tension_near.json |
tension.ogg |
combat_light.json |
combat_light.ogg |
combat_intense.json |
combat_intense.ogg |
boss_dark.json |
boss_dark.ogg |
pvp_duel.json |
pvp.ogg |
victory_sting.json |
victory.ogg |
critical_danger.json |
defeat.ogg |
ambient_forest.json |
ambient_forest.ogg |
ambient_stronghold.json |
ambient_stronghold.ogg |
menu_title.json |
menu_title.ogg |
exploration_calm.json |
exploration.ogg |
scripted_example.json |
scripted_event.ogg |
Tips:
- Use
.ogg (Vorbis), stereo, streamed music quality.
- File names must match
ogg_file in the JSON exactly.
- You can use the same
.ogg for several tracks if you want (duplicate the file with different names).
After copying files:
- Return to the game.
- Music packs… → enable ExamplePack (move it to Selected).
- In the editor, click Reload packs.
- Press Play on a track to preview, or spawn mobs to test live.
Part 4 — Enable the pack in-game
- Options → Music packs…
- Left list: Available Music Packs — select
ExamplePack (or your pack name).
- Click the arrow to move it to Selected Music Packs.
- Close the screen — the game reloads pack resources automatically.
- Optional: enable Menu test music in mod config to hear
menu_title.ogg on the main menu (screen condition title).
If you hear nothing:
- Confirm
.ogg files exist in sounds/music/.
- Confirm the pack is selected, not only present on disk.
- Click Reload packs in the editor.
- Enable Debug overlay (
F8) and check Playing: true and State: when near mobs.
Part 5 — Test combat music in a world
- Enable Debug overlay (
F8 or config).
- Set Detection range to at least
48 blocks in config (default).
- In Creative or Survival, spawn or find hostile mobs within range.
- Watch the overlay:
- State should move:
exploration → tension → light_combat / intense_combat when you fight.
- Playing should be
true when a track matches.
- Kill mobs and leave combat — a short victory track may play (if enabled in common config).
- Take damage below the critical health threshold — defeat / danger music can play.
Boss music: spawn a high-HP mob or use the boss: true condition in JSON (see Part 7).
PvP: fight another player with PvP music enabled in config.
Part 6 — Music Pack Editor (create your own tracks)
Open Music Pack editor from the music packs screen or mod config.
| Button |
What it does |
| Load example pack |
Installs/refreshes all 12 example JSON files + Mob Battle Music samples + README |
| Open pack folder |
Opens battlemusiccrescendo_musicpacks/ExamplePack/ in your file manager |
| New track |
Creates a blank JSON you edit and save |
| Save |
Writes the current track JSON to disk |
| Play / Stop |
Preview the selected track |
| Reload packs |
Reloads resources so new sounds are registered |
| Export zip |
Exports the pack folder as a shareable .zip |
| Import .zip pack(s) |
Extracts zip packs into battlemusiccrescendo_musicpacks/ |
Editor fields (right panel)
| Field |
Meaning |
| Id |
Unique track id, e.g. battlemusiccrescendo:my_boss |
| Ogg file |
File name in sounds/music/, e.g. my_boss.ogg |
| Type |
tension, combat, intense, boss, pvp, victory, defeat, ambient, menu, exploration, scripted |
| Priority |
Higher number wins when multiple tracks match (boss > combat > tension) |
| Dimensions / Biomes / Structures |
Comma-separated ids — track only plays when matched |
| Entity tags |
e.g. minecraft:skeletons |
| Min enemies |
Minimum hostile count required |
| Boss / PvP / Critical |
Toggle condition flags |
After Save, click Reload packs. The mod rebuilds sounds.json from your JSON files automatically.
Part 7 — Track JSON reference (manual editing)
Folder:
assets/battlemusiccrescendo/music_tracks/my_track.json
Minimal example:
{
"id": "battlemusiccrescendo:my_track",
"ogg_file": "my_track.ogg",
"type": "combat",
"priority": 30,
"fade_in_ticks": 60,
"fade_out_ticks": 80,
"loop": true,
"conditions": {
"min_enemy_count": 1
}
}
type values
| type |
When it plays |
exploration |
Calm — no real threat |
tension |
Enemies nearby, not full combat |
combat |
Light combat |
intense |
Many enemies / heavy fight |
boss |
Boss detected or boss: true condition |
pvp |
Fighting players |
victory |
One-shot after combat ends |
defeat |
Critical low health |
ambient |
Biome/structure ambience override |
menu |
Main menu (conditions.screen: "title") |
scripted |
Custom scripted/event use |
conditions (all optional)
"conditions": {
"dimensions": ["minecraft:overworld", "minecraft:the_nether"],
"biomes": ["minecraft:deep_dark"],
"structures": ["minecraft:stronghold"],
"entities": ["minecraft:wither"],
"entity_tags": ["minecraft:skeletons"],
"min_enemy_count": 4,
"boss": true,
"pvp": true,
"critical_health": true,
"screen": "title"
}
ogg_file is the main reference — the sound id is derived from the file name (without .ogg).
- Do not rely on copyrighted placeholder names in packs you publish; use your own file names.
Part 8 — Mob Battle Music compatible packs
You can reuse the track format from Mob Battle Music inside your BMC pack.
Folder:
assets/mobbattlemusic/music_tracks/
Example — zombie aggro track:
{
"type": "mob_specific",
"sound": "mobbattlemusic:aggro_track",
"priority": 30,
"fade_time": 40,
"group": "attacking",
"selector": "any",
"mob": "minecraft:zombie"
}
Place audio:
assets/mobbattlemusic/sounds/aggro_track.ogg
assets/mobbattlemusic/sounds/non_aggro_track.ogg
assets/mobbattlemusic/sounds/player_track.ogg
Supported types: mob_specific, mob_list, mob_tag, player_specific, player_specific_uuid.
The example pack includes three sample JSON files. Load example pack in the editor copies them for you.
Part 9 — Multiplayer and servers
| Your setup |
What to do |
| Play on a vanilla-like server without the mod |
Install BMC only on your client — music works via local detection |
| Play on a server with the mod |
Optional better sync; same music packs on your client |
| Host your own server |
Server mod is optional — not required for players to hear music |
Network sync is optional. If the server does not have the mod, the client never disconnects because of missing channels.
Part 10 — Configuration files
| File |
Location |
| Common |
config/battlemusiccrescendo-common.toml |
| Client |
config/battlemusiccrescendo-client.toml |
Common (shared logic)
| Option |
Purpose |
enabled |
Master switch |
detectionRange |
Mob scan radius (blocks) |
bossDetectionRange |
Boss scan radius |
fadeInTicks / fadeOutTicks / crossfadeTicks |
Default transitions |
minMobsForBattle / minMobsForIntense |
Thresholds for combat moods |
pvpMusic / victoryMusic |
Enable PvP and victory stings |
allowServerSync |
Use server combat packets when available |
allowClientOnlyFallback |
Local detection when server has no mod |
blacklistDimensions / whitelistDimensions |
Limit where music runs |
entityBlacklist / entityWhitelist |
Filter which mobs count |
Client
| Option |
Purpose |
battleVolume |
Your battle music volume (0.0–1.0) |
showDebugOverlay |
On-screen debug |
muteVanillaDuringCombat |
Stop vanilla background music while mod music plays |
menuTestMusic |
Play menu track on title screen |
In-game: Mods → Battle Music Crescendo → Config or keybind B.
Part 11 — Sharing a pack (.zip)
- Build your pack under
battlemusiccrescendo_musicpacks/MyPack/.
- Include:
pack.mcmeta
assets/battlemusiccrescendo/music_tracks/*.json
assets/battlemusiccrescendo/sounds/music/*.ogg
- Optional:
assets/mobbattlemusic/...
- In the editor, Export zip.
- Others use Import .zip pack(s) and enable the pack in Music packs….
Troubleshooting
| Problem |
Fix |
| No music at all |
Enable pack in Selected; add .ogg files; Reload packs |
| Only one track in editor |
Click Load example pack again (refreshes all 12 JSON files) |
Sound ... not loaded in log |
Missing .ogg or wrong file name vs ogg_file |
| Menu music silent |
Add menu_title.ogg; enable Menu test music; pack selected |
| Vanilla music overlaps |
Enable mute vanilla during combat in client config |
| Music on server requires mod |
False — install on client only |
| Combat feels late |
Increase detectionRange; install mod on server for sync |
| JSON error in log |
Each track needs ogg_file (or sound) + type |
Enable debug overlay (F8) while testing — it shows the live combat state, selected track, and whether audio is playing.
inspiration
Combat music concept inspired by the goals of [Mob Battle Music] By:nonamecrackers2. Battle Music Crescendo adds its own priority system, pack editor, menu tracks, victory/critical layers, and optional server sync.