A vMenu Enhanced plugin for managing routing buckets, the separate worlds FiveM can split a server into. People in different worlds share the server but cannot see each other at all.
It lets staff create worlds and name them, see who is in each one, move themselves and other players between them, choose how busy each world is, and change its entity lockdown. Names and settings are saved, so a restart keeps them.
Drop the vMenu.RoutingBucketsPlugin folder into your resources and start it once, so vMenu writes
two .example config files into vMenu.Enhanced/config/plugins/. Copy each one, drop the
.example off the end, edit the copy, then add this to server.cfg:
exec @vMenu.Enhanced/config/plugins/vMenu.RoutingBucketsPlugin.permissions.cfg
exec @vMenu.Enhanced/config/plugins/vMenu.RoutingBucketsPlugin.configuration.cfg
add_filesystem_permission vMenu.RoutingBucketsPlugin write vMenu.RoutingBucketsPlugin
ensure vMenu.Enhanced
ensure vMenu.RoutingBucketsPluginThe add_filesystem_permission line is what lets the plugin save world names. Without it everything
still works, but names are forgotten on every restart.
Every permission is prefixed with vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin., and .All
grants all of them at once. The example config gives everyone the two harmless ones and keeps the
rest for admins, which you can of course change to whatever suits your server.
| Permission | Default | What it allows |
|---|---|---|
View |
everyone | Opening the menu, seeing the worlds and who is in them |
Join |
everyone | Moving yourself between worlds |
Manage |
admin | Creating, renaming and deleting worlds |
World |
admin | Changing how busy a world is, and its entity lockdown |
Move |
admin | Moving other players between worlds, and emptying a world |
add_ace group.admin "vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.All" allow
add_ace builtin.everyone "vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.Join" allow
add_ace group.admin "vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.Manage" allow
add_ace group.admin "vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.Move" allow
add_ace builtin.everyone "vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.View" allow
add_ace group.admin "vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.World" allowEvery world has four lists in its menu, one for each kind of thing the game fills the city with on its own:
- Pedestrians, the people walking around.
- People at spots, the people sitting on benches, standing at bars or smoking outside shops.
- Traffic, the cars driving around.
- Parked cars, the cars standing along the streets and in car parks.
Each one goes from 0.0 to 1.0 in steps of 0.1. Think of it as a percentage: 1.0 is what the game normally does, 0.5 is half of that, and 0.0 is none at all. So you could have a quiet world with a few people walking around (0.1), half the usual parked cars (0.5) and almost normal traffic (0.9).
A change only stops new people and cars from appearing. Whatever is already standing or driving around stays until the game cleans it up on its own, which happens once you move away from it.
If you already have a script that controls pedestrians and traffic, the plugin and that script would
fight over it. Turn off the ManageDensity setting in the configuration file and the plugin keeps its
hands off completely. The four lists disappear from the menu, and the plugin no longer changes how
many people and cars there are, so your other script is in charge.
setr vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.ManageDensity falseThe values you set earlier stay saved, so turning the setting back on later brings them back. If you turn it off while the server is running, restart the server once afterwards so FiveM forgets the settings the plugin had already given it.
By default the plugin keeps the server console quiet. If you want a line in the console every time
somebody creates, changes or deletes a world, or moves a player between worlds, turn on the Debug
setting in the configuration file:
setr vMenu.Enhanced.Plugins.vMenu_RoutingBucketsPlugin.Debug trueYou only need this if you want to change the plugin. Everyone else can grab the zip from the releases page.
The plugin is written in TypeScript, which is JavaScript with types added on top so mistakes are caught
before the code ever runs. Your server cannot run TypeScript directly, so a build step turns it into two
plain JavaScript files, one for the players' game (client.js) and one for the server (server.js).
- Install Node.js version 22 or newer. This is the program that runs the build.
- Open a terminal in this folder and run
npm ci. That downloads the tools the build needs, including vMenu's plugin library, into anode_modulesfolder. - Run
npm run build. It checks the code for mistakes first, and when everything is fine it writes the finished resource tobuild/vMenu.RoutingBucketsPlugin/. - Copy that folder into your server's resources, exactly like the zip from the releases page.
The code lives in src/. Anything in src/client runs in the game of each player, anything in
src/server runs on the server, and src/shared holds the bits both of them use.
GPL-3.0-or-later, the same as vMenu. See LICENSE.md.