跳到正文

The Immersive Music

作者:First_sight

A client-side music mod selected to match your biome and surroundings with smooth transitions.

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

Immersive Music

Let the soundtrack follow your journey.

Immersive Music brings 120 tracks inspired by fantasy, medieval, and Celtic music to your adventures. From open grasslands and quiet forests to deep caves and otherworldly dimensions, each setting has its own musical atmosphere. All included music was created by the author using Suno AI and is free to use.

The mod senses your biome type, dimension, temperature, time of day, light level, sky visibility, underwater status, and altitude. It combines these observations with each track’s conditions and weight to choose music that fits your surroundings. Biomes are identified through vanilla biome tags, so modded biomes with the appropriate tags can also be matched.

Enjoy a soundtrack throughout your session, from the main menu to world exploration, with smooth fades between tracks. Menu music is chosen randomly and plays to completion before the next selection. Once you enter a world, music is selected to suit the environment. You can also disable early switching to let each track finish before the mod chooses the next one.

Features

  • Music that responds to your surroundings: Distinct moods for mornings, nights, the surface, caves, and underwater exploration.
  • 120 fantasy and Celtic tracks: Peaceful, mysterious, and somber music for exploring, building, and wandering.
  • Smooth transitions: Configurable fades, with a default duration of two seconds.
  • Compatibility with other music: Replaces vanilla background music and fades out when another mod plays music through the music channel.
  • A customizable music pool: Edit the music pool JSON to add your own tracks, define where they can play, and adjust their preferences and selection weights.

Custom Music and JSON Configuration

The music pool currently loads from JSON files inside the mod’s JAR. The following steps modify those bundled resources. Back up the JAR before editing, restart the game after saving, and reapply your changes when updating the mod.

1. Add Your Audio Files

Convert your music to Ogg Vorbis (.ogg). Use lowercase English letters, numbers, and underscores in filenames.

Open the mod’s JAR with an archive editor and place your audio files at the following paths. This example uses the track group moonlit_forest:

assets/immersive_music/
├── music_pool.json
├── sounds.json
└── sounds/music/
    ├── moonlit_forest_a.ogg
    └── moonlit_forest_b.ogg

Each rule currently defines two variants, A and B. You can provide two tracks or point both sound events to the same audio file.

2. Register the Sound Events

Add the following members inside the top-level object in assets/immersive_music/sounds.json. Keep the existing entries and separate members with commas:

"music.moonlit_forest_a": {
  "sounds": [
    {
      "name": "immersive_music:music/moonlit_forest_a",
      "stream": true
    }
  ]
},
"music.moonlit_forest_b": {
  "sounds": [
    {
      "name": "immersive_music:music/moonlit_forest_b",
      "stream": true
    }
  ]
}

name is the audio resource location, without the .ogg extension. stream: true enables streaming playback for longer music files. If you only have one audio file, use its resource location as the name for both events.

3. Add a Music Pool Rule

Append an object to the top-level array in assets/immersive_music/music_pool.json. This example adds a track group that favors forests at night:

{
  "number": 61,
  "id": "moonlit_forest",
  "realm": "overworld",
  "layer": "surface",
  "weight": 3,
  "tagsAny": [
    "minecraft:is_forest",
    "minecraft:is_taiga"
  ],
  "tagsNone": [],
  "preferredTags": [
    "minecraft:is_taiga"
  ],
  "preferences": {
    "temperature": {
      "gte": 0.0,
      "lt": 0.9
    },
    "height": {
      "gte": 48
    },
    "brightness": {
      "lt": 8
    },
    "skyVisible": true,
    "dayTimeAny": [
      [13000, 23000]
    ]
  }
}

This group is eligible on the surface in Overworld-type realms, in forest or taiga biomes. It favors cool, dark nighttime conditions with visible sky. Unmet preferences reduce its weight rather than preventing playback.

4. Top-Level Parameters

Parameter Purpose
number Track group number. Use an integer that is unique within the pool.
id Track group identifier, matching music.<id>_a and music.<id>_b in sounds.json.
realm Required. Realm type: overworld, nether, or end.
layer Required. Environment layer: surface, underground, underwater, or any.
weight Required. Base selection weight; positive values are recommended. Higher values increase the chance of selection when other conditions are equal.
tagsAny At least one listed biome tag must match. Omit this field or use an empty array for no restriction.
tagsNone Excludes the group if any listed biome tag matches.
preferredTags Multiplies the weight by 2 if any listed tag matches. Multiple matches do not stack.
temperatureLimit Optional hard temperature range. A mismatch excludes the group. Uses the biome’s base temperature, not degrees Celsius.
heightLimit Optional hard altitude range. A mismatch excludes the group.
preferences Required object containing environment preferences. Use {} for no preferences.

Only vanilla minecraft: biome tags are accepted. Enter them without a leading #, for example minecraft:is_forest, minecraft:is_ocean, or minecraft:is_mountain. These tags can also match modded biomes that carry them.

5. Environment Preferences

Field inside preferences Meaning Weight multiplier when unmet
temperature Preferred biome base temperature range. 0.25
height Preferred range for the player’s Y coordinate. 0.35
brightness Preferred light level at eye position, using vanilla light levels from 0 to 15. 0.35
skyVisible true favors visible sky; false favors covered locations. 0.35
dayTimeAny Preferred time intervals. Matching any one interval satisfies this preference. 0.15

All preference fields are optional. When several preferences are unmet, their multipliers are applied together. Hard conditions determine eligibility, while preferences influence selection chances. For example, use heightLimit to restrict a track to certain altitudes, or preferences.height to make those altitudes more favorable.

In a range object, gte means “greater than or equal to” and lt means “less than.” You can specify either bound or both:

"heightLimit": { "gte": 48, "lt": 128 }

This requires an altitude of 48 <= Y < 128.

dayTimeAny uses time-of-day ticks from 0 to 23999. Each interval includes its start and excludes its end. 0 is morning, 6000 is noon, 12000 is around sunset, and 18000 is midnight. Split an interval that crosses the day boundary into two parts:

"dayTimeAny": [[23000, 24000], [0, 1000]]

Environment rules and weights apply to music selection inside a world. The main menu selects randomly from the pool. World selection also includes randomness and repeat suppression, so a higher weight does not guarantee that a track will always play.

Free Use and Credits

All 120 included tracks were created by the author using Suno AI and are free for players to use. The mod’s source code is released under the MIT License. Music assets are not covered by the code’s MIT license.

常见问题

The Immersive Music 支持哪些 Minecraft 版本?

The Immersive Music 支持 Minecraft Java 版 1.20.1–1.21.1,共 2 个版本,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。

The Immersive Music 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

First_sight 的其他作品

查看全部 →