MP3 Player and Speakers

Play your own MP3 files in-world through the Audio Mixer, on 999 channels, synced across every player on the server.

Simply Cozy can play your own MP3 files inside Minecraft. Not note blocks, not resource-pack discs — actual MP3 files you drop in a folder, streamed to every player on the server and played positionally out of speaker blocks.

The three blocks

BlockWhat it doesHearing range
Audio MixerThe controller. Browses your MP3 files and starts playback on a channel.—
SpeakerPlays whatever is on its channel.50 blocks
Mini SpeakerSame, smaller, shorter range.25 blocks

Every one of them has a channel number from 1 to 999. A mixer plays to every speaker in the world set to the same number, however far apart they are. You only hear it when you are within a speaker’s range.

Getting your music in

Music lives in a folder inside the world save. When a world or server starts for the first time, Simply Cozy creates it for you:

<world folder>/simplycozydata/simplycozymp3/

Drop .mp3 files in there. Subfolders work and the mixer will let you browse into them. If that folder does not exist, the mod falls back to simplycozydata/simplycozymp3/ next to the server jar or game directory.

You do not need to give the files to anyone else. On a server, the file is streamed to each player automatically the first time it is played, and cached in their own game directory under simplycozydata/simplycozymp3/.

Using the Audio Mixer

Right-click a mixer to open it. The GUI is a file browser:

  • The list shows folders and .mp3 files in the current directory, sorted alphabetically. Clicking a folder goes into it, clicking a file starts playing it on the channel in the box.
  • The number box at the top is the channel. Type a number from 1 to 999 and press the enter button on the right to assign it to this mixer. Changing the channel while something is playing moves the track to the new channel rather than stopping it.
  • The back button goes up one folder — or closes the screen if you are already at the top.
  • The stop button stops that channel for everyone.

Setting a speaker’s channel is the same idea with a smaller screen: right-click it, type a number, press enter.

How playback actually works

Worth knowing, because it explains most of the quirks:

  1. You click a file in the mixer. The server records the filename and a start timestamp on the mixer block, then tells every player on the server that channel N is now playing that file from that timestamp.
  2. In parallel, the server reads the file and pushes it to every player in 128 KB chunks, a couple of milliseconds apart, over at most four transfer threads. Clients reassemble the chunks and write the file to disk.
  3. Each client works out which channel it is in range of, and plays the file at the offset implied by the start timestamp — so someone who walks up halfway through joins halfway through, rather than starting the song again.
  4. Decoding happens on a background thread and is fed into OpenAL as a stream of eight rotating buffers, with a ~0.8 second cushion queued before sound starts. That cushion is why there is a short pause between clicking a track and hearing it.

Some consequences:

  • Speakers loop. A track that ends starts again from the beginning until the channel is stopped.
  • Walking out of range stops the audio; walking back in resumes it at the right place, because the offset is recalculated from the shared start time every time.
  • If a client does not have the file yet, it retries every 3 seconds until the transfer lands.
  • Breaking a mixer stops its channel for everyone immediately.
  • Everything is per-world: speakers and mixers in a world you are not in are ignored.

Commands

All of these need gamemaster permission (the old op level 2), because they broadcast to everybody.

CommandWhat it does
/simplycozy media mp3 "<filename>"Sends that file to every player and plays it immediately — non-positional, straight into everyone’s ears, no speaker needed. The .mp3 extension is optional.
/simplycozy media folder "<foldername>"Plays a folder from files players already have. Note that it currently plays only the first .mp3 in the folder, not the whole folder as a playlist.
/simplycozy media muteMutes speakers for you only. Saved to your config, so it survives a restart.
/simplycozy media unmuteUndoes the above.
/simplycozy media stopClears every mixer in the world and stops all playback for everyone.
/simplycozy media loop <true|false>Present in the command tree, but currently does nothing — speaker looping is always on.

Mute is applied to the audio source every tick rather than only at start, so muting mid-track works and tracks that start while you are muted stay silent.

Safety notes

Because MP3s travel over the network, both sides check what they are given:

  • The server refuses any filename that resolves outside the simplycozymp3 folder, so a client cannot ask it for arbitrary files on disk.
  • The client does the same check before writing, and rejects malformed chunk indices, so a hostile server cannot write outside your simplycozymp3 folder. Transfers are capped at 200,000 chunks.

What about video?

A simplycozydata/simplycozymp4/ folder is created alongside the MP3 one, and there is a Monitor block with its own screen. Neither plays video yet — the monitor currently lights up while someone has it open and shows a static “City” view. The folder is groundwork.

Last modified

This page was last edited on 2 September 2026.

Copyright

Content is available under CC BY-SA 4.0 unless otherwise noted. Not an official Minecraft product. Not approved by or associated with Mojang or Microsoft.