Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
Music
Music is a server-side Fabric mod that streams URL music through Simple Voice Chat. It is built for shared server music with queues, saved playlists, YouTube playlist import, player targeting, personal opt-out, and YouTube OAuth support through Lavaplayer/youtube-source.
Features
- Streams music through Simple Voice Chat static audio channels.
- Supports YouTube, YouTube Music, YouTube playlist links, and other Lavaplayer-supported remote sources.
- Expands pasted YouTube playlist links into individual songs.
- Shows title, creator, requester, duration, queue position, and playback diagnostics.
- Cleans YouTube topic-channel creator names, so
Artist - Topicdisplays asArtist. - One shared server-wide music stream.
- Global queue with skip, repeat, and shuffle.
- Persistent saved playlists.
- Forward/backward seeking by seconds.
- Player targeting and exclusion controls.
- Player self-service
/music leaveand/music join. - Simple Voice Chat "Music" volume category for personal client volume.
- Global server volume control.
Requirements
- Fabric Loader.
- Simple Voice Chat installed on the server.
- Simple Voice Chat installed on clients that want to hear the stream.
- A Minecraft version supported by the mod file you install.
This mod controls music on the server, but players only hear it through their Simple Voice Chat connection.
Installation
- Install Fabric Loader on the server.
- Install Simple Voice Chat on the server.
- Install this mod in the server
modsfolder. - Players who want to hear the stream must install Simple Voice Chat on their clients.
- Start the server and run
/music help.
Quick Start
/music now
/music play https://www.youtube.com/watch?v=VIDEO_ID 10
/music queue add https://music.youtube.com/watch?v=NEXT_VIDEO_ID
/music queue add https://www.youtube.com/playlist?list=PLAYLIST_ID
/music queue list
If YouTube asks for login or blocks playback, complete the OAuth device login shown in the server log.
How It Works
- A player runs
/music play, queues a URL, or starts a saved playlist. - Lavaplayer loads the URL.
- YouTube links are handled by
youtube-source. - The mod sends encoded audio frames into a Simple Voice Chat static audio channel.
- Selected listeners hear the same stream.
There is one active global stream per server. Starting a new track with /music play replaces current playback and clears the runtime queue.
YouTube OAuth
YouTube may block automated playback clients. This mod supports YouTube OAuth through youtube-source.
Config file:
config/music.json
Important fields:
{
"youtubeOAuthEnabled": true,
"youtubeOAuthRefreshToken": "",
"youtubeOAuthSkipInitialization": false
}
First login flow:
- Start the server.
- Run
/music play <youtube-url>. - Check the server log for the Google device login code.
- Complete the login in a browser.
- The refresh token is saved to
config/music.json.
The YouTube login is global for the server, not per player. Keep music.json private because it can contain an OAuth refresh token. Using a secondary YouTube account is recommended.
Commands
Run:
/music help
/music help queue
/music help playlist
/music help target
/music help volume
Everyone
/music help
/music now
/music queue list
/music leave
/music join
/music leaveopts the player out of the music stream./music joinremoves the personal opt-out.- Personal volume is controlled with the Simple Voice Chat client "Music" slider.
Playback
All players:
/music play <url>
/music play <url> <volume>
/music stop
/music pause
/music resume
/music skip
/music forward <seconds>
/music backward <seconds>
/music volume <1-100>
/music repeat off
/music repeat one
/music repeat queue
/music shuffle on
/music shuffle off
Behavior:
/music play <url>starts immediately and clears the runtime queue./music play <youtube-playlist-url>starts the first playlist track and queues the rest./music play <url> <volume>starts playback and sets global volume from1to100./music forward <seconds>seeks ahead in the current track./music backward <seconds>seeks back in the current track./music repeat onerepeats the current track./music repeat queueloops through the queue./music shuffle onchooses queued tracks randomly.
Queue
All players:
/music queue add <url>
/music queue remove <index>
/music queue clear
/music skip
Everyone can view:
/music queue list
Queue behavior:
- The runtime queue is not saved after server restart.
/music queue add <url>appends a track./music queue add <youtube-playlist-url>expands the playlist and appends each song.- Queue metadata loads in the background, so a new item can briefly show as
title loading. - YouTube creator names ending in
- Topicare displayed without that suffix. - If metadata fails, the URL remains queued and playback can still try it.
Example output:
[Music] Queue:
1. Song Title - Creator Name | 3:22 | requested by PlayerName | added 16:21:05
2. title loading: https://www.youtube.com/watch?v=... | requested by PlayerName
Saved Playlists
All players:
/music playlist list
/music playlist create <name>
/music playlist delete <name>
/music playlist show <name>
/music playlist add <name> <url>
/music playlist remove <name> <index>
/music playlist play <name>
/music playlist queue <name>
Playlist behavior:
- Playlists are saved in
config/music-playlists.json. - Playlist names are single words.
/music playlist add <name> <url>adds one track./music playlist add <name> <youtube-playlist-url>imports every song from the YouTube playlist./music playlist play <name>replaces current playback and starts the playlist./music playlist queue <name>appends the saved playlist after the current queue.
Example:
/music playlist create lobby
/music playlist add lobby https://www.youtube.com/watch?v=SONG_1
/music playlist add lobby https://www.youtube.com/playlist?list=PLAYLIST_ID
/music playlist play lobby
Targeting
All players:
/music target all
/music target only <players>
/music target add <players>
/music target remove <players>
/music target show
/music exclude add <players>
/music exclude remove <players>
/music exclude clear
Targeting order:
- Connected Simple Voice Chat clients.
- Include filter if set.
- Exclude filter.
- Player personal opt-out from
/music leave.
Personal opt-out always wins. /music target all does not force opted-out players to listen.
Examples:
/music target all
/music target only Steve
/music target add Alex
/music exclude add Steve
/music exclude clear
Config Files
Main config:
config/music.json
Stores YouTube OAuth settings, repeat/shuffle settings, target filters, exclusions, and player opt-outs.
Playlist config:
config/music-playlists.json
Stores saved playlist names and track entries.
Example playlist shape:
{
"playlists": {
"lobby": [
{
"url": "https://www.youtube.com/watch?v=SONG_1",
"title": "Song Title",
"creator": "Creator Name",
"requestedByName": "server",
"durationMillis": 202000
}
]
}
}
Use commands instead of editing playlist files while the server is running.
URL Support
Good candidates:
- Normal YouTube watch links.
- YouTube Music watch links.
- YouTube and YouTube Music playlist links.
- Direct audio file URLs supported by Lavaplayer.
- Some direct video URLs with extractable audio.
Less reliable:
- Spotify page links.
- Private or age-restricted videos.
- Region-blocked videos.
- YouTube links blocked by bot detection.
Unsupported URLs should fail with a chat error instead of crashing the server.
Command Access
All players can use every /music command, including commands that change server playback state:
- Play, stop, pause, resume, skip, forward, backward.
- Queue add/remove/clear.
- Playlist create/delete/add/remove/play/queue.
- Target and exclude filters.
- Repeat, shuffle, global volume.
Self-service and view commands:
/music help/music now/music queue list/music leave/music join
Troubleshooting
Music Says Playing, But Nobody Hears It
Run:
/music now
/music target show
Check:
- Simple Voice Chat is connected.
- The voice target/listener count is not
0. - The player did not run
/music leave. - The player is not excluded by
/music exclude. - The client Simple Voice Chat "Music" slider is not at
0%. - The global volume is not too low.
YouTube Says Sign In Or Bot Check
Enable OAuth in config/music.json, restart, then run:
/music play <youtube-url>
Complete the device login shown in the server log. After that, youtubeOAuthRefreshToken should be saved.
Queue Names Show As Loading Or Unknown
Metadata is loaded asynchronously. Wait a few seconds and run:
/music queue list
If metadata still shows unknown, Lavaplayer could not resolve metadata for that URL. The mod will still try to play the URL when its turn starts.
A Player Does Not Hear Music After Target All
Check if the player opted out:
/music target show
The player can rejoin with:
/music join
Personal opt-out has priority over target filters.
Notes
- This mod does not download songs to disk.
- YouTube playback can still fail if YouTube blocks a client or changes player behavior.
- YouTube topic-channel authors are cleaned for display; for example,
Artist - TopicbecomesArtist. - OAuth improves YouTube reliability but should use a secondary YouTube account.
- Server-side per-player volume is not implemented; use the Simple Voice Chat client "Music" slider for personal volume.


