BGM Fields lets you place Realm Blocks that create server-authoritative “BGM zones” (Realms).
🎥 **Watch the BGM Fields demo:**
https://www.youtube.com/shorts/meaJewowPdg
BGM Fields lets you place Realm Blocks that create server-authoritative “BGM zones” (Realms). When a player is inside a Realm, the Realm can:
This mod does not send .ogg audio files over the network. Music is referenced by Sound Event IDs; you provide the actual audio via a client resource pack (per-player) or a server-pushed resource pack.
Multiplayer: install the mod on both the server and all clients.


Only the owner can edit the Realm. OPs (permission level 2) can also edit.
A track is a Sound Event ID (namespace:path). Examples:
minecraft:music.overworldbgmfieldmod:bgm.my_songBGM Modes:
track (Sound Event ID)loop (true/false)BGM Fields auto-creates a folder resource pack called:
BGMFields_UserBGMPut your .ogg files under:
resourcepacks/BGMFields_UserBGM/assets/bgmfieldmod/sounds/bgm/
Then reload resources (in-game “Reload” button or F3+T).
You do not need to write sounds.json yourself; BGM Fields generates it automatically.
Sound ID mapping:
my_song.ogg → bgmfieldmod:bgm.my_songdungeon/boss.ogg → bgmfieldmod:bgm.dungeon.bossNotes:
BGM Fields can ask clients to apply a server resource pack on join.
Two modes:
serverResourcePack.url to a public URL to a .zip resource pack.serverResourcePack.url empty; the server hosts the .zip via a built-in HTTP server.Config keys (in the Forge common config):
serverResourcePack.enabledserverResourcePack.requiredserverResourcePack.publicHostserverResourcePack.urlserverResourcePack.portserverResourcePack.packFileserverResourcePack.sha1serverResourcePack.promptZip requirements:
pack.mcmeta and assets/ must be at the zip root (zipping the parent folder often breaks this).Each Realm has a “Vision” visual module (server-authoritative settings synced to nearby clients). You can control:
There is a client keybind:
V = toggle “Realm Vision” ON/OFFThis is used for owners to reveal the real Realm Block when the Realm is disguised:
/bgmfields_rp start/bgmfields_rp stop/bgmfields_rp send/bgmfields_rp reload
Conversation