战斗音乐渐强

战斗音乐渐强

让玩家在与敌对生物和玩家战斗时添加背景音乐的模组以及其他功能。

冒险

战斗音乐渐强

Minecraft 1.21.x · 客户端侧 自适应战斗音乐 · 自定义音乐包 · 游戏内编辑器 · 可选的服务器同步 · 支持怪物战斗音乐包格式

作者: MickDev


这个模组实际上做了什么(底层机制)

战斗音乐渐强并非单一循环音轨。它每秒钟都会:

  1. 扫描你周围的世界(敌对生物、Boss、PvP、生命值、生物群系、结构)。
  2. 评分战斗强度并选取一种氛围(探索 → 紧张 → 战斗 → 激烈 → Boss → PvP → 致命危险)。
  3. 处理优先级,确保真正的危险始终压倒环境装饰音。
  4. 选择已启用的音乐包中最匹配的音轨(JSON 规则 + 条件)。
  5. 以可配置的淡入/淡出在音轨之间交叉淡变。
  6. 静音原版 Minecraft 音乐,同时播放你的自定义音乐(可选)。
  7. 战斗结束时播放胜利音效(可选)。

所有音频仅在你的客户端上运行。其他玩家听到自己的音乐(或原版音乐)。服务器永远不需要你的 .ogg 文件。


功能一览

功能 详情
音轨氛围 探索、紧张、轻度战斗、激烈战斗、Boss、PvP、胜利、致命危险、环境、菜单(标题画面)、脚本触发
音乐包 位于 battlemusiccrescendo_musicpacks/ 的文件夹包 — 像资源包一样启用它们
包编辑器 创建、编辑、预览、导出 .zip、导入包、加载示例包(完整模板)
JSON 音轨 每首音轨一个 .json 文件 + 匹配的 .ogg 文件位于 sounds/music/
条件 生物群系、维度、结构、实体 ID、实体标签、最小敌人数、Boss、PvP、低生命值、屏幕(title 用于主菜单)
怪物战斗音乐 使用 assets/mobbattlemusic/music_tracks/ 导入包(mob_specific、mob_list、mob_tag、player_specific)
多人游戏 任何服务器上仅客户端 — 无需服务器模组
服务器同步 可选:也安装到服务器上以获得稍好的战斗检测
配置界面 音量、检测、淡变、调试覆盖、菜单音乐、静音原版
调试覆盖 实时状态、音轨 ID、优先级、敌人数、强度

兼容性

设置 结果
单人游戏 完整功能
多人游戏 — 模组仅在你的客户端上 有效 — 本地生物检测
多人游戏 — 模组在客户端 + 服务器上 有效 — 可选的战斗同步数据包
混合服务器(Mohist 等) 客户端回退检测;无需服务器模组
怪物战斗音乐包 将 JSON + OGG 放入你的 BMC 音乐包(见下文教程)

Minecraft 版本: 1.21.x


完整教程

首次使用模组时,请按顺序执行以下步骤。之后,你只需调整包或添加新的 .ogg 文件。


第 1 部分 — 安装并打开设置

  1. 在你的 Minecraft 客户端(1.21.x)上安装战斗音乐渐强。
  2. 启动游戏并加入一个世界(单人游戏适合测试)。
  3. 打开 选项 → 控制 并找到类别 战斗音乐渐强:
    • 打开配置(默认 B)— 主设置界面
    • 切换调试(默认 F8)— 屏幕上的战斗/音乐调试信息
    • 测试音乐(未绑定)— 如果已加载包,则播放测试音轨
  4. 打开 选项 → 音乐和声音(或通过 B / 模组列表打开模组配置)。
  5. 点击 音乐包...(位于皮肤/资源包按钮附近)。

你不需要在专用服务器上安装此模组即可听到音乐。


第 2 部分 — 加载示例包(推荐)

该模组附带了一个完整的 ExamplePack 模板。使用游戏内编辑器,这样你永远不必从空文件夹开始。

  1. 从主菜单或游戏内,打开音乐包界面:
    • 选项 → 音乐包...,然后 音乐包编辑器, 或 从模组配置界面使用编辑器快捷键。
  2. 在编辑器中(左侧栏),点击 加载示例包。
  3. 你应该会在列表中看到 12 首音轨,例如:
    • tension_near,combat_light,combat_intense,boss_dark,pvp_duel,victory_sting,critical_danger,ambient_forest,ambient_stronghold,menu_title,exploration_calm,scripted_example
  4. 点击 打开包文件夹 — 资源管理器会打开你的包目录。

默认文件夹(游戏目录):

battlemusiccrescendo_musicpacks/ExamplePack/
  1. 任何文件更改后,在编辑器中点击 重新加载包。

重要: 加载示例包只会创建 JSON + sounds.json。你还需要添加你自己的音乐文件(下一部分)。


第 3 部分 — 添加你的音乐文件 (.ogg)

每首音轨 JSON 都引用一个 ogg_file。将匹配的文件放在这里:

battlemusiccrescendo_musicpacks/ExamplePack/assets/battlemusiccrescendo/sounds/music/
音轨 JSON 将此文件放入 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

提示:

  • 使用 .ogg(Vorbis),立体声,流式音乐质量。
  • 文件名必须与 JSON 中的 ogg_file 完全匹配。
  • 如果你愿意,可以为多个音轨使用同一个 .ogg 文件(用不同名称复制文件)。

复制文件后:

  1. 返回游戏。
  2. 音乐包... → 启用 ExamplePack(将其移至已选)。
  3. 在编辑器中,点击 重新加载包。
  4. 在音轨上点击播放进行预览,或生成生物以实时测试。

第 4 部分 — 在游戏中启用包

  1. 选项 → 音乐包...
  2. 左侧列表:可用音乐包 — 选择 ExamplePack(或你的包名)。
  3. 点击箭头将其移至已选音乐包。
  4. 关闭界面 — 游戏会自动重新加载包资源。
  5. 可选:在模组配置中启用菜单测试音乐,以在主菜单上听到 menu_title.ogg(屏幕条件 title)。

如果听不到任何声音:

  • 确认 .ogg 文件存在于 sounds/music/ 中。
  • 确认该包已被选择,而不仅仅存在于磁盘上。
  • 在编辑器中点击重新加载包。
  • 启用调试覆盖 (F8) 并在附近有生物时检查 Playing: true 和 State:。

第 5 部分 — 在一个世界中测试战斗音乐

  1. 启用调试覆盖 (F8 或配置)。
  2. 将检测范围设置为至少 48 个方块(默认配置)。
  3. 在创造模式或生存模式下,生成或找到范围内的敌对生物。
  4. 观察覆盖信息:
    • State 应移动:exploration → tension → light_combat / intense_combat(当你战斗时)
    • 当音轨匹配时,Playing 应为 true。
  5. 杀死生物并离开战斗 — 可能会播放一个简短的胜利音轨(如果在公共配置中启用)。
  6. 受到低于临界生命值阈值的伤害 — 可能会播放失败/危险音乐。

Boss 音乐: 生成一个高生命值的生物,或在 JSON 中使用 boss: true 条件(见第 7 部分)。

PvP: 与另一名玩家战斗,并在配置中启用 PvP 音乐。


第 6 部分 — 音乐包编辑器(创建你自己的音轨)

从音乐包界面或模组配置中打开音乐包编辑器。

按钮 作用
加载示例包 安装/刷新所有 12 个示例 JSON 文件 + 怪物战斗音乐样本 + README
打开包文件夹 在文件管理器中打开 battlemusiccrescendo_musicpacks/ExamplePack/
新建音轨 创建一个空白的 JSON 供你编辑和保存
保存 将当前音轨 JSON 写入磁盘
播放 / 停止 预览选定的音轨
重新加载包 重新加载资源以便注册新声音
导出 zip 将完整的音乐包导出为可共享的 .zip 文件
导入 .zip 包 将 zip 包解压到 battlemusiccrescendo_musicpacks/ 目录下

编辑器字段(右侧面板)

字段 含义
Id 唯一音轨 ID,例如 battlemusiccrescendo:my_boss
Ogg 文件 位于 sounds/music/ 的文件名,例如 my_boss.ogg
类型 tension、combat、intense、boss、pvp、victory、defeat、ambient、menu、exploration、scripted
优先级 当多首音轨匹配时,数字高的获胜(boss > combat > tension)
维度 / 生物群系 / 结构 逗号分隔的 ID — 仅在匹配时播放音轨
实体标签 例如 minecraft:skeletons
最小敌人数 所需的最小敌对生物数量
Boss / PvP / 临界 切换条件标志

保存后,点击重新加载包。模组会自动根据你的 JSON 文件重建 sounds.json。


第 7 部分 — 音轨 JSON 参考(手动编辑)

文件夹:

assets/battlemusiccrescendo/music_tracks/my_track.json

最小示例:

{
  "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 值

类型 播放时机
exploration 平静 — 无真正威胁
tension 敌人在附近,未完全进入战斗
combat 轻度战斗
intense 众多敌人 / 激烈战斗
boss 检测到 Boss 或 boss: true 条件
pvp 与玩家战斗
victory 战斗结束后播放一次
defeat 生命值极低
ambient 生物群系/结构环境音覆盖
menu 主菜单(conditions.screen:"title")
scripted 自定义脚本/事件使用

conditions(全部可选)

"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 是主要引用 — 声音 ID 从文件名派生(不带 .ogg)。
  • 在您发布的包中,不要使用受版权保护的占位符名称;请使用您自己的文件名。

第 8 部分 — 兼容怪物战斗音乐(Mob Battle Music)的包

您可以在您的 BMC 包中重用 怪物战斗音乐 的音轨格式。

文件夹:

assets/mobbattlemusic/music_tracks/

示例 — 僵尸攻击音轨:

{
  "type": "mob_specific",
  "sound": "mobbattlemusic:aggro_track",
  "priority": 30,
  "fade_time": 40,
  "group": "attacking",
  "selector": "any",
  "mob": "minecraft:zombie"
}

放置音频文件:

assets/mobbattlemusic/sounds/aggro_track.ogg
assets/mobbattlemusic/sounds/non_aggro_track.ogg
assets/mobbattlemusic/sounds/player_track.ogg

支持的类型:mob_specific、mob_list、mob_tag、player_specific、player_specific_uuid。

示例包包含三个示例 JSON 文件。在编辑器中加载示例包会为您复制它们。


第 9 部分 — 多人游戏和服务器

您的设置 应该怎么做
在没有该模组的类原版服务器上游玩 仅在你的客户端上安装 BMC — 音乐通过本地检测工作
在装有该模组的服务器上游玩 可选的更好同步;在您的客户端上使用相同的音乐包
托管您自己的服务器 服务器模组是可选的 — 玩家无需安装即可听到音乐

网络同步是可选的。如果服务器没有该模组,客户端永远不会因为缺少频道而断开连接。


第 10 部分 — 配置文件

文件 位置
公共 config/battlemusiccrescendo-common.toml
客户端 config/battlemusiccrescendo-client.toml

公共(共享逻辑)

选项 用途
enabled 主开关
detectionRange 生物扫描半径(方块)
bossDetectionRange Boss 扫描半径
fadeInTicks / fadeOutTicks / crossfadeTicks 默认过渡时间
minMobsForBattle / minMobsForIntense 战斗氛围的阈值
pvpMusic / victoryMusic 启用 PvP 和胜利音效
allowServerSync 可用时使用服务器战斗数据包
allowClientOnlyFallback 当服务器没有模组时进行本地检测
blacklistDimensions / whitelistDimensions 限制音乐播放的维度
entityBlacklist / entityWhitelist 过滤哪些生物计入统计

客户端

选项 用途
battleVolume 你的战斗音乐音量 (0.0–1.0)
showDebugOverlay 屏幕上的调试信息
muteVanillaDuringCombat 在模组音乐播放时停止原版背景音乐
menuTestMusic 在标题屏幕上播放菜单音轨

游戏内:模组 → 战斗音乐渐强 → 配置 或按键绑定 B。


第 11 部分 — 共享一个包 (.zip)

  1. 在 battlemusiccrescendo_musicpacks/MyPack/ 下构建您的包。
  2. 包括:
    • pack.mcmeta
    • assets/battlemusiccrescendo/music_tracks/*.json
    • assets/battlemusiccrescendo/sounds/music/*.ogg
    • 可选:assets/mobbattlemusic/...
  3. 在编辑器中,导出 zip。
  4. 其他人使用导入 .zip 包,然后在音乐包... 中启用该包。

故障排除

问题 解决方案
完全没有音乐 在已选中启用包;添加 .ogg 文件;重新加载包
编辑器中只有一首音轨 再次点击加载示例包(刷新所有 12 个 JSON 文件)
日志中显示 Sound ... not loaded 缺少 .ogg 文件,或文件名与 ogg_file 不匹配
菜单音乐无声 添加 menu_title.ogg;启用菜单测试音乐;包已选择
原版音乐重叠 在客户端配置中启用战斗时静音原版
需要服务器模组才能播放音乐 错误 — 仅客户端安装即可
战斗感觉滞后 增加 detectionRange;在服务器上安装模组以实现同步
日志中的 JSON 错误 每首音轨都需要 ogg_file(或 sound)+ type

测试时启用调试覆盖 (F8) — 它会显示实时战斗状态、选定的音轨以及音频是否正在播放。


灵感

战斗音乐概念灵感来源于 [怪物战斗音乐] 作者:nonamecrackers2 的目标。战斗音乐渐强添加了自己的优先级系统、包编辑器、菜单音轨、胜利/临界层以及可选的服务器同步。