PurpleMusic
A Paper/Folia plugin built on the Simple Voice Chat API that lets staff stream real audio (wav / mp3 / flac) to players, build queues and playlists, and create persistent music zones around any location.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
PurpleMusic
PurpleMusic
A Paper/Folia plugin built on the Simple Voice Chat API that lets staff stream real audio (wav / mp3 / flac) to players, build queues and playlists, and create persistent music zones around any location.
Features
- Downloads - play a track to one player, several, or every online player. - Downloads - per-player and global queues that auto-advance when each track ends. - Downloads - named, persistent playlists with four play modes: - `SEQUENTIAL` - play once in order - `LOOP` - replay the playlist forever - `LOOP_ONE` - repeat the same track forever - `SHUFFLE` - random pick forever - Downloads - persistent spheres at a location with a configurable radius. Each zone plays a single track or a playlist, either continuously or on a fixed interval (X seconds between plays). - Downloads - admins can pull `.wav` / `.mp3` / `.flac` files straight from a URL into `plugins/PurpleMusic/musicdata/`.
Requirements
- Paper 1.21+ - Simple Voice Chat (server + client) 2.6.0 or newer
Commands
All commands are also available under the aliases `/pmusic` and `/pm`.
| Command | Description | | --- | --- | | `/pm download <url> <filename>` | Download an audio file into `musicdata/` | | `/pm list` | List every track in `musicdata/` | | `/pm play <player> <track>` | Play a track to one player | | `/pm playall <track>` | Play a track to every online player | | `/pm stop <player|all>` | Stop playback for a player or everyone | | `/pm queue add <player|all> <track>` | Add a track to a queue | | `/pm queue clear <player|all>` | Clear a queue | | `/pm queue list <player|all>` | Show queue contents | | `/pm queue skip <player|all>` | Skip the current track | | `/pm playlist create <name>` | Create an empty playlist | | `/pm playlist delete <name>` | Delete a playlist | | `/pm playlist add <name> <track>` | Add a track to a playlist | | `/pm playlist remove <name> <track>` | Remove a track from a playlist | | `/pm playlist mode <name> <mode>` | Set the playlist mode | | `/pm playlist list` | List every playlist | | `/pm playlist show <name>` | Show one playlist's tracks | | `/pm playlist play <player> <name>` | Play a playlist to one player | | `/pm playlist playall <name>` | Play a playlist to every online player | | `/pm zone create <name> <track|playlist> <source> <radius> <continuous|interval> [seconds]` | Create a music zone at your current location | | `/pm zone delete <name>` | Delete a zone | | `/pm zone list` | List every zone | | `/pm zone mode <name> <mode>` | Set the play mode for a playlist-backed zone | | `/pm reload` | Reload config, playlists and zones |
Permissions
Each command checks a granular permission (`purplemusic.download`, `purplemusic.play`, `purplemusic.stop`, `purplemusic.queue`, `purplemusic.playlist`, `purplemusic.zone`, `purplemusic.list`, `purplemusic.reload`). The `purplemusic.*` parent grants them all. All default to `op`.
Data layout
``` plugins/PurpleMusic/ config.yml # global settings playlists.yml # named playlists (auto-managed) zones.yml # music zones (auto-managed) musicdata/ # all audio files (wav / mp3 / flac) ```
The `subdirectory-depth` config option controls how deeply you can nest files inside `musicdata/` (`none`, `single`, or `unrestricted`).
SOURCE CODE: https://github.com/batminecraft/PurpleMusic