Npc Bands
1 / 7






A live NPC band that really plays Rust's instruments
Not background audio. The NPCs physically perform on Rust's own instruments, note by note, and
everyone nearby hears it exactly as if real players were on stage. Ships with 615 songs and imports
your own MIDI files with a single command.
AT A GLANCE
- Songs included 615, ready to play out of the box
- Flagged as crowd-pleasers 250 - one switch plays only those
- Playable instruments 9, plus dancers and a singer
- MIDI import Built in - drop a .mid , run one command
- Other plugins required None
- Files it creates One config, one data file
THE BAND
Eleven kinds of member, each placed exactly where you are standing.
Seated - the instrument is created with them
/nb piano /nb drumkit /nb xylophone
Standing - they hold the instrument in their hands
/nb tuba /nb trumpet /nb flute /nb bass /nb guitar /nb jerrycanguitar
Atmosphere
/nb dancer - dances while the music plays, stops when it ends
/nb microphone - the singer at the mic stand
Every member is dressed automatically, has no floating name and no nameplate dot above their head, and cannot
be damaged or killed by players. Their instruments are indestructible too.
THE MUSIC
- 615 complete songs: film and TV themes, disco and funk classics, rock anthems, 90s dance hits, Christmas
- 250 flagged as crowd-pleasers - the tunes any player recognises within three notes. Flip one setting and
- The whole band shares one clock, so every instrument stays locked to the same timeline instead of drifting
- No repeats until the entire playlist has been played through.
- It starts by itself the moment you place the first instrument, and again a few seconds after every server
- It never falls silent. A corrupt track is skipped, a missing instrument is ignored, and a built-in watchdog
IMPORT YOUR OWN MIDI SONGS
1- Drop your .mid into oxide/data/NpcBands_Import/1
2- Run /nb addsong mysong.mid
That's it. The plugin reads the MIDI, converts it and adds it to the playlist - no external tools, no converters.
The reader handles what real MIDI files actually contain: running status, mid-song tempo changes, format 0
and format 1, program changes, pitch bend and meta events. Notes outside an instrument's range are
transposed by whole octaves instead of being dropped, because each Rust instrument only covers part of
the keyboard. Channel 10 goes to the drumkit, as the MIDI standard requires. Damaged files are rejected with a
clear message instead of being added as silent tracks.
COMMANDS
/nb <instrument> Place a band member where you stand
/nb list List every member with its id and position
/nb remove <id> Remove one member
/nb clear Remove the whole band
/nb reload Rebuild the band from the data file
/nb play · stop · next Control the jukebox
/nb songs List the songs
/nb addsong <file.mid> Import a MIDI
/nb help Show all commands
*Every command also works from the F1 console and RCON using npcbands instead of /nb .
Access is controlled by the permission npcbands.admin ; server admins have it automatically.*
CONFIGURATION
- AutoPlay true The band starts playing on its own when the server loads
- Shuffle true Random order. Set false to play the list in order
- FamousOnly false Play only the 250 well-known songs
- GapBetweenSongsSeconds 4 Silence between one song and the next
- DancersEnabled true Dancers dance while a song plays
- DefaultFacingYaw 270 Which way a placed member faces (0 - 359)
- DebugLogging false Detailed console output, off for a quiet log
Out-of-range or invalid values are corrected automatically instead of breaking the plugin.
DATA
One file: oxide/data/NpcBands.json , holding everything in one place:
- Members - the band you placed. Survives restarts and wipes.
- Outfits - what each member wears. Item shortname plus skin id, editable per instrument, or * for everyone else.
- Bindings - which Rust note each MIDI note maps to, per instrument.
- SongIndex - the song list, including the Famous flag you can edit.
Songs themselves live in oxide/data/NpcBands_Songs/ , one file each, so only the song being played is ever loaded into memory.
REQUIREMENTS
- A Rust server running Oxide/uMod
- No other plugins. No frameworks, no dependencies.
- Works on any map, procedural or custom.
WHAT YOU GET
- The plugin, ready to drop in
- 615 songs, 250 of them flagged as crowd-pleasers
- Config and data files that document themselves
- A full README with installation and usage